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
         
     |