chef-metal 0.11.beta.2 → 0.11.beta.3
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/bin/metal +126 -98
- data/lib/chef/provider/machine.rb +3 -0
- data/lib/chef/provider/machine_batch.rb +5 -0
- data/lib/chef_metal.rb +7 -3
- data/lib/chef_metal/driver.rb +5 -1
- data/lib/chef_metal/machine.rb +4 -0
- data/lib/chef_metal/machine/basic_machine.rb +4 -3
- data/lib/chef_metal/version.rb +1 -1
- metadata +28 -28
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1ddce3b9695b8227fa35fc0eef02506df0c8107d
|
|
4
|
+
data.tar.gz: 3d1fd09662aa1d39d4badd40d00e28792b6a2263
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e518ac22332cabb69df9bb5a77beedfbdbc4ac37e5a8a50d3f06272bf346b9b1b343891c5f593e8f61447ce1ea8569a039438c940696935e3dfcb569fb783de9
|
|
7
|
+
data.tar.gz: d4b8d64ef682e3bab426f273030ee01e2f8a176b5079263a51733180d10a5168979c57b0805491f281d27bc0c9deff691d1953c5b9d0ae2aa0d5151fa110719b
|
data/CHANGELOG.md
CHANGED
data/bin/metal
CHANGED
|
@@ -10,6 +10,7 @@ require 'chef/run_context'
|
|
|
10
10
|
require 'chef/server_api'
|
|
11
11
|
require 'chef_metal/action_handler'
|
|
12
12
|
require 'chef_metal/version'
|
|
13
|
+
require 'chef_metal/chef_machine_spec'
|
|
13
14
|
|
|
14
15
|
class ChefMetal::Application < Chef::Application
|
|
15
16
|
|
|
@@ -92,20 +93,6 @@ class ChefMetal::Application < Chef::Application
|
|
|
92
93
|
Chef::Config.chef_repo_path = Chef::Config.find_chef_repo_path(Dir.pwd)
|
|
93
94
|
end
|
|
94
95
|
Chef::Config.chef_zero.port = config[:chef_zero_port] if config[:chef_zero_port]
|
|
95
|
-
|
|
96
|
-
if Chef::Config[:daemonize]
|
|
97
|
-
Chef::Config[:interval] ||= 1800
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
if Chef::Config[:once]
|
|
101
|
-
Chef::Config[:interval] = nil
|
|
102
|
-
Chef::Config[:splay] = nil
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
if Chef::Config[:json_attribs]
|
|
106
|
-
config_fetcher = Chef::ConfigFetcher.new(Chef::Config[:json_attribs])
|
|
107
|
-
@chef_client_json = config_fetcher.fetch_json
|
|
108
|
-
end
|
|
109
96
|
end
|
|
110
97
|
|
|
111
98
|
def setup_application
|
|
@@ -120,89 +107,107 @@ class ChefMetal::Application < Chef::Application
|
|
|
120
107
|
end
|
|
121
108
|
|
|
122
109
|
def run_application
|
|
123
|
-
Chef::Application.setup_server_connectivity
|
|
124
|
-
|
|
125
|
-
command = cli_arguments.shift
|
|
126
110
|
exit_code = 0
|
|
127
|
-
case command
|
|
128
|
-
when 'execute'
|
|
129
|
-
each_machine(cli_arguments.shift) do |machine, provisioner|
|
|
130
|
-
result = machine.execute(action_handler, cli_arguments.join(' '), :read_only => config[:read_only], :stream => config[:stream], :timeout => config[:timeout].to_f)
|
|
131
|
-
puts result.stdout if result.stdout != '' && !config[:stream] && Chef::Config.log_level != :debug
|
|
132
|
-
STDERR.puts result.stderr if result.stderr != '' && !config[:stream] && Chef::Config.log_level != :debug
|
|
133
|
-
exit_code = result.exitstatus if result.exitstatus != 0
|
|
134
|
-
end
|
|
135
|
-
when 'converge'
|
|
136
|
-
each_machine(cli_arguments.shift) do |machine, provisioner|
|
|
137
|
-
machine.converge(action_handler)
|
|
138
|
-
end
|
|
139
|
-
when 'delete'
|
|
140
|
-
each_machine(cli_arguments.shift) do |machine, provisioner|
|
|
141
|
-
provisioner.delete_machine(action_handler, machine.machine_spec)
|
|
142
|
-
end
|
|
143
|
-
when 'update'
|
|
144
|
-
each_machine(cli_arguments.shift) do |machine, provisioner|
|
|
145
|
-
machine = provisioner.acquire_machine(action_handler, machine.machine_spec)
|
|
146
|
-
# TODO find out what files were uploaded so we can do it again
|
|
147
|
-
machine.setup_convergence(action_handler)
|
|
148
|
-
machine.converge(action_handler)
|
|
149
|
-
end
|
|
150
|
-
when 'stop'
|
|
151
|
-
each_machine(cli_arguments.shift) do |machine, provisioner|
|
|
152
|
-
provisioner.stop_machine(action_handler, machine.machine_spec)
|
|
153
|
-
end
|
|
154
|
-
when 'cat'
|
|
155
|
-
each_machine(cli_arguments.shift) do |machine, provisioner|
|
|
156
|
-
cli_arguments.each do |remote_path|
|
|
157
|
-
puts machine.read_file(remote_path)
|
|
158
|
-
end
|
|
159
|
-
end
|
|
160
|
-
when 'cp'
|
|
161
|
-
machines = {}
|
|
162
|
-
to = cli_arguments.pop
|
|
163
|
-
if to =~ /^([^\/:]+):(.+)$/
|
|
164
|
-
to_server = $1
|
|
165
|
-
machines[to_server] ||= ChefMetal.connect_to_machine(to_server)
|
|
166
|
-
to_path = $2
|
|
167
|
-
to_is_directory = machines[to_server].is_directory?(to_path)
|
|
168
|
-
else
|
|
169
|
-
to_server = nil
|
|
170
|
-
to_path = File.absolute_path(to)
|
|
171
|
-
end
|
|
172
111
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
112
|
+
Cheffish.honor_local_mode do
|
|
113
|
+
command = cli_arguments.shift
|
|
114
|
+
case command
|
|
115
|
+
when 'execute'
|
|
116
|
+
connect_to_machines(cli_arguments.shift) do |machine|
|
|
117
|
+
machine.execute(action_handler, cli_arguments.join(' '), :read_only => config[:read_only], :stream => config[:stream], :timeout => config[:timeout].to_f)
|
|
118
|
+
puts result.stdout if result.stdout != '' && !config[:stream] && Chef::Config.log_level != :debug
|
|
119
|
+
STDERR.puts result.stderr if result.stderr != '' && !config[:stream] && Chef::Config.log_level != :debug
|
|
120
|
+
exit_code = result.exitstatus if result.exitstatus != 0
|
|
121
|
+
end
|
|
122
|
+
when 'destroy'
|
|
123
|
+
each_current_machine(cli_arguments.shift) do |driver, specs_and_options|
|
|
124
|
+
driver.destroy_machines(action_handler, specs_and_options, parallelizer)
|
|
125
|
+
end
|
|
126
|
+
when 'allocate'
|
|
127
|
+
each_new_machine(cli_arguments.shift) do |driver, specs_and_options|
|
|
128
|
+
driver.allocate_machines(action_handler, specs_and_options, parallelizer)
|
|
129
|
+
end
|
|
130
|
+
when 'ready'
|
|
131
|
+
each_new_machine(cli_arguments.shift) do |driver, specs_and_options|
|
|
132
|
+
driver.allocate_machines(action_handler, specs_and_options, parallelizer)
|
|
133
|
+
driver.ready_machines(action_handler, specs_and_options, parallelizer)
|
|
134
|
+
end
|
|
135
|
+
when 'setup'
|
|
136
|
+
each_new_machine(cli_arguments.shift) do |driver, specs_and_options|
|
|
137
|
+
driver.allocate_machines(action_handler, specs_and_options, parallelizer)
|
|
138
|
+
driver.ready_machines(action_handler, specs_and_options, parallelizer) do |machine|
|
|
139
|
+
machine.setup_convergence(action_handler)
|
|
179
140
|
end
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
141
|
+
end
|
|
142
|
+
when 'converge'
|
|
143
|
+
each_new_machine(cli_arguments.shift) do |driver, specs_and_options|
|
|
144
|
+
driver.allocate_machines(action_handler, specs_and_options, parallelizer)
|
|
145
|
+
driver.ready_machines(action_handler, specs_and_options, parallelizer) do |machine|
|
|
146
|
+
# TODO upload files? Maybe they should be in machine_options?
|
|
147
|
+
machine.setup_convergence(action_handler)
|
|
148
|
+
machine.converge(action_handler)
|
|
186
149
|
end
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
150
|
+
end
|
|
151
|
+
when 'reconverge'
|
|
152
|
+
connect_to_machines(cli_arguments.shift) do |machine|
|
|
153
|
+
machine.converge(action_handler)
|
|
154
|
+
end
|
|
155
|
+
when 'stop'
|
|
156
|
+
each_current_machine(cli_arguments.shift) do |driver, specs_and_options|
|
|
157
|
+
driver.stop_machines(action_handler, specs_and_options, parallelizer)
|
|
158
|
+
end
|
|
159
|
+
when 'cat'
|
|
160
|
+
connect_to_machines(cli_arguments.shift) do |machine|
|
|
161
|
+
cli_arguments.each do |remote_path|
|
|
162
|
+
puts machine.read_file(remote_path)
|
|
192
163
|
end
|
|
164
|
+
end
|
|
165
|
+
when 'cp'
|
|
166
|
+
machines = {}
|
|
167
|
+
to = cli_arguments.pop
|
|
168
|
+
if to =~ /^([^\/:]+):(.+)$/
|
|
169
|
+
to_server = $1
|
|
170
|
+
machines[to_server] ||= ChefMetal.connect_to_machine(to_server)
|
|
171
|
+
to_path = $2
|
|
172
|
+
to_is_directory = machines[to_server].is_directory?(to_path)
|
|
173
|
+
else
|
|
174
|
+
to_server = nil
|
|
175
|
+
to_path = File.absolute_path(to)
|
|
176
|
+
end
|
|
193
177
|
|
|
194
|
-
|
|
195
|
-
|
|
178
|
+
cli_arguments.each do |from|
|
|
179
|
+
if from =~ /^([^\/:]+):(.+)$/
|
|
180
|
+
from_server = $1
|
|
181
|
+
from_path = $2
|
|
182
|
+
if to_server
|
|
183
|
+
raise "Cannot copy from one server to another, or intraserver (from=#{from}, to=#{to})"
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
machines[from_server] ||= connect_to_machine(from_server)
|
|
187
|
+
if File.directory?(to_path)
|
|
188
|
+
machines[from_server].download_file(action_handler, from_path, "#{to_path}/#{File.basename(from_path)}")
|
|
189
|
+
else
|
|
190
|
+
machines[from_server].download_file(action_handler, from_path, to_path)
|
|
191
|
+
end
|
|
196
192
|
else
|
|
197
|
-
|
|
193
|
+
from_server = nil
|
|
194
|
+
from_path = File.absolute_path(from)
|
|
195
|
+
if !to_server
|
|
196
|
+
raise "Cannot copy two local files. One of the arguments must be MACHINE:PATH. (from=#{from}, to=#{to})"
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
if to_is_directory
|
|
200
|
+
machines[to_server].upload_file(action_handler, from_path, "#{to_path}/#{File.basename(from_path)}")
|
|
201
|
+
else
|
|
202
|
+
machines[to_server].upload_file(action_handler, from_path, to_path)
|
|
203
|
+
end
|
|
198
204
|
end
|
|
199
205
|
end
|
|
206
|
+
else
|
|
207
|
+
Chef::Log.error("Command '#{command}' unrecognized")
|
|
200
208
|
end
|
|
201
|
-
else
|
|
202
|
-
Chef::Log.error("Command '#{command}' unrecognized")
|
|
203
209
|
end
|
|
204
210
|
|
|
205
|
-
Chef::Application.destroy_server_connectivity
|
|
206
211
|
exit(exit_code) if exit_code != 0
|
|
207
212
|
end
|
|
208
213
|
|
|
@@ -212,24 +217,47 @@ class ChefMetal::Application < Chef::Application
|
|
|
212
217
|
@rest ||= Chef::ServerAPI.new()
|
|
213
218
|
end
|
|
214
219
|
|
|
215
|
-
def
|
|
216
|
-
spec.split(',').
|
|
217
|
-
|
|
220
|
+
def machine_specs(*specs)
|
|
221
|
+
names = specs.collect_concat { |spec| spec.split(',') }.uniq
|
|
222
|
+
parallelizer.parallelize(names) { |name| ChefMetal::ChefMachineSpec.get(name) }.to_a
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
def each_new_machine(spec)
|
|
226
|
+
driver = ChefMetal.default_driver
|
|
227
|
+
specs_and_options = {}
|
|
228
|
+
machine_specs(spec).each do |machine_spec|
|
|
229
|
+
specs_and_options[machine_spec] = driver.config[:machine_options]
|
|
218
230
|
end
|
|
231
|
+
[ [ driver, specs_and_options ] ]
|
|
219
232
|
end
|
|
220
233
|
|
|
221
|
-
def
|
|
222
|
-
|
|
234
|
+
def each_current_machine(spec)
|
|
235
|
+
grouped = machine_specs(spec).group_by { |machine_spec| machine_spec.driver_url }
|
|
236
|
+
parallelizer.parallelize(grouped) do |driver_url, machine_specs|
|
|
237
|
+
if driver_url
|
|
238
|
+
driver = ChefMetal.driver_for_url(driver_url)
|
|
239
|
+
specs_and_options = {}
|
|
240
|
+
machine_specs(spec).each do |machine_spec|
|
|
241
|
+
specs_and_options[machine_spec] = driver.config[:machine_options]
|
|
242
|
+
end
|
|
243
|
+
yield driver, specs_and_options
|
|
244
|
+
end
|
|
245
|
+
end.to_a
|
|
223
246
|
end
|
|
224
247
|
|
|
225
|
-
def
|
|
226
|
-
{
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
248
|
+
def connect_to_machines(spec)
|
|
249
|
+
grouped = machine_specs(spec).group_by { |machine_spec| machine_spec.driver_url }
|
|
250
|
+
grouped.collect_concat do |driver_url, machine_specs|
|
|
251
|
+
machine_specs.map { |machine_spec| ChefMetal.connect_to_machine(machine_spec) }
|
|
252
|
+
end
|
|
253
|
+
end
|
|
254
|
+
|
|
255
|
+
def parallelizer
|
|
256
|
+
Chef::ChefFS::Parallelizer
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
def action_handler
|
|
260
|
+
@action_handler ||= ActionHandler.new
|
|
233
261
|
end
|
|
234
262
|
|
|
235
263
|
class ActionHandler < ChefMetal::ActionHandler
|
|
@@ -24,12 +24,14 @@ class Chef::Provider::Machine < Chef::Provider::LWRPBase
|
|
|
24
24
|
action :ready do
|
|
25
25
|
action_allocate
|
|
26
26
|
machine = current_driver.ready_machine(action_handler, machine_spec, machine_options)
|
|
27
|
+
machine_spec.save(action_handler)
|
|
27
28
|
end
|
|
28
29
|
|
|
29
30
|
action :setup do
|
|
30
31
|
machine = action_ready
|
|
31
32
|
begin
|
|
32
33
|
machine.setup_convergence(action_handler)
|
|
34
|
+
machine_spec.save(action_handler)
|
|
33
35
|
upload_files(machine)
|
|
34
36
|
ensure
|
|
35
37
|
machine.disconnect
|
|
@@ -40,6 +42,7 @@ class Chef::Provider::Machine < Chef::Provider::LWRPBase
|
|
|
40
42
|
machine = action_ready
|
|
41
43
|
begin
|
|
42
44
|
machine.setup_convergence(action_handler)
|
|
45
|
+
machine_spec.save(action_handler)
|
|
43
46
|
upload_files(machine)
|
|
44
47
|
# If we were asked to converge, or anything changed, or if a converge has never succeeded, converge.
|
|
45
48
|
if new_resource.converge || (new_resource.converge.nil? && resource_updated?) ||
|
|
@@ -36,6 +36,7 @@ class Chef::Provider::MachineBatch < Chef::Provider::LWRPBase
|
|
|
36
36
|
with_ready_machines do |m|
|
|
37
37
|
prefixed_handler = ChefMetal::AddPrefixActionHandler.new(action_handler, "[#{m[:resource].name}] ")
|
|
38
38
|
machine[:machine].setup_convergence(prefixed_handler)
|
|
39
|
+
m[:spec].save(action_handler)
|
|
39
40
|
Chef::Provider::Machine.upload_files(prefixed_handler, m[:machine], m[:resource].files)
|
|
40
41
|
end
|
|
41
42
|
end
|
|
@@ -44,8 +45,10 @@ class Chef::Provider::MachineBatch < Chef::Provider::LWRPBase
|
|
|
44
45
|
with_ready_machines do |m|
|
|
45
46
|
prefixed_handler = ChefMetal::AddPrefixActionHandler.new(action_handler, "[#{m[:resource].name}] ")
|
|
46
47
|
m[:machine].setup_convergence(prefixed_handler)
|
|
48
|
+
m[:spec].save(action_handler)
|
|
47
49
|
Chef::Provider::Machine.upload_files(prefixed_handler, m[:machine], m[:resource].files)
|
|
48
50
|
m[:machine].converge(prefixed_handler)
|
|
51
|
+
m[:spec].save(action_handler)
|
|
49
52
|
end
|
|
50
53
|
end
|
|
51
54
|
|
|
@@ -66,6 +69,8 @@ class Chef::Provider::MachineBatch < Chef::Provider::LWRPBase
|
|
|
66
69
|
by_id = @machines.inject({}) { |hash,m| hash[m[:spec].id] = m; hash }
|
|
67
70
|
parallel_do(by_new_driver) do |driver, specs_and_options|
|
|
68
71
|
driver.ready_machines(action_handler, specs_and_options, parallelizer) do |machine|
|
|
72
|
+
machine.machine_spec.save(action_handler)
|
|
73
|
+
|
|
69
74
|
m = by_id[machine.machine_spec.id]
|
|
70
75
|
|
|
71
76
|
m[:machine] = machine
|
data/lib/chef_metal.rb
CHANGED
|
@@ -30,14 +30,18 @@ module ChefMetal
|
|
|
30
30
|
@@registered_driver_classes[name] = driver
|
|
31
31
|
end
|
|
32
32
|
|
|
33
|
-
def self.config_for_url(driver_url, config =
|
|
33
|
+
def self.config_for_url(driver_url, config = Cheffish.profiled_config)
|
|
34
34
|
if config && config[:drivers] && config[:drivers][driver_url]
|
|
35
35
|
config = Cheffish::MergedConfig.new(config[:drivers][driver_url], config)
|
|
36
36
|
end
|
|
37
37
|
config || {}
|
|
38
38
|
end
|
|
39
39
|
|
|
40
|
-
def self.
|
|
40
|
+
def self.default_driver(config = Cheffish.profiled_config)
|
|
41
|
+
driver_for_url(config[:driver], config)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def self.driver_for_url(driver_url, config = Cheffish.profiled_config)
|
|
41
45
|
cluster_type = driver_url.split(':', 2)[0]
|
|
42
46
|
require "chef_metal/driver_init/#{cluster_type}"
|
|
43
47
|
driver_class = @@registered_driver_classes[cluster_type]
|
|
@@ -45,7 +49,7 @@ module ChefMetal
|
|
|
45
49
|
driver_class.from_url(driver_url, config || {})
|
|
46
50
|
end
|
|
47
51
|
|
|
48
|
-
def self.connect_to_machine(machine_spec, config =
|
|
52
|
+
def self.connect_to_machine(machine_spec, config = Cheffish.profiled_config)
|
|
49
53
|
driver = driver_for_url(machine_spec.driver_url, config)
|
|
50
54
|
if driver
|
|
51
55
|
machine_options = { :convergence_options => { :chef_server => Cheffish.default_chef_server(config) } }
|
data/lib/chef_metal/driver.rb
CHANGED
|
@@ -229,7 +229,7 @@ module ChefMetal
|
|
|
229
229
|
end.to_a
|
|
230
230
|
end
|
|
231
231
|
|
|
232
|
-
#
|
|
232
|
+
# Ready machines in batch, in parallel if possible.
|
|
233
233
|
def ready_machines(action_handler, specs_and_options, parallelizer)
|
|
234
234
|
parallelizer.parallelize(specs_and_options) do |machine_spec, machine_options|
|
|
235
235
|
machine = ready_machine(add_prefix(machine_spec, action_handler), machine_spec, machine_options)
|
|
@@ -259,5 +259,9 @@ module ChefMetal
|
|
|
259
259
|
def add_prefix(machine_spec, action_handler)
|
|
260
260
|
AddPrefixActionHandler.new(action_handler, "[#{machine_spec.name}] ")
|
|
261
261
|
end
|
|
262
|
+
|
|
263
|
+
def get_private_key(name)
|
|
264
|
+
Cheffish.get_private_key(name, config)
|
|
265
|
+
end
|
|
262
266
|
end
|
|
263
267
|
end
|
data/lib/chef_metal/machine.rb
CHANGED
|
@@ -25,6 +25,10 @@ module ChefMetal
|
|
|
25
25
|
raise "converge not overridden on #{self.class}"
|
|
26
26
|
end
|
|
27
27
|
|
|
28
|
+
def cleanup_convergence(action_handler)
|
|
29
|
+
raise "cleanup_convergence not overridden on #{self.class}"
|
|
30
|
+
end
|
|
31
|
+
|
|
28
32
|
def execute(action_handler, command, options = {})
|
|
29
33
|
raise "execute not overridden on #{self.class}"
|
|
30
34
|
end
|
|
@@ -12,9 +12,6 @@ module ChefMetal
|
|
|
12
12
|
attr_reader :transport
|
|
13
13
|
attr_reader :convergence_strategy
|
|
14
14
|
|
|
15
|
-
# Sets up everything necessary for convergence to happen on the machine.
|
|
16
|
-
# The machine_spec MUST be saved as part of this procedure. Other than that,
|
|
17
|
-
# nothing is guaranteed except that converge() will work when this is done.
|
|
18
15
|
def setup_convergence(action_handler)
|
|
19
16
|
convergence_strategy.setup_convergence(action_handler, self)
|
|
20
17
|
end
|
|
@@ -23,6 +20,10 @@ module ChefMetal
|
|
|
23
20
|
convergence_strategy.converge(action_handler, self)
|
|
24
21
|
end
|
|
25
22
|
|
|
23
|
+
def cleanup_convergence(action_handler)
|
|
24
|
+
convergence_strategy.cleanup_convergence(action_handler, machine_spec)
|
|
25
|
+
end
|
|
26
|
+
|
|
26
27
|
def execute(action_handler, command, options = {})
|
|
27
28
|
action_handler.perform_action "run '#{command}' on #{machine_spec.name}" do
|
|
28
29
|
result = transport.execute(command, options)
|
data/lib/chef_metal/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,83 +1,83 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: chef-metal
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.11.beta.
|
|
4
|
+
version: 0.11.beta.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- John Keiser
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2014-05-
|
|
11
|
+
date: 2014-05-28 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: chef
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- -
|
|
17
|
+
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
19
|
version: '0'
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
|
-
- -
|
|
24
|
+
- - ">="
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: '0'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: net-ssh
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
|
-
- - ~>
|
|
31
|
+
- - "~>"
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
33
|
version: '2.0'
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
|
-
- - ~>
|
|
38
|
+
- - "~>"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
40
|
version: '2.0'
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: net-scp
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
|
-
- - ~>
|
|
45
|
+
- - "~>"
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
47
|
version: '1.0'
|
|
48
48
|
type: :runtime
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
|
-
- - ~>
|
|
52
|
+
- - "~>"
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
54
|
version: '1.0'
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: net-ssh-gateway
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements:
|
|
59
|
-
- - ~>
|
|
59
|
+
- - "~>"
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
61
|
version: 1.2.0
|
|
62
62
|
type: :runtime
|
|
63
63
|
prerelease: false
|
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
65
|
requirements:
|
|
66
|
-
- - ~>
|
|
66
|
+
- - "~>"
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
68
|
version: 1.2.0
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
70
|
name: inifile
|
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
|
72
72
|
requirements:
|
|
73
|
-
- - ~>
|
|
73
|
+
- - "~>"
|
|
74
74
|
- !ruby/object:Gem::Version
|
|
75
75
|
version: '2.0'
|
|
76
76
|
type: :runtime
|
|
77
77
|
prerelease: false
|
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
79
|
requirements:
|
|
80
|
-
- - ~>
|
|
80
|
+
- - "~>"
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
82
|
version: '2.0'
|
|
83
83
|
- !ruby/object:Gem::Dependency
|
|
@@ -86,14 +86,14 @@ dependencies:
|
|
|
86
86
|
requirements:
|
|
87
87
|
- - '='
|
|
88
88
|
- !ruby/object:Gem::Version
|
|
89
|
-
version: 0.5.beta
|
|
89
|
+
version: 0.5.beta.2
|
|
90
90
|
type: :runtime
|
|
91
91
|
prerelease: false
|
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
93
|
requirements:
|
|
94
94
|
- - '='
|
|
95
95
|
- !ruby/object:Gem::Version
|
|
96
|
-
version: 0.5.beta
|
|
96
|
+
version: 0.5.beta.2
|
|
97
97
|
- !ruby/object:Gem::Dependency
|
|
98
98
|
name: chef-metal-fog
|
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -126,28 +126,28 @@ dependencies:
|
|
|
126
126
|
name: rspec
|
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
|
128
128
|
requirements:
|
|
129
|
-
- -
|
|
129
|
+
- - ">="
|
|
130
130
|
- !ruby/object:Gem::Version
|
|
131
131
|
version: '0'
|
|
132
132
|
type: :development
|
|
133
133
|
prerelease: false
|
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
|
135
135
|
requirements:
|
|
136
|
-
- -
|
|
136
|
+
- - ">="
|
|
137
137
|
- !ruby/object:Gem::Version
|
|
138
138
|
version: '0'
|
|
139
139
|
- !ruby/object:Gem::Dependency
|
|
140
140
|
name: rake
|
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
|
142
142
|
requirements:
|
|
143
|
-
- -
|
|
143
|
+
- - ">="
|
|
144
144
|
- !ruby/object:Gem::Version
|
|
145
145
|
version: '0'
|
|
146
146
|
type: :development
|
|
147
147
|
prerelease: false
|
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
|
149
149
|
requirements:
|
|
150
|
-
- -
|
|
150
|
+
- - ">="
|
|
151
151
|
- !ruby/object:Gem::Version
|
|
152
152
|
version: '0'
|
|
153
153
|
description: A library for creating machines and infrastructures idempotently in Chef.
|
|
@@ -160,10 +160,11 @@ extra_rdoc_files:
|
|
|
160
160
|
- CHANGELOG.md
|
|
161
161
|
- LICENSE
|
|
162
162
|
files:
|
|
163
|
-
-
|
|
163
|
+
- CHANGELOG.md
|
|
164
164
|
- LICENSE
|
|
165
165
|
- README.md
|
|
166
|
-
-
|
|
166
|
+
- Rakefile
|
|
167
|
+
- bin/metal
|
|
167
168
|
- lib/chef/provider/machine.rb
|
|
168
169
|
- lib/chef/provider/machine_batch.rb
|
|
169
170
|
- lib/chef/provider/machine_execute.rb
|
|
@@ -172,31 +173,30 @@ files:
|
|
|
172
173
|
- lib/chef/resource/machine_batch.rb
|
|
173
174
|
- lib/chef/resource/machine_execute.rb
|
|
174
175
|
- lib/chef/resource/machine_file.rb
|
|
176
|
+
- lib/chef_metal.rb
|
|
175
177
|
- lib/chef_metal/action_handler.rb
|
|
176
178
|
- lib/chef_metal/add_prefix_action_handler.rb
|
|
177
179
|
- lib/chef_metal/chef_machine_spec.rb
|
|
178
180
|
- lib/chef_metal/chef_provider_action_handler.rb
|
|
179
181
|
- lib/chef_metal/chef_run_data.rb
|
|
182
|
+
- lib/chef_metal/convergence_strategy.rb
|
|
180
183
|
- lib/chef_metal/convergence_strategy/install_cached.rb
|
|
181
184
|
- lib/chef_metal/convergence_strategy/install_msi.rb
|
|
182
185
|
- lib/chef_metal/convergence_strategy/install_sh.rb
|
|
183
186
|
- lib/chef_metal/convergence_strategy/no_converge.rb
|
|
184
187
|
- lib/chef_metal/convergence_strategy/precreate_chef_objects.rb
|
|
185
|
-
- lib/chef_metal/convergence_strategy.rb
|
|
186
188
|
- lib/chef_metal/driver.rb
|
|
189
|
+
- lib/chef_metal/machine.rb
|
|
187
190
|
- lib/chef_metal/machine/basic_machine.rb
|
|
188
191
|
- lib/chef_metal/machine/unix_machine.rb
|
|
189
192
|
- lib/chef_metal/machine/windows_machine.rb
|
|
190
|
-
- lib/chef_metal/machine.rb
|
|
191
193
|
- lib/chef_metal/machine_spec.rb
|
|
192
194
|
- lib/chef_metal/recipe_dsl.rb
|
|
195
|
+
- lib/chef_metal/transport.rb
|
|
193
196
|
- lib/chef_metal/transport/ssh.rb
|
|
194
197
|
- lib/chef_metal/transport/winrm.rb
|
|
195
|
-
- lib/chef_metal/transport.rb
|
|
196
198
|
- lib/chef_metal/version.rb
|
|
197
|
-
- lib/chef_metal.rb
|
|
198
199
|
- spec/integration/machine.rb
|
|
199
|
-
- bin/metal
|
|
200
200
|
homepage: http://wiki.opscode.com/display/chef
|
|
201
201
|
licenses: []
|
|
202
202
|
metadata: {}
|
|
@@ -206,17 +206,17 @@ require_paths:
|
|
|
206
206
|
- lib
|
|
207
207
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
208
208
|
requirements:
|
|
209
|
-
- -
|
|
209
|
+
- - ">="
|
|
210
210
|
- !ruby/object:Gem::Version
|
|
211
211
|
version: '0'
|
|
212
212
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
213
213
|
requirements:
|
|
214
|
-
- -
|
|
214
|
+
- - ">"
|
|
215
215
|
- !ruby/object:Gem::Version
|
|
216
216
|
version: 1.3.1
|
|
217
217
|
requirements: []
|
|
218
218
|
rubyforge_project:
|
|
219
|
-
rubygems_version: 2.
|
|
219
|
+
rubygems_version: 2.2.2
|
|
220
220
|
signing_key:
|
|
221
221
|
specification_version: 4
|
|
222
222
|
summary: A library for creating machines and infrastructures idempotently in Chef.
|