class Bosh::Director::Api::ReleaseManager

Public Instance Methods

create_release_from_file_path(username, release_path, options) click to toggle source
# File lib/bosh/director/api/release_manager.rb, line 84
def create_release_from_file_path(username, release_path, options)
  unless File.exists?(release_path)
    raise DirectorError, "Failed to create release: file not found - #{release_path}"
  end

  JobQueue.new.enqueue(username, Jobs::UpdateRelease, 'create release', [release_path, options])
end
create_release_from_url(username, release_url, options) click to toggle source
# File lib/bosh/director/api/release_manager.rb, line 79
def create_release_from_url(username, release_url, options)
  options[:remote] = true
  JobQueue.new.enqueue(username, Jobs::UpdateRelease, 'create release', [release_url, options])
end
delete_release(username, release, options = {}) click to toggle source
# File lib/bosh/director/api/release_manager.rb, line 92
def delete_release(username, release, options = {})
  JobQueue.new.enqueue(username, Jobs::DeleteRelease, "delete release: #{release.name}", [release.name, options])
end
export_release(username, deployment_name, release_name, release_version, stemcell_os, stemcell_version) click to toggle source
# File lib/bosh/director/api/release_manager.rb, line 96
def export_release(username, deployment_name, release_name, release_version, stemcell_os, stemcell_version)
  JobQueue.new.enqueue(
      username,
      Jobs::ExportRelease,
      "export release: '#{release_name}/#{release_version}' for '#{stemcell_os}/#{stemcell_version}'",
      [deployment_name, release_name, release_version, stemcell_os, stemcell_version])
end
find_by_name(name) click to toggle source
# File lib/bosh/director/api/release_manager.rb, line 44
def find_by_name(name)
  release = Models::Release[:name => name]
  if release.nil?
    raise ReleaseNotFound, "Release '#{name}' doesn't exist"
  end
  release
end
find_version(release, version) click to toggle source
# File lib/bosh/director/api/release_manager.rb, line 52
def find_version(release, version)
  dataset = release.versions_dataset

  release_version = dataset.filter(:version => version).first
  if release_version.nil?
    begin
      new_formatted_version = Bosh::Common::Version::ReleaseVersion.parse(version)
    rescue SemiSemantic::ParseError
      raise ReleaseVersionInvalid, "Release version invalid: #{version}"
    end
    if version == new_formatted_version.to_s
      old_formatted_version = new_formatted_version.to_old_format
      if old_formatted_version
        release_version = dataset.filter(:version => old_formatted_version).first
      end
    else
      release_version = dataset.filter(:version => new_formatted_version.to_s).first
    end
    if release_version.nil?
      raise ReleaseVersionNotFound,
            "Release version '#{release.name}/#{version}' doesn't exist"
    end
  end

  release_version
end
get_all_releases() click to toggle source
# File lib/bosh/director/api/release_manager.rb, line 6
def get_all_releases
  releases = Models::Release.order_by(Sequel.asc(:name)).map do |release|
    release_versions = sorted_release_versions(release)
    {
      'name' => release.name,
      'release_versions' => release_versions
    }
  end

  releases
end
sorted_release_versions(release, prefix = nil) click to toggle source
# File lib/bosh/director/api/release_manager.rb, line 18
def sorted_release_versions(release, prefix = nil)
  sorted_version_tuples = release.versions_dataset.all.map do |version|
    {
      provided: version,
      parsed: Bosh::Common::Version::ReleaseVersion.parse(version.values[:version])
    }
  end.sort_by { |rv| rv[:parsed] }

  unless prefix.nil?
    sorted_version_tuples = sorted_version_tuples.select do |version_tuple|
      /^#{prefix}([\.\-\+]|$)/.match(version_tuple[:provided].version.to_s)
    end
  end

  sorted_version_tuples.map do |version|
    provided = version[:provided]
    {
      'version' => provided.version.to_s,
      'commit_hash' => provided.commit_hash,
      'uncommitted_changes' => provided.uncommitted_changes,
      'currently_deployed' => !provided.deployments.empty?,
      'job_names' => provided.templates.map(&:name),
    }
  end
end