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.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/lib/gaptool-client.rb +36 -8
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 983e7534410d558b995cd4b04dbfdf5d1e8a70de
|
4
|
+
data.tar.gz: 9dd849f4d95fe5ee23dd659a4d39437815abd82b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3e005e45f247c949e9bb47dcdf7f73ade739b5f08d7358f9b57752bc5b9e817eb723391e1d9eb4d688d1a022f72b5cb300696a705ff3aeeb67f351f16ff03bde
|
7
|
+
data.tar.gz: 42a72d4765e4f368c54b4e74dbfcc7e3937679e6c8f861ab83e333234cd144f56e0c3063c39a1d61be248d92f0a8778803006cd62ee8f29e1fd7e007d11b429a
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.7.
|
1
|
+
0.7.2
|
data/lib/gaptool-client.rb
CHANGED
@@ -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
|
-
|
333
|
-
|
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 =
|
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' =>
|
359
|
-
'
|
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.
|
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-
|
13
|
+
date: 2015-06-05 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: json
|