bosh_cli 1.0.1 → 1.0.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.
- data/lib/cli.rb +0 -3
- data/lib/cli/base_command.rb +14 -3
- data/lib/cli/commands/cloudcheck.rb +5 -4
- data/lib/cli/commands/deployment.rb +17 -6
- data/lib/cli/commands/help.rb +6 -2
- data/lib/cli/commands/job_management.rb +2 -2
- data/lib/cli/commands/job_rename.rb +2 -2
- data/lib/cli/commands/log_management.rb +1 -0
- data/lib/cli/commands/misc.rb +26 -0
- data/lib/cli/commands/release.rb +6 -6
- data/lib/cli/commands/ssh.rb +3 -0
- data/lib/cli/commands/stemcell.rb +6 -4
- data/lib/cli/commands/vms.rb +1 -0
- data/lib/cli/core_ext.rb +1 -1
- data/lib/cli/release_compiler.rb +5 -4
- data/lib/cli/runner.rb +9 -8
- data/lib/cli/task_tracker.rb +5 -1
- data/lib/cli/version.rb +1 -1
- data/spec/unit/job_property_validator_spec.rb +1 -1
- data/spec/unit/task_tracker_spec.rb +4 -0
- metadata +4 -4
    
        data/lib/cli.rb
    CHANGED
    
    
    
        data/lib/cli/base_command.rb
    CHANGED
    
    | @@ -48,7 +48,8 @@ module Bosh::Cli | |
| 48 48 | 
             
                  end
         | 
| 49 49 |  | 
| 50 50 | 
             
                  def director
         | 
| 51 | 
            -
                    @director ||= Bosh::Cli::Director.new( | 
| 51 | 
            +
                    @director ||= Bosh::Cli::Director.new(
         | 
| 52 | 
            +
                      target, username, password, @options.select {|k,v| k == :no_track})
         | 
| 52 53 | 
             
                  end
         | 
| 53 54 |  | 
| 54 55 | 
             
                  def release
         | 
| @@ -132,12 +133,15 @@ module Bosh::Cli | |
| 132 133 | 
             
                  # contains pretty detailed error report and other UI niceties, so most
         | 
| 133 134 | 
             
                  # of the time this could just do nothing
         | 
| 134 135 | 
             
                  # @param [Symbol] status Task status
         | 
| 135 | 
            -
                   | 
| 136 | 
            +
                  # @param [#to_s] task_id Task ID
         | 
| 137 | 
            +
                  def task_report(status, task_id, success_msg = nil, error_msg = nil)
         | 
| 136 138 | 
             
                    case status
         | 
| 137 139 | 
             
                      when :non_trackable
         | 
| 138 140 | 
             
                        report = "Can't track director task".red
         | 
| 139 141 | 
             
                      when :track_timeout
         | 
| 140 142 | 
             
                        report = "Task tracking timeout".red
         | 
| 143 | 
            +
                      when :running
         | 
| 144 | 
            +
                        report = "Director task #{task_id.yellow} is running"
         | 
| 141 145 | 
             
                      when :error
         | 
| 142 146 | 
             
                        report = error_msg
         | 
| 143 147 | 
             
                      when :done
         | 
| @@ -168,6 +172,12 @@ module Bosh::Cli | |
| 168 172 | 
             
                    err("Please choose deployment first") if deployment.nil?
         | 
| 169 173 | 
             
                  end
         | 
| 170 174 |  | 
| 175 | 
            +
                  def no_track_unsupported
         | 
| 176 | 
            +
                    if @options.delete(:no_track)
         | 
| 177 | 
            +
                      say("Ignoring `" + "--no-track".yellow + "' option")
         | 
| 178 | 
            +
                    end
         | 
| 179 | 
            +
                  end
         | 
| 180 | 
            +
             | 
| 171 181 | 
             
                  def check_if_release_dir
         | 
| 172 182 | 
             
                    unless in_release_dir?
         | 
| 173 183 | 
             
                      err("Sorry, your current directory doesn't look " +
         | 
| @@ -179,7 +189,8 @@ module Bosh::Cli | |
| 179 189 | 
             
                    if dirty_state?
         | 
| 180 190 | 
             
                      say("\n%s\n" % [`git status`])
         | 
| 181 191 | 
             
                      err("Your current directory has some local modifications, " +
         | 
| 182 | 
            -
                          "please discard or commit them first" | 
| 192 | 
            +
                          "please discard or commit them first.\n\n" +
         | 
| 193 | 
            +
                          "Use the --force option to skip this check.")
         | 
| 183 194 | 
             
                    end
         | 
| 184 195 | 
             
                  end
         | 
| 185 196 |  | 
| @@ -15,6 +15,7 @@ module Bosh::Cli::Command | |
| 15 15 | 
             
                       "don't attempt to resolve problems"
         | 
| 16 16 | 
             
                def perform(deployment_name = nil)
         | 
| 17 17 | 
             
                  auth_required
         | 
| 18 | 
            +
                  no_track_unsupported
         | 
| 18 19 | 
             
                  @auto_mode = options[:auto]
         | 
| 19 20 | 
             
                  @report_mode = options[:report]
         | 
| 20 21 |  | 
| @@ -30,10 +31,10 @@ module Bosh::Cli::Command | |
| 30 31 | 
             
                  say("Performing cloud check...")
         | 
| 31 32 | 
             
                  deployment_name ||= prepare_deployment_manifest["name"]
         | 
| 32 33 |  | 
| 33 | 
            -
                  status,  | 
| 34 | 
            +
                  status, task_id = director.perform_cloud_scan(deployment_name)
         | 
| 34 35 |  | 
| 35 36 | 
             
                  if status != :done
         | 
| 36 | 
            -
                    task_report(status)
         | 
| 37 | 
            +
                    task_report(status, task_id)
         | 
| 37 38 | 
             
                    exit(1)
         | 
| 38 39 | 
             
                  end
         | 
| 39 40 |  | 
| @@ -75,10 +76,10 @@ module Bosh::Cli::Command | |
| 75 76 | 
             
                    hash
         | 
| 76 77 | 
             
                  end
         | 
| 77 78 |  | 
| 78 | 
            -
                  status,  | 
| 79 | 
            +
                  status, task_id = director.apply_resolutions(deployment_name, action_map)
         | 
| 79 80 |  | 
| 80 81 | 
             
                  if status != :done
         | 
| 81 | 
            -
                    task_report(status)
         | 
| 82 | 
            +
                    task_report(status, task_id)
         | 
| 82 83 | 
             
                    exit(1)
         | 
| 83 84 | 
             
                  end
         | 
| 84 85 |  | 
| @@ -101,9 +101,9 @@ module Bosh::Cli::Command | |
| 101 101 | 
             
                    cancel_deployment
         | 
| 102 102 | 
             
                  end
         | 
| 103 103 |  | 
| 104 | 
            -
                  status,  | 
| 104 | 
            +
                  status, task_id = director.deploy(manifest_yaml, :recreate => recreate)
         | 
| 105 105 |  | 
| 106 | 
            -
                  task_report(status, "Deployed #{desc}")
         | 
| 106 | 
            +
                  task_report(status, task_id, "Deployed #{desc}")
         | 
| 107 107 | 
             
                end
         | 
| 108 108 |  | 
| 109 109 | 
             
                # bosh delete deployment
         | 
| @@ -123,9 +123,9 @@ module Bosh::Cli::Command | |
| 123 123 | 
             
                    return
         | 
| 124 124 | 
             
                  end
         | 
| 125 125 |  | 
| 126 | 
            -
                  status,  | 
| 126 | 
            +
                  status, task_id = director.delete_deployment(name, :force => force)
         | 
| 127 127 |  | 
| 128 | 
            -
                  task_report(status, "Deleted deployment `#{name}'")
         | 
| 128 | 
            +
                  task_report(status, task_id, "Deleted deployment `#{name}'")
         | 
| 129 129 | 
             
                end
         | 
| 130 130 |  | 
| 131 131 | 
             
                # bosh validate jobs
         | 
| @@ -136,8 +136,19 @@ module Bosh::Cli::Command | |
| 136 136 | 
             
                  check_if_release_dir
         | 
| 137 137 | 
             
                  manifest = prepare_deployment_manifest(:resolve_properties => true)
         | 
| 138 138 |  | 
| 139 | 
            -
                   | 
| 140 | 
            -
             | 
| 139 | 
            +
                  if manifest["release"]
         | 
| 140 | 
            +
                    release_name = manifest["release"]["name"]
         | 
| 141 | 
            +
                  elsif manifest["releases"].count > 1
         | 
| 142 | 
            +
                    err("Cannot validate a deployment manifest with more than 1 release")
         | 
| 143 | 
            +
                  else
         | 
| 144 | 
            +
                    release_name = manifest["releases"].first["name"]
         | 
| 145 | 
            +
                  end
         | 
| 146 | 
            +
                  if release_name == release.dev_name || release_name == release.final_name
         | 
| 147 | 
            +
                    nl
         | 
| 148 | 
            +
                    say("Analyzing release directory...".yellow)
         | 
| 149 | 
            +
                  else
         | 
| 150 | 
            +
                    err("This release was not found in deployment manifest")
         | 
| 151 | 
            +
                  end
         | 
| 141 152 |  | 
| 142 153 | 
             
                  say(" - discovering packages")
         | 
| 143 154 | 
             
                  packages = Bosh::Cli::PackageBuilder.discover(
         | 
    
        data/lib/cli/commands/help.rb
    CHANGED
    
    | @@ -78,10 +78,14 @@ module Bosh::Cli::Command | |
| 78 78 | 
             
                    end
         | 
| 79 79 | 
             
                  end
         | 
| 80 80 |  | 
| 81 | 
            +
                  self.class.list_commands(good_matches)
         | 
| 82 | 
            +
                end
         | 
| 83 | 
            +
             | 
| 84 | 
            +
                def self.list_commands(commands)
         | 
| 81 85 | 
             
                  help_column_width = terminal_width - 5
         | 
| 82 86 | 
             
                  help_indent = 4
         | 
| 83 87 |  | 
| 84 | 
            -
                   | 
| 88 | 
            +
                  commands.each_with_index do |command, i|
         | 
| 85 89 | 
             
                    nl if i > 0
         | 
| 86 90 | 
             
                    margin = command.usage.size + 1
         | 
| 87 91 | 
             
                    say("#{command.usage_with_params.columnize(70, margin).green}")
         | 
| @@ -93,4 +97,4 @@ module Bosh::Cli::Command | |
| 93 97 | 
             
                end
         | 
| 94 98 |  | 
| 95 99 | 
             
              end
         | 
| 96 | 
            -
            end
         | 
| 100 | 
            +
            end
         | 
| @@ -115,10 +115,10 @@ module Bosh::Cli::Command | |
| 115 115 | 
             
                  nl
         | 
| 116 116 | 
             
                  say("Performing `#{op_desc}'...")
         | 
| 117 117 |  | 
| 118 | 
            -
                  status,  | 
| 118 | 
            +
                  status, task_id = director.change_job_state(
         | 
| 119 119 | 
             
                    manifest["name"], manifest_yaml, job, index, new_state)
         | 
| 120 120 |  | 
| 121 | 
            -
                  task_report(status, completion_desc)
         | 
| 121 | 
            +
                  task_report(status, task_id, completion_desc)
         | 
| 122 122 | 
             
                end
         | 
| 123 123 |  | 
| 124 124 | 
             
              end
         | 
| @@ -25,10 +25,10 @@ module Bosh::Cli::Command | |
| 25 25 |  | 
| 26 26 | 
             
                  sanity_check_job_rename(manifest_yaml, old_name, new_name)
         | 
| 27 27 |  | 
| 28 | 
            -
                  status,  | 
| 28 | 
            +
                  status, task_id = director.rename_job(
         | 
| 29 29 | 
             
                    manifest["name"], manifest_yaml, old_name, new_name, force)
         | 
| 30 30 |  | 
| 31 | 
            -
                  task_report(status, "Rename successful")
         | 
| 31 | 
            +
                  task_report(status, task_id, "Rename successful")
         | 
| 32 32 | 
             
                end
         | 
| 33 33 |  | 
| 34 34 | 
             
                def sanity_check_job_rename(manifest_yaml, old_name, new_name)
         | 
    
        data/lib/cli/commands/misc.rb
    CHANGED
    
    | @@ -15,6 +15,9 @@ module Bosh::Cli::Command | |
| 15 15 | 
             
                usage "status"
         | 
| 16 16 | 
             
                desc  "Show current status (current target, user, deployment info etc)"
         | 
| 17 17 | 
             
                def status
         | 
| 18 | 
            +
                  cpi = nil
         | 
| 19 | 
            +
                  features = nil
         | 
| 20 | 
            +
             | 
| 18 21 | 
             
                  if config.target
         | 
| 19 22 | 
             
                    say("Updating director data...", " ")
         | 
| 20 23 |  | 
| @@ -26,6 +29,8 @@ module Bosh::Cli::Command | |
| 26 29 | 
             
                        config.target_name = status["name"]
         | 
| 27 30 | 
             
                        config.target_version = status["version"]
         | 
| 28 31 | 
             
                        config.target_uuid = status["uuid"]
         | 
| 32 | 
            +
                        cpi = status["cpi"]
         | 
| 33 | 
            +
                        features = status["features"]
         | 
| 29 34 | 
             
                        config.save
         | 
| 30 35 | 
             
                        say("done".green)
         | 
| 31 36 | 
             
                      end
         | 
| @@ -46,6 +51,8 @@ module Bosh::Cli::Command | |
| 46 51 | 
             
                    print_value("Version", config.target_version)
         | 
| 47 52 | 
             
                    print_value("User", username, "not logged in")
         | 
| 48 53 | 
             
                    print_value("UUID", config.target_uuid)
         | 
| 54 | 
            +
                    print_value("CPI", cpi, "n/a (update director)")
         | 
| 55 | 
            +
                    print_feature_list(features) if features
         | 
| 49 56 | 
             
                  end
         | 
| 50 57 |  | 
| 51 58 | 
             
                  nl
         | 
| @@ -313,5 +320,24 @@ module Bosh::Cli::Command | |
| 313 320 | 
             
                  say(t) unless t.rows.empty?
         | 
| 314 321 | 
             
                end
         | 
| 315 322 |  | 
| 323 | 
            +
                def print_feature_list(features)
         | 
| 324 | 
            +
                  if features.respond_to?(:each)
         | 
| 325 | 
            +
                    features.each do |feature, status|
         | 
| 326 | 
            +
                      print_value(feature, format_feature_status(status))
         | 
| 327 | 
            +
                    end
         | 
| 328 | 
            +
                  else
         | 
| 329 | 
            +
                    say("Unknown feature list: #{features.inspect}".red)
         | 
| 330 | 
            +
                  end
         | 
| 331 | 
            +
                end
         | 
| 332 | 
            +
             | 
| 333 | 
            +
                def format_feature_status(status)
         | 
| 334 | 
            +
                  if status.nil?
         | 
| 335 | 
            +
                    "n/a"
         | 
| 336 | 
            +
                  elsif status
         | 
| 337 | 
            +
                    "enabled"
         | 
| 338 | 
            +
                  else
         | 
| 339 | 
            +
                    "disabled"
         | 
| 340 | 
            +
                  end
         | 
| 341 | 
            +
                end
         | 
| 316 342 | 
             
              end
         | 
| 317 343 | 
             
            end
         | 
    
        data/lib/cli/commands/release.rb
    CHANGED
    
    | @@ -184,9 +184,9 @@ module Bosh::Cli::Command | |
| 184 184 | 
             
                  end
         | 
| 185 185 |  | 
| 186 186 | 
             
                  if confirmed?
         | 
| 187 | 
            -
                    status,  | 
| 187 | 
            +
                    status, task_id = director.delete_release(
         | 
| 188 188 | 
             
                      name, :force => force, :version => version)
         | 
| 189 | 
            -
                    task_report(status, "Deleted `#{desc}'")
         | 
| 189 | 
            +
                    task_report(status, task_id, "Deleted `#{desc}'")
         | 
| 190 190 | 
             
                  else
         | 
| 191 191 | 
             
                    say("Canceled deleting release".green)
         | 
| 192 192 | 
             
                  end
         | 
| @@ -258,12 +258,12 @@ module Bosh::Cli::Command | |
| 258 258 |  | 
| 259 259 | 
             
                  if rebase
         | 
| 260 260 | 
             
                    say("Uploading release (#{"will be rebased".yellow})")
         | 
| 261 | 
            -
                    status,  | 
| 262 | 
            -
                    task_report(status, "Release rebased")
         | 
| 261 | 
            +
                    status, task_id = director.rebase_release(tarball_path)
         | 
| 262 | 
            +
                    task_report(status, task_id, "Release rebased")
         | 
| 263 263 | 
             
                  else
         | 
| 264 264 | 
             
                    say("\nUploading release\n")
         | 
| 265 | 
            -
                    status,  | 
| 266 | 
            -
                    task_report(status, "Release uploaded")
         | 
| 265 | 
            +
                    status, task_id = director.upload_release(tarball_path)
         | 
| 266 | 
            +
                    task_report(status, task_id, "Release uploaded")
         | 
| 267 267 | 
             
                  end
         | 
| 268 268 | 
             
                end
         | 
| 269 269 |  | 
    
        data/lib/cli/commands/ssh.rb
    CHANGED
    
    | @@ -121,6 +121,7 @@ module Bosh::Cli::Command | |
| 121 121 | 
             
                  end
         | 
| 122 122 |  | 
| 123 123 | 
             
                  if options[:gateway_host]
         | 
| 124 | 
            +
                    require "net/ssh/gateway"
         | 
| 124 125 | 
             
                    gw_host = options[:gateway_host]
         | 
| 125 126 | 
             
                    gw_user = options[:gateway_user] || ENV["USER"]
         | 
| 126 127 | 
             
                    gateway = Net::SSH::Gateway.new(gw_host, gw_user)
         | 
| @@ -255,6 +256,8 @@ module Bosh::Cli::Command | |
| 255 256 | 
             
                  if gateway
         | 
| 256 257 | 
             
                    gateway.ssh(ip, user) { |ssh| yield ssh }
         | 
| 257 258 | 
             
                  else
         | 
| 259 | 
            +
                    require "net/ssh"
         | 
| 260 | 
            +
                    require "net/scp"
         | 
| 258 261 | 
             
                    Net::SSH.start(ip, user) { |ssh| yield ssh }
         | 
| 259 262 | 
             
                  end
         | 
| 260 263 | 
             
                end
         | 
| @@ -69,9 +69,9 @@ module Bosh::Cli::Command | |
| 69 69 | 
             
                  say("Uploading stemcell...")
         | 
| 70 70 | 
             
                  nl
         | 
| 71 71 |  | 
| 72 | 
            -
                  status,  | 
| 72 | 
            +
                  status, task_id = director.upload_stemcell(stemcell.stemcell_file)
         | 
| 73 73 |  | 
| 74 | 
            -
                  task_report(status, "Stemcell uploaded and created")
         | 
| 74 | 
            +
                  task_report(status, task_id, "Stemcell uploaded and created")
         | 
| 75 75 | 
             
                end
         | 
| 76 76 |  | 
| 77 77 | 
             
                # bosh stemcells
         | 
| @@ -105,9 +105,11 @@ module Bosh::Cli::Command | |
| 105 105 | 
             
                desc "Show the list of publicly available stemcells for download."
         | 
| 106 106 | 
             
                option "--full", "show the full download url"
         | 
| 107 107 | 
             
                option "--tags tag1,tag2...", Array, "filter by tag"
         | 
| 108 | 
            +
                option "--all", "show all stemcells"
         | 
| 108 109 | 
             
                def list_public
         | 
| 109 110 | 
             
                  full = !!options[:full]
         | 
| 110 111 | 
             
                  tags = options[:tags] || [DEFAULT_PUB_STEMCELL_TAG]
         | 
| 112 | 
            +
                  tags = [ALL_STEMCELLS_TAG] if options[:all]
         | 
| 111 113 |  | 
| 112 114 | 
             
                  yaml = get_public_stemcell_list
         | 
| 113 115 | 
             
                  stemcells_table = table do |t|
         | 
| @@ -191,9 +193,9 @@ module Bosh::Cli::Command | |
| 191 193 | 
             
                    return
         | 
| 192 194 | 
             
                  end
         | 
| 193 195 |  | 
| 194 | 
            -
                  status,  | 
| 196 | 
            +
                  status, task_id = director.delete_stemcell(name, version)
         | 
| 195 197 |  | 
| 196 | 
            -
                  task_report(status, "Deleted stemcell `#{name}/#{version}'")
         | 
| 198 | 
            +
                  task_report(status, task_id, "Deleted stemcell `#{name}/#{version}'")
         | 
| 197 199 | 
             
                end
         | 
| 198 200 |  | 
| 199 201 | 
             
                private
         | 
    
        data/lib/cli/commands/vms.rb
    CHANGED
    
    
    
        data/lib/cli/core_ext.rb
    CHANGED
    
    
    
        data/lib/cli/release_compiler.rb
    CHANGED
    
    | @@ -146,11 +146,12 @@ module Bosh::Cli | |
| 146 146 | 
             
                  elsif blobstore_id
         | 
| 147 147 | 
             
                    say("FOUND REMOTE".yellow)
         | 
| 148 148 | 
             
                    say("Downloading #{blobstore_id.to_s.green}...")
         | 
| 149 | 
            +
                    tmp_file = Tempfile.new("")
         | 
| 150 | 
            +
                    @blobstore.get(blobstore_id, tmp_file)
         | 
| 151 | 
            +
                    tmp_file.close
         | 
| 149 152 |  | 
| 150 | 
            -
                     | 
| 151 | 
            -
             | 
| 152 | 
            -
                    if Digest::SHA1.hexdigest(payload) == sha1
         | 
| 153 | 
            -
                      File.open(filename, "w") { |f| f.write(payload) }
         | 
| 153 | 
            +
                    if Digest::SHA1.file(tmp_file.path).hexdigest == sha1
         | 
| 154 | 
            +
                      FileUtils.mv(tmp_file.path, filename)
         | 
| 154 155 | 
             
                    else
         | 
| 155 156 | 
             
                      err("#{desc} is corrupted in blobstore (id=#{blobstore_id})")
         | 
| 156 157 | 
             
                    end
         | 
    
        data/lib/cli/runner.rb
    CHANGED
    
    | @@ -126,6 +126,9 @@ module Bosh::Cli | |
| 126 126 | 
             
                    @options[:non_interactive] = true
         | 
| 127 127 | 
             
                    Config.colorize = false
         | 
| 128 128 | 
             
                  end
         | 
| 129 | 
            +
                  opts.on("-N", "--no-track", "Return Task ID and don't track") do
         | 
| 130 | 
            +
                    @options[:no_track] = true
         | 
| 131 | 
            +
                  end
         | 
| 129 132 | 
             
                  opts.on("-t", "--target URL", "Override target") do |target|
         | 
| 130 133 | 
             
                    @options[:target] = target
         | 
| 131 134 | 
             
                  end
         | 
| @@ -147,19 +150,17 @@ module Bosh::Cli | |
| 147 150 | 
             
                def load_plugins
         | 
| 148 151 | 
             
                  plugins_glob = "bosh/cli/commands/*.rb"
         | 
| 149 152 |  | 
| 150 | 
            -
                  unless Gem.respond_to?(: | 
| 153 | 
            +
                  unless Gem::Specification.respond_to?(:latest_specs) &&
         | 
| 154 | 
            +
                         Gem::Specification.instance_methods.include?(:matches_for_glob)
         | 
| 151 155 | 
             
                    say("Cannot load plugins, ".yellow +
         | 
| 152 156 | 
             
                        "please run `gem update --system' to ".yellow +
         | 
| 153 157 | 
             
                        "update your RubyGems".yellow)
         | 
| 154 158 | 
             
                    return
         | 
| 155 159 | 
             
                  end
         | 
| 156 160 |  | 
| 157 | 
            -
                  plugins =  | 
| 158 | 
            -
                     | 
| 159 | 
            -
                   | 
| 160 | 
            -
                    # Handling rubygems compatibility issue
         | 
| 161 | 
            -
                    Gem.find_files(plugins_glob)
         | 
| 162 | 
            -
                  end
         | 
| 161 | 
            +
                  plugins = Gem::Specification.latest_specs(true).map { |spec|
         | 
| 162 | 
            +
                    spec.matches_for_glob(plugins_glob)
         | 
| 163 | 
            +
                  }.flatten
         | 
| 163 164 |  | 
| 164 165 | 
             
                  plugins.each do |plugin|
         | 
| 165 166 | 
             
                    n_commands = Config.commands.size
         | 
| @@ -252,4 +253,4 @@ module Bosh::Cli | |
| 252 253 | 
             
                  search_parse_tree(@parse_tree)
         | 
| 253 254 | 
             
                end
         | 
| 254 255 | 
             
              end
         | 
| 255 | 
            -
            end
         | 
| 256 | 
            +
            end
         | 
    
        data/lib/cli/task_tracker.rb
    CHANGED
    
    | @@ -10,6 +10,8 @@ module Bosh | |
| 10 10 |  | 
| 11 11 | 
             
                  attr_reader :output
         | 
| 12 12 |  | 
| 13 | 
            +
                  attr_reader :renderer
         | 
| 14 | 
            +
             | 
| 13 15 | 
             
                  # @param [Bosh::Cli::Director] director
         | 
| 14 16 | 
             
                  # @param [Integer] task_id
         | 
| 15 17 | 
             
                  # @param [Hash] options
         | 
| @@ -28,7 +30,9 @@ module Bosh | |
| 28 30 | 
             
                    @cache = Config.cache
         | 
| 29 31 | 
             
                    @task = Bosh::Cli::DirectorTask.new(@director, @task_id, @log_type)
         | 
| 30 32 |  | 
| 31 | 
            -
                    if options[: | 
| 33 | 
            +
                    if options[:renderer]
         | 
| 34 | 
            +
                      @renderer = options[:renderer]
         | 
| 35 | 
            +
                    elsif options[:raw_output]
         | 
| 32 36 | 
             
                      @renderer = Bosh::Cli::TaskLogRenderer.new
         | 
| 33 37 | 
             
                    else
         | 
| 34 38 | 
             
                      @renderer = Bosh::Cli::TaskLogRenderer.create_for_log_type(@log_type)
         | 
    
        data/lib/cli/version.rb
    CHANGED
    
    
| @@ -124,4 +124,8 @@ describe Bosh::Cli::TaskTracker do | |
| 124 124 | 
             
                tracker.track.should == :cancelled
         | 
| 125 125 | 
             
              end
         | 
| 126 126 |  | 
| 127 | 
            +
              it "accepts alternate :renderer option" do
         | 
| 128 | 
            +
                tracker = make_tracker("42", {:renderer => "I'm a renderer"})
         | 
| 129 | 
            +
                tracker.renderer.should == "I'm a renderer"
         | 
| 130 | 
            +
              end
         | 
| 127 131 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: bosh_cli
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.0. | 
| 4 | 
            +
              version: 1.0.2
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2012-11- | 
| 12 | 
            +
            date: 2012-11-19 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: bosh_common
         | 
| @@ -355,7 +355,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 355 355 | 
             
                  version: '0'
         | 
| 356 356 | 
             
                  segments:
         | 
| 357 357 | 
             
                  - 0
         | 
| 358 | 
            -
                  hash:  | 
| 358 | 
            +
                  hash: 1768623608399422134
         | 
| 359 359 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 360 360 | 
             
              none: false
         | 
| 361 361 | 
             
              requirements:
         | 
| @@ -364,7 +364,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 364 364 | 
             
                  version: '0'
         | 
| 365 365 | 
             
                  segments:
         | 
| 366 366 | 
             
                  - 0
         | 
| 367 | 
            -
                  hash:  | 
| 367 | 
            +
                  hash: 1768623608399422134
         | 
| 368 368 | 
             
            requirements: []
         | 
| 369 369 | 
             
            rubyforge_project: 
         | 
| 370 370 | 
             
            rubygems_version: 1.8.24
         |