motherbrain 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ # 1.1.0
2
+
3
+ * Node filtering can be done on more commands
4
+ * Get some additional fixed from ridley-connectors
5
+
1
6
  # 1.0.0
2
7
 
3
8
  * Call it 1.0 since it's in use in production
@@ -154,9 +154,15 @@ module MotherBrain
154
154
  default: false,
155
155
  desc: "Perform service change even if the environment is locked",
156
156
  aliases: "-f"
157
+ method_option :only,
158
+ type: :array,
159
+ default: nil,
160
+ desc: "Run command only on the given hostnames or IPs",
161
+ aliases: "-o"
157
162
  desc("service [COMPONENT].[SERVICE] [STATE]", "Change the specified service to a new state")
158
163
  define_method(:service) do |service, state|
159
164
  service_options = Hash.new.merge(options).deep_symbolize_keys
165
+ service_options[:node_filter] = service_options.delete(:only)
160
166
 
161
167
  job = MB::Gear::DynamicService.change_service_state(
162
168
  service.freeze,
@@ -82,7 +82,7 @@ module MotherBrain
82
82
  environment: environment,
83
83
  arguments: task_args,
84
84
  force: options[:force],
85
- node_filter: options[:only]
85
+ node_filter: options[:only]
86
86
  )
87
87
 
88
88
  display_job(job)
@@ -9,6 +9,12 @@ module MotherBrain
9
9
  default: false,
10
10
  desc: "perform the configuration even if the environment is locked",
11
11
  aliases: "-f"
12
+ method_option :only,
13
+ type: :array,
14
+ default: nil,
15
+ desc: "Run command only on the given hostnames or IPs",
16
+ aliases: "-o",
17
+ hide: true
12
18
  desc "configure ENVIRONMENT FILE", "configure a Chef environment"
13
19
  def configure(environment, attributes_file)
14
20
  attributes_file = File.expand_path(attributes_file)
@@ -28,7 +34,7 @@ module MotherBrain
28
34
  exit(1)
29
35
  end
30
36
 
31
- job = environment_manager.async_configure(environment, attributes: attributes, force: options[:force])
37
+ job = environment_manager.async_configure(environment, attributes: attributes, force: options[:force], node_filter: options[:only])
32
38
 
33
39
  CliClient.new(job).display
34
40
  end
@@ -52,7 +52,8 @@ module MotherBrain
52
52
  # a hash of attributes to merge with the existing attributes of an environment
53
53
  # @option options [Boolean] :force (false)
54
54
  # force configure even if the environment is locked
55
- #
55
+ # @option options [String] :node_filter
56
+ # limit chef-run to certain nodes - NOT RECOMMENDED
56
57
  # @api private
57
58
  def configure(job, id, options = {})
58
59
  options = options.reverse_merge(
@@ -76,6 +77,7 @@ module MotherBrain
76
77
 
77
78
  job.set_status("Searching for nodes in the environment")
78
79
  nodes = nodes_for_environment(environment.name)
80
+ nodes = MB::NodeFilter.filter(options[:node_filter], nodes) if options[:node_filter]
79
81
 
80
82
  job.set_status("Performing a chef client run on #{nodes.length} nodes")
81
83
  nodes.collect do |node|
@@ -117,14 +119,16 @@ module MotherBrain
117
119
  nodes = nodes_for_environment(environment.name)
118
120
 
119
121
  job.set_status("Examining #{nodes.length} nodes")
122
+
120
123
  nodes.collect do |node|
121
- log.debug "About to execute on #{node.public_hostname}"
124
+ log.debug "About to execute on: \"#{node.public_hostname}\""
122
125
  node_querier.future(:execute_command, node.public_hostname, "echo %time%")
123
126
  end.each do |future|
124
127
  begin
125
128
  response = future.value
126
129
  rescue RemoteCommandError => error
127
- log.warn "Examine command on #{error.host} failed"
130
+ log.warn "Examine command failed on: \"#{error.host}\""
131
+ log.warn " " + error.message
128
132
  end
129
133
  end
130
134
  job.report_success("Completed on #{nodes.length} nodes.")
@@ -15,7 +15,7 @@ module MotherBrain
15
15
  # @param state [String]
16
16
  # the state of the service to change to
17
17
  # @param options [Hash]
18
- #
18
+ #
19
19
  # @return [MB::JobTicket]
20
20
  def change_service_state(service, plugin, environment, state, run_chef = true, options = {})
21
21
  job = Job.new(:dynamic_service_state_change)
@@ -67,12 +67,13 @@ module MotherBrain
67
67
  # the environment to execute on
68
68
  # @param state [String]
69
69
  # the state to change the service to
70
- # @param options [Hash]
70
+ # @option options [String] node_filter filter to apply to the
71
+ # list of nodes
71
72
  #
72
73
  # @return [MB::JobTicket]
73
74
  def state_change(job, plugin, environment, state, run_chef = true, options = {})
74
- log.warn {
75
- "Component's service state is being changed to #{state}, which is not one of #{COMMON_STATES}"
75
+ log.warn {
76
+ "Component's service state is being changed to #{state}, which is not one of #{COMMON_STATES}"
76
77
  } unless COMMON_STATES.include?(state)
77
78
 
78
79
  chef_synchronize(chef_environment: environment, force: options[:force]) do
@@ -80,6 +81,8 @@ module MotherBrain
80
81
  service_object = component_object.get_service(name)
81
82
  group = component_object.group(service_object.service_group)
82
83
  nodes = group.nodes(environment)
84
+ nodes = MB::NodeFilter.filter(options[:node_filter], nodes) if options[:node_filter]
85
+
83
86
  job.report_running("preparing to change the #{name} service to #{state}")
84
87
 
85
88
  if options[:cluster_override]
@@ -95,8 +98,8 @@ module MotherBrain
95
98
  end
96
99
 
97
100
  def node_state_change(job, plugin, node, state, run_chef = true)
98
- log.warn {
99
- "Component's service state is being changed to #{state}, which is not one of #{COMMON_STATES}"
101
+ log.warn {
102
+ "Component's service state is being changed to #{state}, which is not one of #{COMMON_STATES}"
100
103
  } unless COMMON_STATES.include?(state)
101
104
 
102
105
  component_object = plugin.component(component)
@@ -110,7 +113,7 @@ module MotherBrain
110
113
  def remove_node_state_change(job, plugin, node, run_chef = true)
111
114
  component_object = plugin.component(component)
112
115
  service = component_object.get_service(name)
113
-
116
+
114
117
  unset_node_attributes(job, [node], service.service_attribute)
115
118
  if run_chef
116
119
  node_querier.bulk_chef_run(job, [node], service.service_recipe)
@@ -118,7 +121,7 @@ module MotherBrain
118
121
  end
119
122
 
120
123
  # Finds the environment object, sets an attribute at the
121
- # override level, and saves the environment back to the
124
+ # override level, and saves the environment back to the
122
125
  # Chef server
123
126
  #
124
127
  # @param job [MB::Job]
@@ -177,6 +177,10 @@ module MotherBrain
177
177
  return nil
178
178
  end
179
179
 
180
+ unless host.present?
181
+ abort RemoteCommandError.new("cannot put_secret without a hostname or ipaddress")
182
+ end
183
+
180
184
  response = chef_connection.node.put_secret(host)
181
185
 
182
186
  if response.error?
@@ -196,6 +200,11 @@ module MotherBrain
196
200
  #
197
201
  # @return [Ridley::HostConnection::Response]
198
202
  def execute_command(host, command)
203
+
204
+ unless host.present?
205
+ abort RemoteCommandError.new("cannot execute command without a hostname or ipaddress")
206
+ end
207
+
199
208
  response = chef_connection.node.execute_command(host, command)
200
209
 
201
210
  if response.error?
@@ -479,6 +488,10 @@ module MotherBrain
479
488
  lines = File.readlines(MB.scripts.join("#{name}.rb"))
480
489
  command_lines = lines.collect { |line| line.gsub('"', "'").strip.chomp }
481
490
 
491
+ unless host.present?
492
+ abort RemoteCommandError.new("cannot execute a ruby_script without a hostname or ipaddress")
493
+ end
494
+
482
495
  response = chef_connection.node.ruby_script(host, command_lines)
483
496
 
484
497
  if response.error?
data/lib/mb/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module MotherBrain
2
- VERSION = '1.0.0'
2
+ VERSION = '1.1.0'
3
3
  end
data/man/man_helper.rb CHANGED
@@ -45,7 +45,7 @@ module MB
45
45
  klass.instance_eval do
46
46
  meth = normalize_command_name(command_name)
47
47
  command = all_commands[meth]
48
- banner(command).sub(/\S+:/,'')
48
+ banner(command).sub(/\S+:/,'').sub(/` :/,'` ')
49
49
  end
50
50
  }
51
51
 
@@ -53,7 +53,7 @@ module MB
53
53
  klass.instance_eval do
54
54
  meth = normalize_command_name(command_name)
55
55
  command = all_commands[meth]
56
- [banner(command).sub(/\S+:/,''), command.description, command.long_description, command.options]
56
+ [banner(command).sub(/\S+:/,'').sub(/` :/,'` '), command.description, command.long_description, command.options]
57
57
  end
58
58
  }
59
59
 
@@ -78,4 +78,3 @@ module MB
78
78
  end
79
79
  end
80
80
  end
81
-
data/man/mb.1 CHANGED
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "MB" "1" "September 2013" "" ""
4
+ .TH "MB" "1" "March 2014" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBmb\fR \- command and control clusters of machines with Chef
@@ -16,6 +16,12 @@
16
16
  \fBmb\fR purge HOST
17
17
  .
18
18
  .br
19
+ \fBmb\fR enable HOST
20
+ .
21
+ .br
22
+ \fBmb\fR disable HOST
23
+ .
24
+ .br
19
25
  \fBmb\fR version
20
26
  .
21
27
  .br
@@ -43,9 +49,15 @@
43
49
  \fBmb\fR \fBenvironment\fR unlock ENVIRONMENT
44
50
  .
45
51
  .br
52
+ \fBmb\fR \fBenvironment\fR from FILE
53
+ .
54
+ .br
46
55
  \fBmb\fR \fBenvironment\fR create ENVIRONMENT
47
56
  .
48
57
  .br
58
+ \fBmb\fR \fBenvironment\fR examine ENVIRONMENT
59
+ .
60
+ .br
49
61
  \fBmb\fR \fBenvironment\fR help [COMMAND]
50
62
  .
51
63
  .br
@@ -76,9 +88,15 @@
76
88
  \fBmb\fR \fB<plugin>\fR provision MANIFEST
77
89
  .
78
90
  .br
91
+ \fBmb\fR \fB<plugin>\fR service [COMPONENT]\.[SERVICE] [STATE]
92
+ .
93
+ .br
79
94
  \fBmb\fR \fB<plugin>\fR upgrade
80
95
  .
81
96
  .br
97
+ \fBmb\fR \fB<plugin>\fR attributes
98
+ .
99
+ .br
82
100
  \fBmb\fR \fB<plugin>\fR \fB<component>\fR \fB<command>\fR
83
101
  .
84
102
  .br
@@ -154,6 +172,32 @@ Skip removing the Chef installation from the node
154
172
  .
155
173
  .br
156
174
 
175
+ .
176
+ .P
177
+ \fBmb\fR enable HOST
178
+ .
179
+ .br
180
+ Remove stop service attributes and \'disabled\' run list entry from HOST\'s node\.
181
+ .
182
+ .TP
183
+ \-f, \-\-force
184
+ Perform HOST enable even if the environment is locked
185
+ .
186
+ .br
187
+
188
+ .
189
+ .P
190
+ \fBmb\fR disable HOST
191
+ .
192
+ .br
193
+ Stop services on HOST and prevent chef\-client from running until reenabled\.
194
+ .
195
+ .TP
196
+ \-f, \-\-force
197
+ Perform HOST disable even if the environment is locked
198
+ .
199
+ .br
200
+
157
201
  .
158
202
  .P
159
203
  \fBmb\fR version
@@ -191,6 +235,13 @@ perform the configuration even if the environment is locked
191
235
  .
192
236
  .br
193
237
 
238
+ .
239
+ .TP
240
+ \-o, \-\-only=one two three
241
+ Run command only on the given hostnames or IPs
242
+ .
243
+ .br
244
+
194
245
  .
195
246
  .P
196
247
  \fBmb\fR \fBenvironment\fR destroy ENVIRONMENT
@@ -238,12 +289,24 @@ Lock an environment
238
289
  Unlock an environment
239
290
  .
240
291
  .P
292
+ \fBmb\fR \fBenvironment\fR from FILE
293
+ .
294
+ .br
295
+ Create an environment from JSON in a file
296
+ .
297
+ .P
241
298
  \fBmb\fR \fBenvironment\fR create ENVIRONMENT
242
299
  .
243
300
  .br
244
301
  Create an empty environment
245
302
  .
246
303
  .P
304
+ \fBmb\fR \fBenvironment\fR examine ENVIRONMENT
305
+ .
306
+ .br
307
+ Examine nodes in a Chef environment
308
+ .
309
+ .P
247
310
  \fBmb\fR \fBenvironment\fR help [COMMAND]
248
311
  .
249
312
  .br
@@ -442,6 +505,33 @@ Perform bootstrap even if the environment is locked
442
505
  .
443
506
  .br
444
507
 
508
+ .
509
+ .P
510
+ \fBmb\fR \fB<plugin>\fR service [COMPONENT]\.[SERVICE] [STATE]
511
+ .
512
+ .br
513
+ Change the specified service to a new state
514
+ .
515
+ .TP
516
+ \-\-cluster\-override
517
+ Sets the service operation to execute at the environment level
518
+ .
519
+ .br
520
+
521
+ .
522
+ .TP
523
+ \-f, \-\-force
524
+ Perform service change even if the environment is locked
525
+ .
526
+ .br
527
+
528
+ .
529
+ .TP
530
+ \-o, \-\-only=one two three
531
+ Run command only on the given hostnames or IPs
532
+ .
533
+ .br
534
+
445
535
  .
446
536
  .P
447
537
  \fBmb\fR \fB<plugin>\fR upgrade
@@ -483,6 +573,26 @@ Perform upgrade even if the environment is locked
483
573
  .
484
574
  .br
485
575
 
576
+ .
577
+ .TP
578
+ \-C, \-\-concurrency=N
579
+ The max number of nodes to upgrade concurrently\.
580
+ .
581
+ .br
582
+
583
+ .
584
+ .TP
585
+ \-\-stack\-order
586
+ The upgrade will be constrained to the order defined in the plugin\'s stack_order\.
587
+ .
588
+ .br
589
+
590
+ .
591
+ .P
592
+ \fBmb\fR \fB<plugin>\fR attributes
593
+ .
594
+ .br
595
+ View available attributes for plugin\.
486
596
  .
487
597
  .P
488
598
  \fBmb\fR \fB<plugin>\fR \fB<component>\fR \fB<command>\fR
data/man/mb.1.html CHANGED
@@ -78,6 +78,8 @@
78
78
  <p><code>mb</code> configure<br />
79
79
  <code>mb</code> console<br />
80
80
  <code>mb</code> purge HOST<br />
81
+ <code>mb</code> enable HOST<br />
82
+ <code>mb</code> disable HOST<br />
81
83
  <code>mb</code> version<br />
82
84
  <code>mb</code> template NAME PATH_OR_URL<br />
83
85
  <code>mb</code> environment<br />
@@ -87,7 +89,9 @@
87
89
  <code>mb</code> <code>environment</code> list<br />
88
90
  <code>mb</code> <code>environment</code> lock ENVIRONMENT<br />
89
91
  <code>mb</code> <code>environment</code> unlock ENVIRONMENT<br />
92
+ <code>mb</code> <code>environment</code> from FILE<br />
90
93
  <code>mb</code> <code>environment</code> create ENVIRONMENT<br />
94
+ <code>mb</code> <code>environment</code> examine ENVIRONMENT<br />
91
95
  <code>mb</code> <code>environment</code> help [COMMAND]<br />
92
96
  <code>mb</code> <code>plugin</code> init [PATH]<br />
93
97
  <code>mb</code> <code>plugin</code> install NAME<br />
@@ -98,7 +102,9 @@
98
102
  <code>mb</code> <code>&lt;plugin></code> nodes<br />
99
103
  <code>mb</code> <code>&lt;plugin></code> bootstrap MANIFEST<br />
100
104
  <code>mb</code> <code>&lt;plugin></code> provision MANIFEST<br />
105
+ <code>mb</code> <code>&lt;plugin></code> service [COMPONENT].[SERVICE] [STATE]<br />
101
106
  <code>mb</code> <code>&lt;plugin></code> upgrade<br />
107
+ <code>mb</code> <code>&lt;plugin></code> attributes<br />
102
108
  <code>mb</code> <code>&lt;plugin></code> <code>&lt;component></code> <code>&lt;command></code><br /></p>
103
109
 
104
110
  <h2 id="DESCRIPTION">DESCRIPTION</h2>
@@ -153,6 +159,22 @@ Remove Chef from node and purge it's data from the Chef server</p>
153
159
  </dl>
154
160
 
155
161
 
162
+ <p><code>mb</code> enable HOST<br />
163
+ Remove stop service attributes and 'disabled' run list entry from HOST's node.</p>
164
+
165
+ <dl>
166
+ <dt>-f, --force</dt><dd>Perform HOST enable even if the environment is locked<br /></dd>
167
+ </dl>
168
+
169
+
170
+ <p><code>mb</code> disable HOST<br />
171
+ Stop services on HOST and prevent chef-client from running until reenabled.</p>
172
+
173
+ <dl>
174
+ <dt>-f, --force</dt><dd>Perform HOST disable even if the environment is locked<br /></dd>
175
+ </dl>
176
+
177
+
156
178
  <p><code>mb</code> version<br />
157
179
  Display version and license information</p>
158
180
 
@@ -170,6 +192,7 @@ configure a Chef environment</p>
170
192
 
171
193
  <dl>
172
194
  <dt>-f, --force</dt><dd>perform the configuration even if the environment is locked<br /></dd>
195
+ <dt>-o, --only=one two three</dt><dd>Run command only on the given hostnames or IPs<br /></dd>
173
196
  </dl>
174
197
 
175
198
 
@@ -192,9 +215,15 @@ Lock an environment</p>
192
215
  <p><code>mb</code> <code>environment</code> unlock ENVIRONMENT<br />
193
216
  Unlock an environment</p>
194
217
 
218
+ <p><code>mb</code> <code>environment</code> from FILE<br />
219
+ Create an environment from JSON in a file</p>
220
+
195
221
  <p><code>mb</code> <code>environment</code> create ENVIRONMENT<br />
196
222
  Create an empty environment</p>
197
223
 
224
+ <p><code>mb</code> <code>environment</code> examine ENVIRONMENT<br />
225
+ Examine nodes in a Chef environment</p>
226
+
198
227
  <p><code>mb</code> <code>environment</code> help [COMMAND]<br />
199
228
  Describe subcommands or one specific subcommand</p>
200
229
 
@@ -269,6 +298,16 @@ Create a cluster of nodes and add them to a Chef environment</p>
269
298
  </dl>
270
299
 
271
300
 
301
+ <p><code>mb</code> <code>&lt;plugin></code> service [COMPONENT].[SERVICE] [STATE]<br />
302
+ Change the specified service to a new state</p>
303
+
304
+ <dl>
305
+ <dt>--cluster-override</dt><dd>Sets the service operation to execute at the environment level<br /></dd>
306
+ <dt>-f, --force</dt><dd>Perform service change even if the environment is locked<br /></dd>
307
+ <dt>-o, --only=one two three</dt><dd>Run command only on the given hostnames or IPs<br /></dd>
308
+ </dl>
309
+
310
+
272
311
  <p><code>mb</code> <code>&lt;plugin></code> upgrade<br />
273
312
  Upgrade an environment to the specified versions</p>
274
313
 
@@ -278,9 +317,14 @@ Upgrade an environment to the specified versions</p>
278
317
  <dt>--attributes, --environment-attributes=key:value</dt><dd>Any additional attributes to set on the environment<br /></dd>
279
318
  <dt>--attributes-file, --environment-attributes-file=ENVIRONMENT_ATTRIBUTES_FILE</dt><dd>Any additional attributes to set on the environment via a json file.<br /></dd>
280
319
  <dt>-f, --force</dt><dd>Perform upgrade even if the environment is locked<br /></dd>
320
+ <dt>-C, --concurrency=N</dt><dd>The max number of nodes to upgrade concurrently.<br /></dd>
321
+ <dt>--stack-order</dt><dd>The upgrade will be constrained to the order defined in the plugin's stack_order.<br /></dd>
281
322
  </dl>
282
323
 
283
324
 
325
+ <p><code>mb</code> <code>&lt;plugin></code> attributes<br />
326
+ View available attributes for plugin.</p>
327
+
284
328
  <p><code>mb</code> <code>&lt;plugin></code> <code>&lt;component></code> <code>&lt;command></code><br />
285
329
  Run a command defined in a component in the specified plugin. Options and usage are plugin-defined.</p>
286
330
 
@@ -291,7 +335,7 @@ Run a command defined in a component in the specified plugin. Options and usage
291
335
 
292
336
  <ol class='man-decor man-foot man foot'>
293
337
  <li class='tl'></li>
294
- <li class='tc'>September 2013</li>
338
+ <li class='tc'>March 2014</li>
295
339
  <li class='tr'>mb(1)</li>
296
340
  </ol>
297
341
 
data/motherbrain.gemspec CHANGED
@@ -42,7 +42,7 @@ Gem::Specification.new do |s|
42
42
  s.add_dependency 'net-ssh'
43
43
  s.add_dependency 'net-sftp'
44
44
  s.add_dependency 'solve', '>= 0.4.4'
45
- s.add_dependency 'ridley-connectors', '~> 1.6.0'
45
+ s.add_dependency 'ridley-connectors', '~> 1.7.1'
46
46
  s.add_dependency 'thor', '~> 0.18.0'
47
47
  s.add_dependency 'faraday', '< 0.9.0'
48
48
  s.add_dependency 'faraday_middleware'
metadata CHANGED
@@ -1,7 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: motherbrain
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Jamie Winsor
@@ -15,11 +16,12 @@ authors:
15
16
  autorequire:
16
17
  bindir: bin
17
18
  cert_chain: []
18
- date: 2014-03-27 00:00:00.000000000 Z
19
+ date: 2014-04-01 00:00:00.000000000 Z
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
22
  name: celluloid
22
23
  requirement: !ruby/object:Gem::Requirement
24
+ none: false
23
25
  requirements:
24
26
  - - ~>
25
27
  - !ruby/object:Gem::Version
@@ -27,6 +29,7 @@ dependencies:
27
29
  type: :runtime
28
30
  prerelease: false
29
31
  version_requirements: !ruby/object:Gem::Requirement
32
+ none: false
30
33
  requirements:
31
34
  - - ~>
32
35
  - !ruby/object:Gem::Version
@@ -34,6 +37,7 @@ dependencies:
34
37
  - !ruby/object:Gem::Dependency
35
38
  name: reel
36
39
  requirement: !ruby/object:Gem::Requirement
40
+ none: false
37
41
  requirements:
38
42
  - - ~>
39
43
  - !ruby/object:Gem::Version
@@ -41,6 +45,7 @@ dependencies:
41
45
  type: :runtime
42
46
  prerelease: false
43
47
  version_requirements: !ruby/object:Gem::Requirement
48
+ none: false
44
49
  requirements:
45
50
  - - ~>
46
51
  - !ruby/object:Gem::Version
@@ -48,20 +53,23 @@ dependencies:
48
53
  - !ruby/object:Gem::Dependency
49
54
  name: reel-rack
50
55
  requirement: !ruby/object:Gem::Requirement
56
+ none: false
51
57
  requirements:
52
- - - '>='
58
+ - - ! '>='
53
59
  - !ruby/object:Gem::Version
54
60
  version: '0'
55
61
  type: :runtime
56
62
  prerelease: false
57
63
  version_requirements: !ruby/object:Gem::Requirement
64
+ none: false
58
65
  requirements:
59
- - - '>='
66
+ - - ! '>='
60
67
  - !ruby/object:Gem::Version
61
68
  version: '0'
62
69
  - !ruby/object:Gem::Dependency
63
70
  name: grape
64
71
  requirement: !ruby/object:Gem::Requirement
72
+ none: false
65
73
  requirements:
66
74
  - - ~>
67
75
  - !ruby/object:Gem::Version
@@ -69,6 +77,7 @@ dependencies:
69
77
  type: :runtime
70
78
  prerelease: false
71
79
  version_requirements: !ruby/object:Gem::Requirement
80
+ none: false
72
81
  requirements:
73
82
  - - ~>
74
83
  - !ruby/object:Gem::Version
@@ -76,62 +85,71 @@ dependencies:
76
85
  - !ruby/object:Gem::Dependency
77
86
  name: net-ssh
78
87
  requirement: !ruby/object:Gem::Requirement
88
+ none: false
79
89
  requirements:
80
- - - '>='
90
+ - - ! '>='
81
91
  - !ruby/object:Gem::Version
82
92
  version: '0'
83
93
  type: :runtime
84
94
  prerelease: false
85
95
  version_requirements: !ruby/object:Gem::Requirement
96
+ none: false
86
97
  requirements:
87
- - - '>='
98
+ - - ! '>='
88
99
  - !ruby/object:Gem::Version
89
100
  version: '0'
90
101
  - !ruby/object:Gem::Dependency
91
102
  name: net-sftp
92
103
  requirement: !ruby/object:Gem::Requirement
104
+ none: false
93
105
  requirements:
94
- - - '>='
106
+ - - ! '>='
95
107
  - !ruby/object:Gem::Version
96
108
  version: '0'
97
109
  type: :runtime
98
110
  prerelease: false
99
111
  version_requirements: !ruby/object:Gem::Requirement
112
+ none: false
100
113
  requirements:
101
- - - '>='
114
+ - - ! '>='
102
115
  - !ruby/object:Gem::Version
103
116
  version: '0'
104
117
  - !ruby/object:Gem::Dependency
105
118
  name: solve
106
119
  requirement: !ruby/object:Gem::Requirement
120
+ none: false
107
121
  requirements:
108
- - - '>='
122
+ - - ! '>='
109
123
  - !ruby/object:Gem::Version
110
124
  version: 0.4.4
111
125
  type: :runtime
112
126
  prerelease: false
113
127
  version_requirements: !ruby/object:Gem::Requirement
128
+ none: false
114
129
  requirements:
115
- - - '>='
130
+ - - ! '>='
116
131
  - !ruby/object:Gem::Version
117
132
  version: 0.4.4
118
133
  - !ruby/object:Gem::Dependency
119
134
  name: ridley-connectors
120
135
  requirement: !ruby/object:Gem::Requirement
136
+ none: false
121
137
  requirements:
122
138
  - - ~>
123
139
  - !ruby/object:Gem::Version
124
- version: 1.6.0
140
+ version: 1.7.1
125
141
  type: :runtime
126
142
  prerelease: false
127
143
  version_requirements: !ruby/object:Gem::Requirement
144
+ none: false
128
145
  requirements:
129
146
  - - ~>
130
147
  - !ruby/object:Gem::Version
131
- version: 1.6.0
148
+ version: 1.7.1
132
149
  - !ruby/object:Gem::Dependency
133
150
  name: thor
134
151
  requirement: !ruby/object:Gem::Requirement
152
+ none: false
135
153
  requirements:
136
154
  - - ~>
137
155
  - !ruby/object:Gem::Version
@@ -139,6 +157,7 @@ dependencies:
139
157
  type: :runtime
140
158
  prerelease: false
141
159
  version_requirements: !ruby/object:Gem::Requirement
160
+ none: false
142
161
  requirements:
143
162
  - - ~>
144
163
  - !ruby/object:Gem::Version
@@ -146,6 +165,7 @@ dependencies:
146
165
  - !ruby/object:Gem::Dependency
147
166
  name: faraday
148
167
  requirement: !ruby/object:Gem::Requirement
168
+ none: false
149
169
  requirements:
150
170
  - - <
151
171
  - !ruby/object:Gem::Version
@@ -153,6 +173,7 @@ dependencies:
153
173
  type: :runtime
154
174
  prerelease: false
155
175
  version_requirements: !ruby/object:Gem::Requirement
176
+ none: false
156
177
  requirements:
157
178
  - - <
158
179
  - !ruby/object:Gem::Version
@@ -160,34 +181,39 @@ dependencies:
160
181
  - !ruby/object:Gem::Dependency
161
182
  name: faraday_middleware
162
183
  requirement: !ruby/object:Gem::Requirement
184
+ none: false
163
185
  requirements:
164
- - - '>='
186
+ - - ! '>='
165
187
  - !ruby/object:Gem::Version
166
188
  version: '0'
167
189
  type: :runtime
168
190
  prerelease: false
169
191
  version_requirements: !ruby/object:Gem::Requirement
192
+ none: false
170
193
  requirements:
171
- - - '>='
194
+ - - ! '>='
172
195
  - !ruby/object:Gem::Version
173
196
  version: '0'
174
197
  - !ruby/object:Gem::Dependency
175
198
  name: multi_json
176
199
  requirement: !ruby/object:Gem::Requirement
200
+ none: false
177
201
  requirements:
178
- - - '>='
202
+ - - ! '>='
179
203
  - !ruby/object:Gem::Version
180
204
  version: '0'
181
205
  type: :runtime
182
206
  prerelease: false
183
207
  version_requirements: !ruby/object:Gem::Requirement
208
+ none: false
184
209
  requirements:
185
- - - '>='
210
+ - - ! '>='
186
211
  - !ruby/object:Gem::Version
187
212
  version: '0'
188
213
  - !ruby/object:Gem::Dependency
189
214
  name: fog
190
215
  requirement: !ruby/object:Gem::Requirement
216
+ none: false
191
217
  requirements:
192
218
  - - ~>
193
219
  - !ruby/object:Gem::Version
@@ -195,6 +221,7 @@ dependencies:
195
221
  type: :runtime
196
222
  prerelease: false
197
223
  version_requirements: !ruby/object:Gem::Requirement
224
+ none: false
198
225
  requirements:
199
226
  - - ~>
200
227
  - !ruby/object:Gem::Version
@@ -202,20 +229,23 @@ dependencies:
202
229
  - !ruby/object:Gem::Dependency
203
230
  name: json
204
231
  requirement: !ruby/object:Gem::Requirement
232
+ none: false
205
233
  requirements:
206
- - - '>='
234
+ - - ! '>='
207
235
  - !ruby/object:Gem::Version
208
236
  version: 1.8.0
209
237
  type: :runtime
210
238
  prerelease: false
211
239
  version_requirements: !ruby/object:Gem::Requirement
240
+ none: false
212
241
  requirements:
213
- - - '>='
242
+ - - ! '>='
214
243
  - !ruby/object:Gem::Version
215
244
  version: 1.8.0
216
245
  - !ruby/object:Gem::Dependency
217
246
  name: buff-config
218
247
  requirement: !ruby/object:Gem::Requirement
248
+ none: false
219
249
  requirements:
220
250
  - - ~>
221
251
  - !ruby/object:Gem::Version
@@ -223,6 +253,7 @@ dependencies:
223
253
  type: :runtime
224
254
  prerelease: false
225
255
  version_requirements: !ruby/object:Gem::Requirement
256
+ none: false
226
257
  requirements:
227
258
  - - ~>
228
259
  - !ruby/object:Gem::Version
@@ -230,6 +261,7 @@ dependencies:
230
261
  - !ruby/object:Gem::Dependency
231
262
  name: buff-extensions
232
263
  requirement: !ruby/object:Gem::Requirement
264
+ none: false
233
265
  requirements:
234
266
  - - ~>
235
267
  - !ruby/object:Gem::Version
@@ -237,6 +269,7 @@ dependencies:
237
269
  type: :runtime
238
270
  prerelease: false
239
271
  version_requirements: !ruby/object:Gem::Requirement
272
+ none: false
240
273
  requirements:
241
274
  - - ~>
242
275
  - !ruby/object:Gem::Version
@@ -244,6 +277,7 @@ dependencies:
244
277
  - !ruby/object:Gem::Dependency
245
278
  name: buff-platform
246
279
  requirement: !ruby/object:Gem::Requirement
280
+ none: false
247
281
  requirements:
248
282
  - - ~>
249
283
  - !ruby/object:Gem::Version
@@ -251,6 +285,7 @@ dependencies:
251
285
  type: :runtime
252
286
  prerelease: false
253
287
  version_requirements: !ruby/object:Gem::Requirement
288
+ none: false
254
289
  requirements:
255
290
  - - ~>
256
291
  - !ruby/object:Gem::Version
@@ -258,6 +293,7 @@ dependencies:
258
293
  - !ruby/object:Gem::Dependency
259
294
  name: buff-ruby_engine
260
295
  requirement: !ruby/object:Gem::Requirement
296
+ none: false
261
297
  requirements:
262
298
  - - ~>
263
299
  - !ruby/object:Gem::Version
@@ -265,6 +301,7 @@ dependencies:
265
301
  type: :runtime
266
302
  prerelease: false
267
303
  version_requirements: !ruby/object:Gem::Requirement
304
+ none: false
268
305
  requirements:
269
306
  - - ~>
270
307
  - !ruby/object:Gem::Version
@@ -272,6 +309,7 @@ dependencies:
272
309
  - !ruby/object:Gem::Dependency
273
310
  name: grape-swagger
274
311
  requirement: !ruby/object:Gem::Requirement
312
+ none: false
275
313
  requirements:
276
314
  - - ~>
277
315
  - !ruby/object:Gem::Version
@@ -279,6 +317,7 @@ dependencies:
279
317
  type: :runtime
280
318
  prerelease: false
281
319
  version_requirements: !ruby/object:Gem::Requirement
320
+ none: false
282
321
  requirements:
283
322
  - - ~>
284
323
  - !ruby/object:Gem::Version
@@ -286,6 +325,7 @@ dependencies:
286
325
  - !ruby/object:Gem::Dependency
287
326
  name: berkshelf
288
327
  requirement: !ruby/object:Gem::Requirement
328
+ none: false
289
329
  requirements:
290
330
  - - ~>
291
331
  - !ruby/object:Gem::Version
@@ -293,6 +333,7 @@ dependencies:
293
333
  type: :runtime
294
334
  prerelease: false
295
335
  version_requirements: !ruby/object:Gem::Requirement
336
+ none: false
296
337
  requirements:
297
338
  - - ~>
298
339
  - !ruby/object:Gem::Version
@@ -576,26 +617,33 @@ files:
576
617
  homepage: https://github.com/RiotGames/motherbrain
577
618
  licenses:
578
619
  - Apache 2.0
579
- metadata: {}
580
620
  post_install_message:
581
621
  rdoc_options: []
582
622
  require_paths:
583
623
  - lib
584
624
  required_ruby_version: !ruby/object:Gem::Requirement
625
+ none: false
585
626
  requirements:
586
- - - '>='
627
+ - - ! '>='
587
628
  - !ruby/object:Gem::Version
588
629
  version: '0'
630
+ segments:
631
+ - 0
632
+ hash: 3921402493733653067
589
633
  required_rubygems_version: !ruby/object:Gem::Requirement
634
+ none: false
590
635
  requirements:
591
- - - '>='
636
+ - - ! '>='
592
637
  - !ruby/object:Gem::Version
593
638
  version: '0'
639
+ segments:
640
+ - 0
641
+ hash: 3921402493733653067
594
642
  requirements: []
595
643
  rubyforge_project:
596
- rubygems_version: 2.0.14
644
+ rubygems_version: 1.8.23
597
645
  signing_key:
598
- specification_version: 4
646
+ specification_version: 3
599
647
  summary: An orchestrator for Chef
600
648
  test_files:
601
649
  - features/cli/bootstrap_command/configurable_scripts.feature
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 487c01b8a8a569d17138c7208f165139864ef4ff
4
- data.tar.gz: 98c88f8faa6ab6470bfe0d59cc34fcb85eb14f77
5
- SHA512:
6
- metadata.gz: c21287087e19aa6bec75950753a4f5b72036a8f034d92e3948c9e535b39d1c90a79039e2ab9695b08248b67af5e67c8d4be742ec387307d7cbf8e1b38a827913
7
- data.tar.gz: 906a7a13e369811987d7c83563787f317ca0e2b16ef21e618e78e5deb3064a8eb566bd5665c291210743b9b04650887d42336d31abecfb53d962e82c06192748