gaptool-client 0.7.1 → 0.7.2
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.
- 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
|