Class: Bosh::Cli::Command::Release::InspectRelease

Inherits:
Base
  • Object
show all
Defined in:
lib/cli/commands/release/inspect_release.rb

Constant Summary

Constants inherited from Base

Base::DEFAULT_DIRECTOR_PORT

Instance Attribute Summary

Attributes inherited from Base

#args, #exit_code, #options, #out, #runner, #work_dir

Instance Method Summary collapse

Methods inherited from Base

#add_option, #blob_manager, #blobstore, #cache_dir, #config, #confirmed?, #credentials, #deployment, #director, #initialize, #interactive?, #logged_in?, #non_interactive?, #progress_renderer, #redirect, #release, #remove_option, #show_current_state, #target, #target_name, #verbose?

Methods included from Bosh::Cli::CommandDiscovery

#desc, #method_added, #option, #register_command, #usage

Methods included from DeploymentHelper

#cancel_deployment, #deployment_changed?, #inspect_deployment_changes, #job_exists_in_deployment?, #job_must_exist_in_deployment, #job_unique_in_deployment?, #jobs_and_indexes, #prepare_deployment_manifest, #prompt_for_errand_name, #prompt_for_job_and_index

Constructor Details

This class inherits a constructor from Bosh::Cli::Command::Base

Instance Method Details

#build_jobs_table(release) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/cli/commands/release/inspect_release.rb', line 27

def build_jobs_table(release)
  table do |t|
    t.headings = 'Job', 'Fingerprint', 'Blobstore ID', 'SHA1'
    release['jobs'].each do |job|
      row = [
          job['name'].make_yellow,
          job['fingerprint'].make_yellow,
          job['blobstore_id'].make_yellow,
          job['sha1'].make_yellow]
      t << row
    end
  end
end

#build_packages_table(release) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/cli/commands/release/inspect_release.rb', line 41

def build_packages_table(release)
  table do |t|
    t.headings = 'Package', 'Fingerprint', 'Compiled For', 'Blobstore ID', 'SHA1'
    release['packages'].each do |package|
      src_pkg_row = [
          package['name'].make_yellow,
          package['fingerprint'].make_yellow,
          package['blobstore_id'].nil? ? '(no source)'.make_red : '(source)'.make_yellow,
          package['blobstore_id'].nil? ? "" : package['blobstore_id'].make_yellow,
          package['sha1'].nil? ? "" : package['sha1'].make_yellow]
      t << src_pkg_row

      package['compiled_packages'].each do |compiled|
        comp_pkg_row = [
            '',
            '',
            compiled['stemcell'].make_green,
            compiled['blobstore_id'].make_green,
            compiled['sha1'].make_green]
        t << comp_pkg_row
      end
    end
  end
end

#inspect(release) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/cli/commands/release/inspect_release.rb', line 7

def inspect(release)
  auth_required
  show_current_state

  release = Bosh::Cli::NameVersionPair.parse(release)

  response = director.inspect_release(release.name, release.version)
  if !reasonable_response?(response)
    raise Bosh::Cli::DirectorError,
          'Response from director does not include expected information. Is your director version 1.3034.0 or newer?'
  end

  templates_table = build_jobs_table(response)
  say(templates_table.render)
  nl

  packages_table = build_packages_table(response)
  say(packages_table.render)
end

#reasonable_response?(response) ⇒ Boolean

older directors return an incorrect response for the request we make (they ignore the version parameter). this method checks for that condition so we can give a helpful error message.

Returns:

  • (Boolean)


68
69
70
# File 'lib/cli/commands/release/inspect_release.rb', line 68

def reasonable_response?(response)
  !response.has_key?('versions')
end