gaptool-client 0.8.0.pre.alpha → 0.8.0.pre.alpha1

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/lib/gaptool_client.rb +38 -28
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5743d37c651bcb733ed785ac5dd8789e2ac0dd32
4
- data.tar.gz: 4d56c2af9863318ebbef9446db4426c734bd46f5
3
+ metadata.gz: b92e391320b96f17ba1b9358205ae193dde78207
4
+ data.tar.gz: e7a32dd8afaff543c265919d24ccf3dd97d74ffa
5
5
  SHA512:
6
- metadata.gz: 9a647dfa2a183c3b5498d3ce67c14616bcb474d9ce2a81d91c77a897787732157a54cdbd5f6321f16c1e7e022f3a80b05d57e6e735bfcea1419c266b9fcfa94c
7
- data.tar.gz: cd006d3c6c66a43df4841c1c73d3f4e30490a44c90a6f7a2c9e8ebcf16f55758019d03204eeab63fa14d7d4e41ed157bf381617148b447d4e6fc9206f90bd638
6
+ metadata.gz: 4f5294bade02406d836c50f88c01ee217eacad18e647d63a827135e31223b612e62fe53f135ec94619fab7c61a5c1160f0987e815c2b7ed0cd03a7b9429f73ae
7
+ data.tar.gz: db78cd64429cae2485801b922d005f241dcc10a6384c4052abd34f972f3292b4fb97296456441354d33b6dc250690870edcf8ab2e6e03bcea7230b1a71241f0f
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.8.0-alpha
1
+ 0.8.0-alpha1
@@ -146,6 +146,26 @@ EOF
146
146
  end
147
147
  end
148
148
 
149
+ def self.query_nodes(opts)
150
+ instance = opts[:instance]
151
+ role = opts[:role]
152
+ environment = opts[:environment]
153
+ params = opts[:params]
154
+
155
+ if instance
156
+ puts Rainbow('Ignoring role and environment as instance is set').red if role || environment
157
+ [Gaptool.api.getonenode(instance)]
158
+ elsif role && environment
159
+ Gaptool.api.getenvroles(role, environment, params)
160
+ elsif role
161
+ Gaptool.api.getrolenodes(role, params)
162
+ elsif environment
163
+ Gaptool.api.getenvnodes(environment, params)
164
+ else
165
+ Gaptool.api.getallnodes(params)
166
+ end
167
+ end
168
+
149
169
  def self.remote_exec(nodes, commands, opts = {})
150
170
  serial = opts[:serial]
151
171
  group_size = opts[:group_size] || 10
@@ -260,15 +280,13 @@ EOF
260
280
  option ['-e', '--environment'], 'ENVIRONMENT', 'Instance environment'
261
281
  option ['-i', '--instance'], 'INSTANCE', 'Instance id (i-xxxxxxxx)'
262
282
  option ['-s', '--serial'], :flag, 'Run command serially. Order of execution is unknown.'
283
+ option ['-x', '--exclude-hidden'], :flag, 'Exclude hidden hosts'
263
284
  parameter 'COMMAND ...', 'Command to run', attribute_name: :commands
264
285
 
265
286
  def execute
266
- Gaptool.error 'Missing instance, environment or role' if !instance && \
267
- !role && \
268
- !environment
269
- Gaptool.error 'Missing role' if !role && !instance
270
- Gaptool.error 'Missing environment' if !environment && !instance
271
- nodes = instance ? [Gaptool.api.getonenode(instance)] : Gaptool.api.getenvroles(role, environment)
287
+ params = exclude_hidden? ? {} : { hidden: true }
288
+ nodes = Gaptool.query_nodes(params.merge(instance: instance,
289
+ role: role, environment: environment))
272
290
  Gaptool.remote_exec(nodes, [commands.join(' ')], serial: serial?)
273
291
  end
274
292
  end
@@ -311,12 +329,10 @@ EOF
311
329
 
312
330
  def execute
313
331
  puts Rainbow('tmux support has been removed').yellow if tmux?
314
- Gaptool.error 'Missing instance, environment or role' if !instance && \
315
- !environment && \
316
- !role
317
- Gaptool.error 'Missing role' if !role && !instance
318
- Gaptool.error 'Missing environment' if !environment && !instance
319
- nodes = instance ? [Gaptool.api.getonenode(instance)] : Gaptool.api.getenvroles(role, environment)
332
+ nodes = Gaptool.query_nodes(hidden: true,
333
+ instance: instance,
334
+ environment: environment,
335
+ role: role)
320
336
 
321
337
  if first? || (nodes.length == 1 && !instance)
322
338
  puts Rainbow('No instance specified, but only one instance in cluster or first forced').green
@@ -348,15 +364,9 @@ EOF
348
364
  def execute
349
365
  nodes = []
350
366
  params = hidden? ? { hidden: true } : {}
351
- if instance
352
- nodes = [Gaptool.api.getonenode(instance)]
353
- elsif role && environment
354
- nodes = Gaptool.api.getenvroles(role, environment, params)
355
- elsif role && !environment
356
- nodes = Gaptool.api.getrolenodes(role, params)
357
- else
358
- nodes = Gaptool.api.getallnodes(params)
359
- end
367
+ nodes = Gaptool.query_nodes(params.merge(instance: instance,
368
+ role: role,
369
+ environment: environment))
360
370
  Gaptool.infohelper(nodes, parseable?, grepable?, short?)
361
371
  end
362
372
  end
@@ -392,6 +402,7 @@ EOF
392
402
  option ['-r', '--role'], 'ROLE', 'Role name to ssh to', required: true
393
403
  option ['-e', '--environment'], 'ENVIRONMENT', 'Which environment, e.g. production', required: true
394
404
  option ['-i', '--instance'], 'INSTANCE', 'Instance ID, e.g. i-12345678'
405
+ option ['-H', '--hidden'], :flag, 'Include hidden hosts'
395
406
  option(['-A', '--attribute'], 'ATTRIBUTE',
396
407
  'Pass one or more parameters to the deploy recipe in recipe.attr=value format',
397
408
  multivalued: true)
@@ -403,11 +414,10 @@ EOF
403
414
 
404
415
  def execute
405
416
  attrs = Gaptool.split_attrs(attribute_list)
406
- if !instance.nil?
407
- nodes = [Gaptool.api.getonenode(instance)]
408
- else
409
- nodes = Gaptool.api.getenvroles(role, environment)
410
- end
417
+ nodes = Gaptool.query_nodes(hidden: hidden? ? true : nil,
418
+ role: role,
419
+ instance: instance,
420
+ environment: environment)
411
421
 
412
422
  nodes = nodes.map do |x|
413
423
  x['whyrun'] = whyrun?
@@ -482,10 +492,10 @@ EOS
482
492
  if instance
483
493
  n = Gaptool.api.getonenode(instance)
484
494
  if n['environment'] != environment
485
- abort "Instance #{instance} is not in environment #{environment}"
495
+ Gaptool.error "Instance #{instance} is not in environment #{environment}"
486
496
  else
487
497
  app_list.each do |app|
488
- abort "Instance #{instance} does not host #{app} in env #{environment}" \
498
+ Gaptool.error "Instance #{instance} does not host #{app} in env #{environment}" \
489
499
  unless n['apps'].include?(app)
490
500
  end
491
501
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gaptool-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0.pre.alpha
4
+ version: 0.8.0.pre.alpha1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Francesco Laurita
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2015-12-29 00:00:00.000000000 Z
13
+ date: 2015-12-30 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: json