motherbrain 1.0.0 → 1.1.0

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.
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