gaptool-client 0.7.1 → 0.7.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/lib/gaptool-client.rb +36 -8
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 608c2613b46db592bb9a82751766202e2910de78
4
- data.tar.gz: a60442bdb7c46051498b0d087e35cc907d814df7
3
+ metadata.gz: 983e7534410d558b995cd4b04dbfdf5d1e8a70de
4
+ data.tar.gz: 9dd849f4d95fe5ee23dd659a4d39437815abd82b
5
5
  SHA512:
6
- metadata.gz: 246fda59b54dca5a2b88881f00a28f89d32b01c561b71b936d5636c8e9d182eb35cd6e706c3318d1beb2a6ba9d7c5fc4a8f1ea14ce62c81df0d75e2819fc108d
7
- data.tar.gz: 5ff68d290e765c70a619600559b0f64675ec83a352c1fd7989f25d153e8ff61b51d60bf50b90cf42da6e658b989f6eb80af9dda678f68f805621a519a361d5dd
6
+ metadata.gz: 3e005e45f247c949e9bb47dcdf7f73ade739b5f08d7358f9b57752bc5b9e817eb723391e1d9eb4d688d1a022f72b5cb300696a705ff3aeeb67f351f16ff03bde
7
+ data.tar.gz: 42a72d4765e4f368c54b4e74dbfcc7e3937679e6c8f861ab83e333234cd144f56e0c3063c39a1d61be248d92f0a8778803006cd62ee8f29e1fd7e007d11b429a
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.7.1
1
+ 0.7.2
@@ -6,6 +6,7 @@ require 'json'
6
6
  require 'clamp'
7
7
  require 'net/ssh'
8
8
  require 'net/scp'
9
+ require 'set'
9
10
 
10
11
  def infohelper(nodes, parseable, grepable)
11
12
  if parseable
@@ -314,12 +315,12 @@ module Gaptool
314
315
  end
315
316
 
316
317
  class DeployCommand < Clamp::Command
317
- option ["-a", "--app"], "APP", "Application to deploy", :required => true
318
+ option ["-a", "--app"], "APP", "Application(s) to deploy (can be set multiple times)", :required => true, :multivalued => true
318
319
  option ["-m", "--migrate"], :flag, "Toggle running migrations"
319
320
  option ["-e", "--environment"], "ENVIRONMENT", "Which environment, e.g. production", :required => true
320
321
  option ["-b", "--branch"], "BRANCH", "Git branch to deploy, default is master", :required => false
321
322
  option ["-r", "--rollback"], :flag, "Toggle this to rollback last deploy"
322
- option ["-i", "--instance"], "INSTANCE", "Instance ID, e.g. i-12345678", :required => false
323
+ option ["-i", "--instance"], "INSTANCE", "Instance ID, e.g. i-12345678. If set, all applications MUST be hosted on this node.", :required => false
323
324
  option ["-A", "--attribute"], "ATTRIBUTE", "Pass one or more parameters to the deploy recipe in recipe.attr=value format", :multivalued => true
324
325
  option ['-H', '--hidden'], :flag, 'Display hidden hosts'
325
326
 
@@ -329,15 +330,43 @@ module Gaptool
329
330
  n = $api.getonenode(instance)
330
331
  if n['environment'] != environment
331
332
  abort "Instance #{instance} is not in environment #{environment}"
332
- elsif !n['apps'].include?(app)
333
- abort "Instance #{instance} does not host #{app} in env #{environment}"
333
+ else
334
+ app_list.each do |app|
335
+ if !n['apps'].include?(app)
336
+ abort "Instance #{instance} does not host #{app} in env #{environment}"
337
+ end
338
+ end
334
339
  end
335
340
  nodes = [n]
341
+
336
342
  else
337
343
  params = hidden? ? {hidden: true} : {}
338
- nodes = $api.getappnodes(app, environment, params)
344
+ nodes = []
345
+ app_list.each do |app|
346
+ nodes.concat($api.getappnodes(app, environment, params))
347
+ end
348
+ end
349
+
350
+ # dedup nodes
351
+ seen = Set.new
352
+ app_set = Set.new(app_list)
353
+ nodes = nodes.select do |x|
354
+ res = !seen.include?(x['instance']);
355
+ seen << x['instance'];
356
+ res
357
+ end.map do |x|
358
+ x['apps'] = eval(x['apps'])
359
+ x['apps_to_deploy'] = (Set.new(x['apps']) & app_set).to_a
360
+ x
339
361
  end
362
+
340
363
  nodes.peach do |node|
364
+ host = "#{node['role']}:#{node['environment']}:#{node['instance']}"
365
+ puts "#{Rainbow("Deploying apps").cyan} '" + \
366
+ Rainbow(node['apps_to_deploy'].join(" ")).green + \
367
+ "' #{Rainbow("on").cyan} " + \
368
+ Rainbow(host).green
369
+
341
370
  if node['chef_runlist'].nil?
342
371
  runlist = ['recipe[deploy]']
343
372
  elsif node['chef_runlist'].is_a? Array
@@ -355,9 +384,8 @@ module Gaptool
355
384
  'instance' => node['instance'],
356
385
  'zone' => node['zone'],
357
386
  'itype' => node['itype'],
358
- 'apps' => eval(node['apps']),
359
- 'app_name' => app,
360
- 'app' => app,
387
+ 'apps' => node['apps'],
388
+ 'deploy_apps' => node['apps_to_deploy'],
361
389
  'rollback' => rollback?,
362
390
  'branch' => branch || 'master',
363
391
  'migrate' => migrate?
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.7.1
4
+ version: 0.7.2
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-06-03 00:00:00.000000000 Z
13
+ date: 2015-06-05 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: json