Class: Bosh::Cli::Command::Release::UploadRelease

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

Constant Summary

Constants inherited from Base

Base::DEFAULT_DIRECTOR_PORT

Instance Attribute Summary

Attributes inherited from Base

#args, #exit_code, #info, #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, #run_nested_command, #show_current_state, #target, #target_name, #verbose?

Methods included from Bosh::Cli::CommandDiscovery

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

Methods included from DeploymentHelper

#build_manifest, #cancel_deployment, #deployment_changed?, #inspect_deployment_changes, #job_exists_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

#upload(release_file = nil) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/cli/commands/release/upload_release.rb', line 19

def upload(release_file = nil)
  auth_required
  switch_to_release_dir
  show_current_state

  upload_options = {
    :rebase => options[:rebase],
    :repack => true,
    :sha1 => options[:sha1],
    :fix => options[:fix],
  }

  #only check release_dir if not compiled release tarball
  file_type = `file --mime-type -b '#{release_file}'`

  compiled_release = false
  if file_type == /application\/x-gzip/
    tarball = Bosh::Cli::ReleaseTarball.new(tarball_path)
    compiled_release = tarball.compiled_release?
  end

  if release_file.nil? and !compiled_release
    check_if_release_dir
    release_file = release.latest_release_filename
    if release_file.nil?
      err('The information about latest generated release is missing, please provide release filename')
    end
  end

  if !options[:fix] && options[:name] && options[:version]
    say("Checking whether release #{options[:name]}/#{options[:version]} already exists...".make_green, '')
    director.list_releases.each do |release|
      if release['name'] == options[:name]
        release['release_versions'].each do |version|
          if version['version'] == options[:version]
            say('YES'.make_yellow)
            return
          end
        end
      end
    end
    say('NO'.make_yellow)
  end

  if release_file =~ /^#{URI::regexp}$/
    upload_remote_release(release_file, upload_options)

  else
    err("Option '--sha1' is not supported for uploading local release") unless options[:sha1].nil?
    err("Release file doesn't exist") unless File.exist?(release_file)

    file_type = `file --mime-type -b '#{release_file}'` # duplicate? Already done on line 23

    if file_type =~ /text\/(plain|yaml)/
      upload_manifest(release_file, upload_options)
    else
      upload_tarball(release_file, upload_options)
    end
  end
end