ey_enzyme 0.9.45.ruby19.1 → 0.9.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,8 +6,6 @@ require "optparse"
6
6
 
7
7
  require 'json'
8
8
  require 'restclient'
9
- require 'chef'
10
- require 'chef/client'
11
9
 
12
10
  module EY; end
13
11
 
@@ -38,6 +38,7 @@ module EY::Enzyme
38
38
 
39
39
  #upload, as in, upload the log file output of the chef run
40
40
  def upload(type, content)
41
+ content = content.force_encoding('UTF-8') if content.respond_to?(:force_encoding)
41
42
  retry_api("store", :type => type, :content => content)
42
43
  rescue => e
43
44
  #blanket rescue feels dangerous, but we're at least logging it
@@ -104,14 +104,14 @@ module EY::Enzyme
104
104
  def deploy
105
105
  @logger.info "Starting configuration run"
106
106
 
107
- update_dna
107
+ json = update_dna
108
108
 
109
109
  case @opts[:type]
110
110
  when :main
111
111
  run_main
112
- run_custom
112
+ run_custom(json)
113
113
  when :custom
114
- run_custom
114
+ run_custom(json)
115
115
  else
116
116
  raise "Unknown type: #{@opts[:type].inspect}"
117
117
  end
@@ -124,20 +124,20 @@ module EY::Enzyme
124
124
  main_cookbooks.run
125
125
  end
126
126
 
127
- def run_custom
127
+ def run_custom(json)
128
128
  report 'running custom recipes if they exist'
129
- custom_cookbooks.run
129
+ url = @opts.has_key?(:custom_recipes_url) ? @opts[:custom_recipes_url] : @api.custom_recipe_url
130
+ update_custom_dna(json) if url
131
+
132
+ @custom_cookbooks ||= CookbookSet.new(@opts, "custom", CUSTOM_RECIPE_PATH, url, @api)
133
+
134
+ @custom_cookbooks.run
130
135
  end
131
136
 
132
137
  def main_cookbooks
133
138
  @main_cookbooks ||= CookbookSet.new(@opts, "main", MAIN_RECIPE_PATH, @opts[:recipes_url], @api)
134
139
  end
135
140
 
136
- def custom_cookbooks
137
- url = @opts.has_key?(:custom_recipes_url) ? @opts[:custom_recipes_url] : @api.custom_recipe_url
138
- @custom_cookbooks ||= CookbookSet.new(@opts, "custom", CUSTOM_RECIPE_PATH, url, @api)
139
- end
140
-
141
141
  def update_dna
142
142
  @logger.debug "Getting instance's DNA"
143
143
 
@@ -145,11 +145,28 @@ module EY::Enzyme
145
145
  raise DNAError, "failed to fetch DNA"
146
146
  end
147
147
 
148
- json["quick"] = true if @opts[:quick]
149
-
150
148
  @logger.debug "Writing json dna to file system"
149
+ update_main_dna(json)
150
+ json
151
+ end
152
+
153
+ def update_main_dna(json)
154
+ main_json = json.dup
155
+ main_json['run_list'] = 'recipe[ey-base]'
156
+ main_json["quick"] = true if @opts[:quick]
157
+ update_chef_dna("/etc/chef/dna.json", main_json)
158
+ end
159
+
160
+ def update_custom_dna(json)
161
+ custom_json = json.dup
162
+ custom_json['run_list'] = 'recipe[main]'
163
+ # Make sure the path exist, it's soooo wrong to write this file before the cookbooks have been downloaded nor the config written
164
+ FileUtils.mkdir_p('/etc/chef-custom/') unless File.exists?('/etc/chef-custom/')
165
+ update_chef_dna("/etc/chef-custom/dna.json", custom_json)
166
+ end
151
167
 
152
- File.open("/etc/chef/dna.json", 'w') do |f|
168
+ def update_chef_dna(file, json)
169
+ File.open(file, 'w') do |f|
153
170
  f.puts JSON.pretty_generate(json)
154
171
  f.chmod(0600)
155
172
  end
@@ -49,7 +49,7 @@ module EY::Enzyme
49
49
  end
50
50
 
51
51
  def execute
52
- command = "#{@opts[:chef_bin]} -j /etc/chef/dna.json -c #{chef_config} -r \"#{@recipes_url}\" > #{@chef_log} 2>&1"
52
+ command = "#{@opts[:chef_bin]} -j #{chef_dna} -c #{chef_config} -r \"#{@recipes_url}\" > #{@chef_log} 2>&1"
53
53
  @logger.debug "Running: #{command}"
54
54
  if system(command)
55
55
  @logger.info "Running telinit"
@@ -90,6 +90,10 @@ module EY::Enzyme
90
90
  main? ? "/etc/chef/solo.rb" : "/etc/chef-custom/solo.rb"
91
91
  end
92
92
 
93
+ def chef_dna
94
+ main? ? '/etc/chef/dna.json' : '/etc/chef-custom/dna.json'
95
+ end
96
+
93
97
  def chef_error_from_log
94
98
  unless File.exist?(@chef_log)
95
99
  return "(log doesn't exist)"
@@ -1,5 +1,5 @@
1
1
  module EY
2
2
  module Enzyme
3
- VERSION = "0.9.45.ruby19.1"
3
+ VERSION = "0.9.48"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,16 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ey_enzyme
3
3
  version: !ruby/object:Gem::Version
4
- hash: -966684450
5
- prerelease: 7
4
+ hash: 91
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 9
9
- - 45
10
- - ruby
11
- - 19
12
- - 1
13
- version: 0.9.45.ruby19.1
9
+ - 48
10
+ version: 0.9.48
14
11
  platform: ruby
15
12
  authors:
16
13
  - Engine Yard Inc.
@@ -50,44 +47,10 @@ dependencies:
50
47
  version: 1.6.1
51
48
  type: :runtime
52
49
  version_requirements: *id002
53
- - !ruby/object:Gem::Dependency
54
- name: chef
55
- prerelease: false
56
- requirement: &id003 !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- hash: -3806225206
62
- segments:
63
- - 0
64
- - 10
65
- - 8
66
- - patch
67
- - 3
68
- version: 0.10.8.patch3
69
- type: :runtime
70
- version_requirements: *id003
71
- - !ruby/object:Gem::Dependency
72
- name: chef-deploy
73
- prerelease: false
74
- requirement: &id004 !ruby/object:Gem::Requirement
75
- none: false
76
- requirements:
77
- - - "="
78
- - !ruby/object:Gem::Version
79
- hash: 29
80
- segments:
81
- - 0
82
- - 2
83
- - 5
84
- version: 0.2.5
85
- type: :runtime
86
- version_requirements: *id004
87
50
  - !ruby/object:Gem::Dependency
88
51
  name: rake
89
52
  prerelease: false
90
- requirement: &id005 !ruby/object:Gem::Requirement
53
+ requirement: &id003 !ruby/object:Gem::Requirement
91
54
  none: false
92
55
  requirements:
93
56
  - - ">="
@@ -97,11 +60,11 @@ dependencies:
97
60
  - 0
98
61
  version: "0"
99
62
  type: :development
100
- version_requirements: *id005
63
+ version_requirements: *id003
101
64
  - !ruby/object:Gem::Dependency
102
65
  name: rspec
103
66
  prerelease: false
104
- requirement: &id006 !ruby/object:Gem::Requirement
67
+ requirement: &id004 !ruby/object:Gem::Requirement
105
68
  none: false
106
69
  requirements:
107
70
  - - ~>
@@ -112,11 +75,11 @@ dependencies:
112
75
  - 2
113
76
  version: "1.2"
114
77
  type: :development
115
- version_requirements: *id006
78
+ version_requirements: *id004
116
79
  - !ruby/object:Gem::Dependency
117
80
  name: fakeweb
118
81
  prerelease: false
119
- requirement: &id007 !ruby/object:Gem::Requirement
82
+ requirement: &id005 !ruby/object:Gem::Requirement
120
83
  none: false
121
84
  requirements:
122
85
  - - ">="
@@ -126,11 +89,11 @@ dependencies:
126
89
  - 0
127
90
  version: "0"
128
91
  type: :development
129
- version_requirements: *id007
92
+ version_requirements: *id005
130
93
  - !ruby/object:Gem::Dependency
131
94
  name: fakeweb-matcher
132
95
  prerelease: false
133
- requirement: &id008 !ruby/object:Gem::Requirement
96
+ requirement: &id006 !ruby/object:Gem::Requirement
134
97
  none: false
135
98
  requirements:
136
99
  - - ">="
@@ -140,7 +103,7 @@ dependencies:
140
103
  - 0
141
104
  version: "0"
142
105
  type: :development
143
- version_requirements: *id008
106
+ version_requirements: *id006
144
107
  description: Gem for kicking off chef recipes
145
108
  email: ninja@engineyard.com
146
109
  executables:
@@ -180,14 +143,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
180
143
  required_rubygems_version: !ruby/object:Gem::Requirement
181
144
  none: false
182
145
  requirements:
183
- - - ">"
146
+ - - ">="
184
147
  - !ruby/object:Gem::Version
185
- hash: 25
148
+ hash: 3
186
149
  segments:
187
- - 1
188
- - 3
189
- - 1
190
- version: 1.3.1
150
+ - 0
151
+ version: "0"
191
152
  requirements: []
192
153
 
193
154
  rubyforge_project:
@@ -197,4 +158,3 @@ specification_version: 3
197
158
  summary: Gem for kicking off chef recipes
198
159
  test_files: []
199
160
 
200
- has_rdoc: