vmc 0.2.4 → 0.2.6
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.
- data/Rakefile +1 -0
 - data/lib/cli/commands/admin.rb +1 -1
 - data/lib/cli/commands/apps.rb +28 -12
 - data/lib/cli/commands/user.rb +1 -1
 - data/lib/cli/frameworks.rb +9 -9
 - data/lib/cli/runner.rb +20 -4
 - data/lib/cli/usage.rb +1 -1
 - data/lib/cli/version.rb +3 -1
 - data/lib/cli/zip_util.rb +14 -7
 - data/lib/vmc/client.rb +3 -3
 - data/lib/vmc/const.rb +3 -1
 - metadata +3 -57
 
    
        data/Rakefile
    CHANGED
    
    
    
        data/lib/cli/commands/admin.rb
    CHANGED
    
    | 
         @@ -17,7 +17,7 @@ module VMC::Cli::Command 
     | 
|
| 
       17 
17 
     | 
    
         
             
                  client.add_user(email, password)
         
     | 
| 
       18 
18 
     | 
    
         
             
                  display 'OK'.green
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
                  # if we are not logged in, log in as the new user
         
     | 
| 
      
 20 
     | 
    
         
            +
                  # if we are not logged in for the current target, log in as the new user
         
     | 
| 
       21 
21 
     | 
    
         
             
                  return unless VMC::Cli::Config.auth_token.nil?
         
     | 
| 
       22 
22 
     | 
    
         
             
                  @options[:password] = password
         
     | 
| 
       23 
23 
     | 
    
         
             
                  cmd = User.new(@options)
         
     | 
    
        data/lib/cli/commands/apps.rb
    CHANGED
    
    | 
         @@ -160,10 +160,17 @@ module VMC::Cli::Command 
     | 
|
| 
       160 
160 
     | 
    
         | 
| 
       161 
161 
     | 
    
         
             
                end
         
     | 
| 
       162 
162 
     | 
    
         | 
| 
       163 
     | 
    
         
            -
                def delete(appname=nil 
     | 
| 
      
 163 
     | 
    
         
            +
                def delete(appname=nil)
         
     | 
| 
      
 164 
     | 
    
         
            +
                  force = @options[:force]
         
     | 
| 
       164 
165 
     | 
    
         
             
                  if @options[:all]
         
     | 
| 
       165 
     | 
    
         
            -
                     
     | 
| 
       166 
     | 
    
         
            -
                     
     | 
| 
      
 166 
     | 
    
         
            +
                    should_delete = force && no_prompt ? 'Y' : 'N'
         
     | 
| 
      
 167 
     | 
    
         
            +
                    unless no_prompt || force
         
     | 
| 
      
 168 
     | 
    
         
            +
                      should_delete = ask 'Delete ALL Applications and Services? (y/N)? '
         
     | 
| 
      
 169 
     | 
    
         
            +
                    end
         
     | 
| 
      
 170 
     | 
    
         
            +
                    if should_delete.upcase == 'Y'
         
     | 
| 
      
 171 
     | 
    
         
            +
                      apps = client.apps
         
     | 
| 
      
 172 
     | 
    
         
            +
                      apps.each { |app| delete_app(app[:name], force) }
         
     | 
| 
      
 173 
     | 
    
         
            +
                    end
         
     | 
| 
       167 
174 
     | 
    
         
             
                  else
         
     | 
| 
       168 
175 
     | 
    
         
             
                    err 'No valid appname given' unless appname
         
     | 
| 
       169 
176 
     | 
    
         
             
                    delete_app(appname, force)
         
     | 
| 
         @@ -175,8 +182,7 @@ module VMC::Cli::Command 
     | 
|
| 
       175 
182 
     | 
    
         
             
                  services_to_delete = []
         
     | 
| 
       176 
183 
     | 
    
         
             
                  app_services = app[:services]
         
     | 
| 
       177 
184 
     | 
    
         
             
                  app_services.each { |service|
         
     | 
| 
       178 
     | 
    
         
            -
                    del_service = 'Y'  
     | 
| 
       179 
     | 
    
         
            -
                    del_service = 'N' if no_prompt
         
     | 
| 
      
 185 
     | 
    
         
            +
                    del_service = force && no_prompt ? 'Y' : 'N'
         
     | 
| 
       180 
186 
     | 
    
         
             
                    unless no_prompt || force
         
     | 
| 
       181 
187 
     | 
    
         
             
                      del_service = ask("Provisioned service [#{service}] detected, would you like to delete it? [Yn]: ")
         
     | 
| 
       182 
188 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -301,13 +307,13 @@ module VMC::Cli::Command 
     | 
|
| 
       301 
307 
     | 
    
         
             
                end
         
     | 
| 
       302 
308 
     | 
    
         | 
| 
       303 
309 
     | 
    
         
             
                def update(appname)
         
     | 
| 
      
 310 
     | 
    
         
            +
                  app = client.app_info(appname)
         
     | 
| 
       304 
311 
     | 
    
         
             
                  path = @options[:path] || '.'
         
     | 
| 
       305 
312 
     | 
    
         
             
                  upload_app_bits(appname, path)
         
     | 
| 
       306 
313 
     | 
    
         
             
                  display "Successfully updated Application: '#{appname}'".green
         
     | 
| 
       307 
314 
     | 
    
         
             
                  if @options[:canary]
         
     | 
| 
       308 
315 
     | 
    
         
             
                    display "[--canary] is deprecated and will be removed in a future version".yellow
         
     | 
| 
       309 
316 
     | 
    
         
             
                  end
         
     | 
| 
       310 
     | 
    
         
            -
                  app = client.app_info(appname)
         
     | 
| 
       311 
317 
     | 
    
         
             
                  restart appname if app[:state] == 'STARTED'
         
     | 
| 
       312 
318 
     | 
    
         
             
                end
         
     | 
| 
       313 
319 
     | 
    
         | 
| 
         @@ -334,7 +340,7 @@ module VMC::Cli::Command 
     | 
|
| 
       334 
340 
     | 
    
         
             
                  check_app_limit
         
     | 
| 
       335 
341 
     | 
    
         | 
| 
       336 
342 
     | 
    
         
             
                  # check memsize here for capacity
         
     | 
| 
       337 
     | 
    
         
            -
                  check_has_capacity_for(mem_choice_to_quota(memswitch)) if memswitch
         
     | 
| 
      
 343 
     | 
    
         
            +
                  check_has_capacity_for(mem_choice_to_quota(memswitch)) if memswitch && !no_start
         
     | 
| 
       338 
344 
     | 
    
         | 
| 
       339 
345 
     | 
    
         
             
                  unless no_prompt || @options[:path]
         
     | 
| 
       340 
346 
     | 
    
         
             
                    proceed = ask('Would you like to deploy from the current directory? [Yn]: ')
         
     | 
| 
         @@ -399,7 +405,7 @@ module VMC::Cli::Command 
     | 
|
| 
       399 
405 
     | 
    
         
             
                  mem_quota = mem_choice_to_quota(mem)
         
     | 
| 
       400 
406 
     | 
    
         | 
| 
       401 
407 
     | 
    
         
             
                  # check memsize here for capacity
         
     | 
| 
       402 
     | 
    
         
            -
                  check_has_capacity_for(mem_quota)
         
     | 
| 
      
 408 
     | 
    
         
            +
                  check_has_capacity_for(mem_quota) unless no_start
         
     | 
| 
       403 
409 
     | 
    
         | 
| 
       404 
410 
     | 
    
         
             
                  display 'Creating Application: ', false
         
     | 
| 
       405 
411 
     | 
    
         | 
| 
         @@ -476,11 +482,12 @@ module VMC::Cli::Command 
     | 
|
| 
       476 
482 
     | 
    
         
             
                      total_size = 0
         
     | 
| 
       477 
483 
     | 
    
         
             
                      resource_files = Dir.glob("#{explode_dir}/**/*", File::FNM_DOTMATCH)
         
     | 
| 
       478 
484 
     | 
    
         
             
                      resource_files.each do |filename|
         
     | 
| 
      
 485 
     | 
    
         
            +
                        next if (File.directory?(filename) || !File.exists?(filename))
         
     | 
| 
       479 
486 
     | 
    
         
             
                        fingerprints << {
         
     | 
| 
       480 
487 
     | 
    
         
             
                          :size => File.size(filename),
         
     | 
| 
       481 
488 
     | 
    
         
             
                          :sha1 => Digest::SHA1.file(filename).hexdigest,
         
     | 
| 
       482 
489 
     | 
    
         
             
                          :fn => filename
         
     | 
| 
       483 
     | 
    
         
            -
                        } 
     | 
| 
      
 490 
     | 
    
         
            +
                        }
         
     | 
| 
       484 
491 
     | 
    
         
             
                        total_size += File.size(filename)
         
     | 
| 
       485 
492 
     | 
    
         
             
                      end
         
     | 
| 
       486 
493 
     | 
    
         | 
| 
         @@ -504,6 +511,15 @@ module VMC::Cli::Command 
     | 
|
| 
       504 
511 
     | 
    
         | 
| 
       505 
512 
     | 
    
         
             
                    end
         
     | 
| 
       506 
513 
     | 
    
         | 
| 
      
 514 
     | 
    
         
            +
                    # It's possible the CC tells us that we don't need to pack anything.
         
     | 
| 
      
 515 
     | 
    
         
            +
                    # If so, exit early.
         
     | 
| 
      
 516 
     | 
    
         
            +
                    if VMC::Cli::ZipUtil.get_files_to_pack(explode_dir).empty?
         
     | 
| 
      
 517 
     | 
    
         
            +
                      display '  No resources need to be uploaded'
         
     | 
| 
      
 518 
     | 
    
         
            +
                      display 'Push Status: ', false
         
     | 
| 
      
 519 
     | 
    
         
            +
                      display 'OK'.green
         
     | 
| 
      
 520 
     | 
    
         
            +
                      return
         
     | 
| 
      
 521 
     | 
    
         
            +
                    end
         
     | 
| 
      
 522 
     | 
    
         
            +
             
     | 
| 
       507 
523 
     | 
    
         
             
                    # Perform Packing of the upload bits here.
         
     | 
| 
       508 
524 
     | 
    
         
             
                    display '  Packing application: ', false
         
     | 
| 
       509 
525 
     | 
    
         
             
                    VMC::Cli::ZipUtil.pack(explode_dir, upload_file)
         
     | 
| 
         @@ -768,7 +784,7 @@ module VMC::Cli::Command 
     | 
|
| 
       768 
784 
     | 
    
         
             
                  map = VMC::Cli::Config.instances
         
     | 
| 
       769 
785 
     | 
    
         
             
                  instance = map[instance] if map[instance]
         
     | 
| 
       770 
786 
     | 
    
         | 
| 
       771 
     | 
    
         
            -
                  ['/logs/err.log', 'logs/stderr.log', 'logs/stdout.log', 'logs/startup.log'].each do |path|
         
     | 
| 
      
 787 
     | 
    
         
            +
                  ['/logs/err.log', '/logs/staging.log', 'logs/stderr.log', 'logs/stdout.log', 'logs/startup.log'].each do |path|
         
     | 
| 
       772 
788 
     | 
    
         
             
                    begin
         
     | 
| 
       773 
789 
     | 
    
         
             
                      content = client.app_files(appname, path, instance)
         
     | 
| 
       774 
790 
     | 
    
         
             
                    rescue
         
     | 
| 
         @@ -803,7 +819,7 @@ module VMC::Cli::Command 
     | 
|
| 
       803 
819 
     | 
    
         
             
                  @read ||= 0
         
     | 
| 
       804 
820 
     | 
    
         
             
                  @read += rsize
         
     | 
| 
       805 
821 
     | 
    
         
             
                  p = (@read * 100 / FileWithPercentOutput.upload_size).to_i
         
     | 
| 
       806 
     | 
    
         
            -
                  unless VMC::Cli::Config.output.nil?
         
     | 
| 
      
 822 
     | 
    
         
            +
                  unless VMC::Cli::Config.output.nil? || !STDOUT.tty?
         
     | 
| 
       807 
823 
     | 
    
         
             
                    clear(FileWithPercentOutput.display_str.size + 5)
         
     | 
| 
       808 
824 
     | 
    
         
             
                    VMC::Cli::Config.output.print("#{FileWithPercentOutput.display_str} #{p}%")
         
     | 
| 
       809 
825 
     | 
    
         
             
                    VMC::Cli::Config.output.flush
         
     | 
| 
         @@ -815,7 +831,7 @@ module VMC::Cli::Command 
     | 
|
| 
       815 
831 
     | 
    
         
             
                  if result && result.size > 0
         
     | 
| 
       816 
832 
     | 
    
         
             
                    update_display(result.size)
         
     | 
| 
       817 
833 
     | 
    
         
             
                  else
         
     | 
| 
       818 
     | 
    
         
            -
                    unless VMC::Cli::Config.output.nil?
         
     | 
| 
      
 834 
     | 
    
         
            +
                    unless VMC::Cli::Config.output.nil? || !STDOUT.tty?
         
     | 
| 
       819 
835 
     | 
    
         
             
                      clear(FileWithPercentOutput.display_str.size + 5)
         
     | 
| 
       820 
836 
     | 
    
         
             
                      VMC::Cli::Config.output.print(FileWithPercentOutput.display_str)
         
     | 
| 
       821 
837 
     | 
    
         
             
                      display('OK'.green)
         
     | 
    
        data/lib/cli/commands/user.rb
    CHANGED
    
    | 
         @@ -21,7 +21,7 @@ module VMC::Cli::Command 
     | 
|
| 
       21 
21 
     | 
    
         
             
                  say "Successfully logged into [#{target_url}]".green
         
     | 
| 
       22 
22 
     | 
    
         
             
                rescue VMC::Client::TargetError
         
     | 
| 
       23 
23 
     | 
    
         
             
                  display "Problem with login, invalid account or password.".red
         
     | 
| 
       24 
     | 
    
         
            -
                  retry if (tries += 1) < 3 && prompt_ok
         
     | 
| 
      
 24 
     | 
    
         
            +
                  retry if (tries += 1) < 3 && prompt_ok && !@options[:password]
         
     | 
| 
       25 
25 
     | 
    
         
             
                  exit 1
         
     | 
| 
       26 
26 
     | 
    
         
             
                rescue => e
         
     | 
| 
       27 
27 
     | 
    
         
             
                  display "Problem with login, #{e}, try again or register for an account.".red
         
     | 
    
        data/lib/cli/frameworks.rb
    CHANGED
    
    | 
         @@ -6,13 +6,13 @@ module VMC::Cli 
     | 
|
| 
       6 
6 
     | 
    
         
             
                DEFAULT_MEM = '256M'
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
                FRAMEWORKS = {
         
     | 
| 
       9 
     | 
    
         
            -
                  'Rails'    => ['rails/1.0', 
     | 
| 
       10 
     | 
    
         
            -
                  'Spring'   => ['spring_web/1.0', 
     | 
| 
       11 
     | 
    
         
            -
                  'Grails'   => ['grails/1.0', 
     | 
| 
       12 
     | 
    
         
            -
                  'Roo'      => ['spring_web/1.0', 
     | 
| 
       13 
     | 
    
         
            -
                  'JavaWeb'  => ['spring_web/1.0', 
     | 
| 
      
 9 
     | 
    
         
            +
                  'Rails'    => ['rails/1.0',       { :mem => '256M', :description => 'Rails Application'}],
         
     | 
| 
      
 10 
     | 
    
         
            +
                  'Spring'   => ['spring_web/1.0',  { :mem => '512M', :description => 'Java SpringSource Spring Application'}],
         
     | 
| 
      
 11 
     | 
    
         
            +
                  'Grails'   => ['grails/1.0',      { :mem => '512M', :description => 'Java SpringSource Grails Application'}],
         
     | 
| 
      
 12 
     | 
    
         
            +
                  'Roo'      => ['spring_web/1.0',  { :mem => '512M', :description => 'Java SpringSource Roo Application'}],
         
     | 
| 
      
 13 
     | 
    
         
            +
                  'JavaWeb'  => ['spring_web/1.0',  { :mem => '512M', :description => 'Java Web Application'}],
         
     | 
| 
       14 
14 
     | 
    
         
             
                  'Sinatra'  => [DEFAULT_FRAMEWORK, { :mem => '128M', :description => 'Sinatra Application'}],
         
     | 
| 
       15 
     | 
    
         
            -
                  'Node'     => ['nodejs/1.0', 
     | 
| 
      
 15 
     | 
    
         
            +
                  'Node'     => ['nodejs/1.0',      { :mem => '64M',  :description => 'Node.js Application'}],
         
     | 
| 
       16 
16 
     | 
    
         
             
                }
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
       18 
18 
     | 
    
         
             
                class << self
         
     | 
| 
         @@ -38,7 +38,7 @@ module VMC::Cli 
     | 
|
| 
       38 
38 
     | 
    
         
             
                        contents = ZipUtil.entry_lines(war_file)
         
     | 
| 
       39 
39 
     | 
    
         | 
| 
       40 
40 
     | 
    
         
             
                        # Spring Variations
         
     | 
| 
       41 
     | 
    
         
            -
                        if contents =~ /WEB-INF\/grails- 
     | 
| 
      
 41 
     | 
    
         
            +
                        if contents =~ /WEB-INF\/lib\/grails-web.*\.jar/
         
     | 
| 
       42 
42 
     | 
    
         
             
                          return Framework.lookup('Grails')
         
     | 
| 
       43 
43 
     | 
    
         
             
                        elsif contents =~ /WEB-INF\/classes\/org\/springframework/
         
     | 
| 
       44 
44 
     | 
    
         
             
                          return Framework.lookup('Spring')
         
     | 
| 
         @@ -58,13 +58,13 @@ module VMC::Cli 
     | 
|
| 
       58 
58 
     | 
    
         
             
                            matched_file = fname if (str && str.match(/^\s*require\s*'sinatra'/))
         
     | 
| 
       59 
59 
     | 
    
         
             
                          end
         
     | 
| 
       60 
60 
     | 
    
         
             
                        end
         
     | 
| 
       61 
     | 
    
         
            -
                        if matched_file 
     | 
| 
      
 61 
     | 
    
         
            +
                        if matched_file
         
     | 
| 
       62 
62 
     | 
    
         
             
                          f = Framework.lookup('Sinatra')
         
     | 
| 
       63 
63 
     | 
    
         
             
                          f.exec = "ruby #{matched_file}"
         
     | 
| 
       64 
64 
     | 
    
         
             
                          return f
         
     | 
| 
       65 
65 
     | 
    
         
             
                        end
         
     | 
| 
       66 
66 
     | 
    
         | 
| 
       67 
     | 
    
         
            -
                      # Node. 
     | 
| 
      
 67 
     | 
    
         
            +
                      # Node.js
         
     | 
| 
       68 
68 
     | 
    
         
             
                      elsif !Dir.glob('*.js').empty?
         
     | 
| 
       69 
69 
     | 
    
         
             
                        # Fixme, make other files work too..
         
     | 
| 
       70 
70 
     | 
    
         
             
                        if File.exist?('app.js') || File.exist?('index.js') || File.exist?('main.js')
         
     | 
    
        data/lib/cli/runner.rb
    CHANGED
    
    | 
         @@ -81,11 +81,20 @@ class VMC::Cli::Runner 
     | 
|
| 
       81 
81 
     | 
    
         | 
| 
       82 
82 
     | 
    
         
             
                  opts.on_tail('--options')    {          puts "#{opts}\n"; exit }
         
     | 
| 
       83 
83 
     | 
    
         
             
                end
         
     | 
| 
      
 84 
     | 
    
         
            +
                instances_delta_arg = check_instances_delta!
         
     | 
| 
       84 
85 
     | 
    
         
             
                @args = opts_parser.parse!(@args)
         
     | 
| 
      
 86 
     | 
    
         
            +
                @args.concat instances_delta_arg
         
     | 
| 
       85 
87 
     | 
    
         
             
                convert_options!
         
     | 
| 
       86 
88 
     | 
    
         
             
                self
         
     | 
| 
       87 
89 
     | 
    
         
             
              end
         
     | 
| 
       88 
90 
     | 
    
         | 
| 
      
 91 
     | 
    
         
            +
              def check_instances_delta!
         
     | 
| 
      
 92 
     | 
    
         
            +
                return unless @args
         
     | 
| 
      
 93 
     | 
    
         
            +
                instance_args = @args.select { |arg| /[-]\d+/ =~ arg } || []
         
     | 
| 
      
 94 
     | 
    
         
            +
                @args.delete_if { |arg| instance_args.include? arg}
         
     | 
| 
      
 95 
     | 
    
         
            +
                instance_args
         
     | 
| 
      
 96 
     | 
    
         
            +
              end
         
     | 
| 
      
 97 
     | 
    
         
            +
             
     | 
| 
       89 
98 
     | 
    
         
             
              def display_help
         
     | 
| 
       90 
99 
     | 
    
         
             
                puts command_usage
         
     | 
| 
       91 
100 
     | 
    
         
             
                exit
         
     | 
| 
         @@ -349,9 +358,12 @@ class VMC::Cli::Runner 
     | 
|
| 
       349 
358 
     | 
    
         
             
              def process_aliases!
         
     | 
| 
       350 
359 
     | 
    
         
             
                return if @args.empty?
         
     | 
| 
       351 
360 
     | 
    
         
             
                aliases = VMC::Cli::Config.aliases
         
     | 
| 
       352 
     | 
    
         
            -
                 
     | 
| 
       353 
     | 
    
         
            -
                   
     | 
| 
       354 
     | 
    
         
            -
             
     | 
| 
      
 361 
     | 
    
         
            +
                aliases.each_pair do |k,v|
         
     | 
| 
      
 362 
     | 
    
         
            +
                  if @args[0] == k
         
     | 
| 
      
 363 
     | 
    
         
            +
                    display "[#{@args[0]} aliased to #{aliases.invert[key]}]" if @options[:verbose]
         
     | 
| 
      
 364 
     | 
    
         
            +
                    @args[0] = v
         
     | 
| 
      
 365 
     | 
    
         
            +
                    break;
         
     | 
| 
      
 366 
     | 
    
         
            +
                  end
         
     | 
| 
       355 
367 
     | 
    
         
             
                end
         
     | 
| 
       356 
368 
     | 
    
         
             
              end
         
     | 
| 
       357 
369 
     | 
    
         | 
| 
         @@ -366,8 +378,9 @@ class VMC::Cli::Runner 
     | 
|
| 
       366 
378 
     | 
    
         
             
              end
         
     | 
| 
       367 
379 
     | 
    
         | 
| 
       368 
380 
     | 
    
         
             
              def run
         
     | 
| 
      
 381 
     | 
    
         
            +
             
     | 
| 
       369 
382 
     | 
    
         
             
                trap('TERM') { print "\nInterupted\n"; exit(false)}
         
     | 
| 
       370 
     | 
    
         
            -
                trap( 
     | 
| 
      
 383 
     | 
    
         
            +
                trap('INT')  { print "\nInterupted\n"; exit(false)}
         
     | 
| 
       371 
384 
     | 
    
         | 
| 
       372 
385 
     | 
    
         
             
                parse_options!
         
     | 
| 
       373 
386 
     | 
    
         | 
| 
         @@ -406,6 +419,9 @@ class VMC::Cli::Runner 
     | 
|
| 
       406 
419 
     | 
    
         
             
              rescue VMC::Client::TargetError, VMC::Client::NotFound, VMC::Client::BadTarget  => e
         
     | 
| 
       407 
420 
     | 
    
         
             
                puts e.message.red
         
     | 
| 
       408 
421 
     | 
    
         
             
                @exit_status = false
         
     | 
| 
      
 422 
     | 
    
         
            +
              rescue VMC::Client::HTTPException => e
         
     | 
| 
      
 423 
     | 
    
         
            +
                puts e.message.red
         
     | 
| 
      
 424 
     | 
    
         
            +
                @exit_status = false
         
     | 
| 
       409 
425 
     | 
    
         
             
              rescue VMC::Cli::GracefulExit => e
         
     | 
| 
       410 
426 
     | 
    
         
             
                # Redirected commands end up generating this exception (kind of goto)
         
     | 
| 
       411 
427 
     | 
    
         
             
              rescue VMC::Cli::CliExit => e
         
     | 
    
        data/lib/cli/usage.rb
    CHANGED
    
    
    
        data/lib/cli/version.rb
    CHANGED
    
    
    
        data/lib/cli/zip_util.rb
    CHANGED
    
    | 
         @@ -5,6 +5,8 @@ module VMC::Cli 
     | 
|
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
              class ZipUtil
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
      
 8 
     | 
    
         
            +
                PACK_EXCLUSION_GLOBS = ['..', '.', '*~', '#*#', '*.log']
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
       8 
10 
     | 
    
         
             
                class << self
         
     | 
| 
       9 
11 
     | 
    
         
             
                  def entry_lines(file)
         
     | 
| 
       10 
12 
     | 
    
         
             
                    contents = nil
         
     | 
| 
         @@ -36,22 +38,27 @@ module VMC::Cli 
     | 
|
| 
       36 
38 
     | 
    
         
             
                    end
         
     | 
| 
       37 
39 
     | 
    
         
             
                  end
         
     | 
| 
       38 
40 
     | 
    
         | 
| 
      
 41 
     | 
    
         
            +
                  def get_files_to_pack(dir)
         
     | 
| 
      
 42 
     | 
    
         
            +
                    Dir.glob("#{dir}/**/*", File::FNM_DOTMATCH).select do |f|
         
     | 
| 
      
 43 
     | 
    
         
            +
                      process = true
         
     | 
| 
      
 44 
     | 
    
         
            +
                      PACK_EXCLUSION_GLOBS.each { |e| process = false if File.fnmatch(e, File.basename(f)) }
         
     | 
| 
      
 45 
     | 
    
         
            +
                      process && File.exists?(f)
         
     | 
| 
      
 46 
     | 
    
         
            +
                    end
         
     | 
| 
      
 47 
     | 
    
         
            +
                  end
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
       39 
49 
     | 
    
         
             
                  def pack(dir, zipfile)
         
     | 
| 
       40 
     | 
    
         
            -
                    exclude = ['..', '.', '*~', '#*#', '*.log']
         
     | 
| 
       41 
50 
     | 
    
         
             
                    unless VMC::Cli::Config.nozip
         
     | 
| 
       42 
     | 
    
         
            -
                      excludes =  
     | 
| 
      
 51 
     | 
    
         
            +
                      excludes = PACK_EXCLUSION_GLOBS.map { |e| "\\#{e}" }
         
     | 
| 
       43 
52 
     | 
    
         
             
                      excludes = excludes.join(' ')
         
     | 
| 
       44 
53 
     | 
    
         
             
                      Dir.chdir(dir) do
         
     | 
| 
       45 
     | 
    
         
            -
                        `zip -q -r -x #{excludes}  
     | 
| 
      
 54 
     | 
    
         
            +
                        `zip -q -r #{zipfile} . -x #{excludes} 2> /dev/null`
         
     | 
| 
       46 
55 
     | 
    
         
             
                        return unless $? != 0
         
     | 
| 
       47 
56 
     | 
    
         
             
                      end
         
     | 
| 
       48 
57 
     | 
    
         
             
                    end
         
     | 
| 
       49 
58 
     | 
    
         
             
                    # Do Ruby version if told to or native version failed
         
     | 
| 
       50 
59 
     | 
    
         
             
                    Zip::ZipFile::open(zipfile, true) do |zf|
         
     | 
| 
       51 
     | 
    
         
            -
                       
     | 
| 
       52 
     | 
    
         
            -
                         
     | 
| 
       53 
     | 
    
         
            -
                        exclude.each { |e| process = false if File.fnmatch(e, File.basename(f)) }
         
     | 
| 
       54 
     | 
    
         
            -
                        zf.add(f.sub("#{dir}/",''), f) if (process && File.exists?(f))
         
     | 
| 
      
 60 
     | 
    
         
            +
                      get_files_to_pack(dir).each do |f|
         
     | 
| 
      
 61 
     | 
    
         
            +
                        zf.add(f.sub("#{dir}/",''), f)
         
     | 
| 
       55 
62 
     | 
    
         
             
                      end
         
     | 
| 
       56 
63 
     | 
    
         
             
                    end
         
     | 
| 
       57 
64 
     | 
    
         
             
                  end
         
     | 
    
        data/lib/vmc/client.rb
    CHANGED
    
    | 
         @@ -12,7 +12,7 @@ 
     | 
|
| 
       12 
12 
     | 
    
         
             
            require 'rubygems'
         
     | 
| 
       13 
13 
     | 
    
         
             
            require 'json/pure'
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
            require File. 
     | 
| 
      
 15 
     | 
    
         
            +
            require File.expand_path('../const', __FILE__)
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
       17 
17 
     | 
    
         
             
            class VMC::Client
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
         @@ -378,8 +378,8 @@ class VMC::Client 
     | 
|
| 
       378 
378 
     | 
    
         
             
                result
         
     | 
| 
       379 
379 
     | 
    
         
             
              rescue Net::HTTPBadResponse => e
         
     | 
| 
       380 
380 
     | 
    
         
             
                raise BadTarget "Received bad HTTP response from target: #{e}"
         
     | 
| 
       381 
     | 
    
         
            -
              rescue RestClient::Exception => e
         
     | 
| 
       382 
     | 
    
         
            -
                raise HTTPException, "HTTP exception: #{e}"
         
     | 
| 
      
 381 
     | 
    
         
            +
              rescue SystemCallError, RestClient::Exception => e
         
     | 
| 
      
 382 
     | 
    
         
            +
                raise HTTPException, "HTTP exception: #{e.class}:#{e}"
         
     | 
| 
       383 
383 
     | 
    
         
             
              end
         
     | 
| 
       384 
384 
     | 
    
         | 
| 
       385 
385 
     | 
    
         
             
              def truncate(str, limit = 30)
         
     | 
    
        data/lib/vmc/const.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,13 +1,8 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: vmc
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
              hash: 31
         
     | 
| 
       5 
4 
     | 
    
         
             
              prerelease: 
         
     | 
| 
       6 
     | 
    
         
            -
               
     | 
| 
       7 
     | 
    
         
            -
              - 0
         
     | 
| 
       8 
     | 
    
         
            -
              - 2
         
     | 
| 
       9 
     | 
    
         
            -
              - 4
         
     | 
| 
       10 
     | 
    
         
            -
              version: 0.2.4
         
     | 
| 
      
 5 
     | 
    
         
            +
              version: 0.2.6
         
     | 
| 
       11 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       12 
7 
     | 
    
         
             
            authors: 
         
     | 
| 
       13 
8 
     | 
    
         
             
            - VMware
         
     | 
| 
         @@ -15,7 +10,7 @@ autorequire: 
     | 
|
| 
       15 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       16 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       17 
12 
     | 
    
         | 
| 
       18 
     | 
    
         
            -
            date: 2011- 
     | 
| 
      
 13 
     | 
    
         
            +
            date: 2011-04-02 00:00:00 -05:00
         
     | 
| 
       19 
14 
     | 
    
         
             
            default_executable: 
         
     | 
| 
       20 
15 
     | 
    
         
             
            dependencies: 
         
     | 
| 
       21 
16 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
         @@ -26,11 +21,6 @@ dependencies: 
     | 
|
| 
       26 
21 
     | 
    
         
             
                requirements: 
         
     | 
| 
       27 
22 
     | 
    
         
             
                - - ~>
         
     | 
| 
       28 
23 
     | 
    
         
             
                  - !ruby/object:Gem::Version 
         
     | 
| 
       29 
     | 
    
         
            -
                    hash: 1
         
     | 
| 
       30 
     | 
    
         
            -
                    segments: 
         
     | 
| 
       31 
     | 
    
         
            -
                    - 1
         
     | 
| 
       32 
     | 
    
         
            -
                    - 5
         
     | 
| 
       33 
     | 
    
         
            -
                    - 1
         
     | 
| 
       34 
24 
     | 
    
         
             
                    version: 1.5.1
         
     | 
| 
       35 
25 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       36 
26 
     | 
    
         
             
              version_requirements: *id001
         
     | 
| 
         @@ -42,11 +32,6 @@ dependencies: 
     | 
|
| 
       42 
32 
     | 
    
         
             
                requirements: 
         
     | 
| 
       43 
33 
     | 
    
         
             
                - - ~>
         
     | 
| 
       44 
34 
     | 
    
         
             
                  - !ruby/object:Gem::Version 
         
     | 
| 
       45 
     | 
    
         
            -
                    hash: 13
         
     | 
| 
       46 
     | 
    
         
            -
                    segments: 
         
     | 
| 
       47 
     | 
    
         
            -
                    - 2
         
     | 
| 
       48 
     | 
    
         
            -
                    - 0
         
     | 
| 
       49 
     | 
    
         
            -
                    - 1
         
     | 
| 
       50 
35 
     | 
    
         
             
                    version: 2.0.1
         
     | 
| 
       51 
36 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       52 
37 
     | 
    
         
             
              version_requirements: *id002
         
     | 
| 
         @@ -58,11 +43,6 @@ dependencies: 
     | 
|
| 
       58 
43 
     | 
    
         
             
                requirements: 
         
     | 
| 
       59 
44 
     | 
    
         
             
                - - ~>
         
     | 
| 
       60 
45 
     | 
    
         
             
                  - !ruby/object:Gem::Version 
         
     | 
| 
       61 
     | 
    
         
            -
                    hash: 13
         
     | 
| 
       62 
     | 
    
         
            -
                    segments: 
         
     | 
| 
       63 
     | 
    
         
            -
                    - 1
         
     | 
| 
       64 
     | 
    
         
            -
                    - 6
         
     | 
| 
       65 
     | 
    
         
            -
                    - 1
         
     | 
| 
       66 
46 
     | 
    
         
             
                    version: 1.6.1
         
     | 
| 
       67 
47 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       68 
48 
     | 
    
         
             
              version_requirements: *id003
         
     | 
| 
         @@ -74,19 +54,9 @@ dependencies: 
     | 
|
| 
       74 
54 
     | 
    
         
             
                requirements: 
         
     | 
| 
       75 
55 
     | 
    
         
             
                - - ">="
         
     | 
| 
       76 
56 
     | 
    
         
             
                  - !ruby/object:Gem::Version 
         
     | 
| 
       77 
     | 
    
         
            -
                    hash: 13
         
     | 
| 
       78 
     | 
    
         
            -
                    segments: 
         
     | 
| 
       79 
     | 
    
         
            -
                    - 1
         
     | 
| 
       80 
     | 
    
         
            -
                    - 6
         
     | 
| 
       81 
     | 
    
         
            -
                    - 1
         
     | 
| 
       82 
57 
     | 
    
         
             
                    version: 1.6.1
         
     | 
| 
       83 
58 
     | 
    
         
             
                - - <
         
     | 
| 
       84 
59 
     | 
    
         
             
                  - !ruby/object:Gem::Version 
         
     | 
| 
       85 
     | 
    
         
            -
                    hash: 11
         
     | 
| 
       86 
     | 
    
         
            -
                    segments: 
         
     | 
| 
       87 
     | 
    
         
            -
                    - 1
         
     | 
| 
       88 
     | 
    
         
            -
                    - 7
         
     | 
| 
       89 
     | 
    
         
            -
                    - 0
         
     | 
| 
       90 
60 
     | 
    
         
             
                    version: 1.7.0
         
     | 
| 
       91 
61 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       92 
62 
     | 
    
         
             
              version_requirements: *id004
         
     | 
| 
         @@ -98,11 +68,6 @@ dependencies: 
     | 
|
| 
       98 
68 
     | 
    
         
             
                requirements: 
         
     | 
| 
       99 
69 
     | 
    
         
             
                - - ~>
         
     | 
| 
       100 
70 
     | 
    
         
             
                  - !ruby/object:Gem::Version 
         
     | 
| 
       101 
     | 
    
         
            -
                    hash: 3
         
     | 
| 
       102 
     | 
    
         
            -
                    segments: 
         
     | 
| 
       103 
     | 
    
         
            -
                    - 1
         
     | 
| 
       104 
     | 
    
         
            -
                    - 4
         
     | 
| 
       105 
     | 
    
         
            -
                    - 2
         
     | 
| 
       106 
71 
     | 
    
         
             
                    version: 1.4.2
         
     | 
| 
       107 
72 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       108 
73 
     | 
    
         
             
              version_requirements: *id005
         
     | 
| 
         @@ -114,9 +79,6 @@ dependencies: 
     | 
|
| 
       114 
79 
     | 
    
         
             
                requirements: 
         
     | 
| 
       115 
80 
     | 
    
         
             
                - - ">="
         
     | 
| 
       116 
81 
     | 
    
         
             
                  - !ruby/object:Gem::Version 
         
     | 
| 
       117 
     | 
    
         
            -
                    hash: 3
         
     | 
| 
       118 
     | 
    
         
            -
                    segments: 
         
     | 
| 
       119 
     | 
    
         
            -
                    - 0
         
     | 
| 
       120 
82 
     | 
    
         
             
                    version: "0"
         
     | 
| 
       121 
83 
     | 
    
         
             
              type: :development
         
     | 
| 
       122 
84 
     | 
    
         
             
              version_requirements: *id006
         
     | 
| 
         @@ -128,11 +90,6 @@ dependencies: 
     | 
|
| 
       128 
90 
     | 
    
         
             
                requirements: 
         
     | 
| 
       129 
91 
     | 
    
         
             
                - - ~>
         
     | 
| 
       130 
92 
     | 
    
         
             
                  - !ruby/object:Gem::Version 
         
     | 
| 
       131 
     | 
    
         
            -
                    hash: 27
         
     | 
| 
       132 
     | 
    
         
            -
                    segments: 
         
     | 
| 
       133 
     | 
    
         
            -
                    - 1
         
     | 
| 
       134 
     | 
    
         
            -
                    - 3
         
     | 
| 
       135 
     | 
    
         
            -
                    - 0
         
     | 
| 
       136 
93 
     | 
    
         
             
                    version: 1.3.0
         
     | 
| 
       137 
94 
     | 
    
         
             
              type: :development
         
     | 
| 
       138 
95 
     | 
    
         
             
              version_requirements: *id007
         
     | 
| 
         @@ -144,11 +101,6 @@ dependencies: 
     | 
|
| 
       144 
101 
     | 
    
         
             
                requirements: 
         
     | 
| 
       145 
102 
     | 
    
         
             
                - - ~>
         
     | 
| 
       146 
103 
     | 
    
         
             
                  - !ruby/object:Gem::Version 
         
     | 
| 
       147 
     | 
    
         
            -
                    hash: 3
         
     | 
| 
       148 
     | 
    
         
            -
                    segments: 
         
     | 
| 
       149 
     | 
    
         
            -
                    - 1
         
     | 
| 
       150 
     | 
    
         
            -
                    - 5
         
     | 
| 
       151 
     | 
    
         
            -
                    - 0
         
     | 
| 
       152 
104 
     | 
    
         
             
                    version: 1.5.0
         
     | 
| 
       153 
105 
     | 
    
         
             
              type: :development
         
     | 
| 
       154 
106 
     | 
    
         
             
              version_requirements: *id008
         
     | 
| 
         @@ -219,23 +171,17 @@ required_ruby_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       219 
171 
     | 
    
         
             
              requirements: 
         
     | 
| 
       220 
172 
     | 
    
         
             
              - - ">="
         
     | 
| 
       221 
173 
     | 
    
         
             
                - !ruby/object:Gem::Version 
         
     | 
| 
       222 
     | 
    
         
            -
                  hash: 3
         
     | 
| 
       223 
     | 
    
         
            -
                  segments: 
         
     | 
| 
       224 
     | 
    
         
            -
                  - 0
         
     | 
| 
       225 
174 
     | 
    
         
             
                  version: "0"
         
     | 
| 
       226 
175 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement 
         
     | 
| 
       227 
176 
     | 
    
         
             
              none: false
         
     | 
| 
       228 
177 
     | 
    
         
             
              requirements: 
         
     | 
| 
       229 
178 
     | 
    
         
             
              - - ">="
         
     | 
| 
       230 
179 
     | 
    
         
             
                - !ruby/object:Gem::Version 
         
     | 
| 
       231 
     | 
    
         
            -
                  hash: 3
         
     | 
| 
       232 
     | 
    
         
            -
                  segments: 
         
     | 
| 
       233 
     | 
    
         
            -
                  - 0
         
     | 
| 
       234 
180 
     | 
    
         
             
                  version: "0"
         
     | 
| 
       235 
181 
     | 
    
         
             
            requirements: []
         
     | 
| 
       236 
182 
     | 
    
         | 
| 
       237 
183 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       238 
     | 
    
         
            -
            rubygems_version: 1. 
     | 
| 
      
 184 
     | 
    
         
            +
            rubygems_version: 1.6.2
         
     | 
| 
       239 
185 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       240 
186 
     | 
    
         
             
            specification_version: 3
         
     | 
| 
       241 
187 
     | 
    
         
             
            summary: Client library and CLI that provides access to the VMware Cloud Application Platform.
         
     |