class Bosh::Director::DeploymentPlan::ReleaseVersion

Attributes

model[R]

@return [Models::ReleaseVersion] Release version model

name[R]

@return [String] Release name

version[R]

@return [String] Release version

Public Class Methods

new(deployment_model, spec) click to toggle source

@param [DeploymentPlan] deployment_plan Deployment plan @param [Hash] spec Raw release spec from the deployment

manifest
# File lib/bosh/director/deployment_plan/release_version.rb, line 16
def initialize(deployment_model, spec)
  @deployment_model = deployment_model

  @name = safe_property(spec, 'name', :class => String)
  @version = safe_property(spec, 'version', :class => String)

  @model = nil
  @templates = {}

  @logger = Config.logger
  @manager = Api::ReleaseManager.new
end

Public Instance Methods

bind_model() click to toggle source

Looks up release version in database and binds it to the deployment @return [void]

# File lib/bosh/director/deployment_plan/release_version.rb, line 31
def bind_model
  if @deployment_model.nil?
    raise DirectorError, 'Deployment not bound in the deployment plan'
  end

  release = @manager.find_by_name(@name)
  @model = @manager.find_version(release, @version)
  @logger.debug("Found release '#{@name}/#{@version}'")

  unless @deployment_model.release_versions.include?(@model)
    @logger.debug("Binding release '#{@name}/#{@version}' " +
                  "to deployment '#{@deployment_model.name}'")
    @deployment_model.add_release_version(@model)
  end
end
bind_templates() click to toggle source

Looks up package and template models in DB and binds them to this release spec @return [void]

# File lib/bosh/director/deployment_plan/release_version.rb, line 50
def bind_templates
  # ReleaseVersion model needs to be known so we can look up its
  # templates
  if @model.nil?
    raise DirectorError, 'ReleaseVersion model not bound in release spec'
  end

  # By now job specs from the deployment manifest should
  # have been parsed, so we can assume @templates contains
  # the list of templates that need to be bound
  @templates.each_value do |template|
    @logger.debug("Binding template '#{template.name}'")
    template.bind_models
    @logger.debug("Bound template '#{template.name}'")
  end
end
get_or_create_template(name) click to toggle source

Adds template to a list of templates used by this release for the current deployment @param [String] options Template name

# File lib/bosh/director/deployment_plan/release_version.rb, line 97
def get_or_create_template(name)
  @templates[name] ||= Template.new(self, name)
end
get_package_model_by_name(name) click to toggle source

Looks up up package model by package name @param [String] name Package name @return [Models::Package]

# File lib/bosh/director/deployment_plan/release_version.rb, line 90
def get_package_model_by_name(name)
  @model.package_by_name(name)
end
get_template_model_by_name(name) click to toggle source

Looks up up template model by template name @param [String] name Template name @return [Models::Template]

# File lib/bosh/director/deployment_plan/release_version.rb, line 78
def get_template_model_by_name(name)
  @all_templates ||= @model.templates.inject({}) do |hash, template|
    hash[template.name] = template
    hash
  end

  @all_templates[name]
end
spec() click to toggle source

@return [Hash] Hash representation

# File lib/bosh/director/deployment_plan/release_version.rb, line 68
def spec
  {
    'name' => @name,
    'version' => @version
  }
end
template(name) click to toggle source

@param [String] name Template name @return [DeploymentPlan::Template] Template with given name used by this

release (if any)
# File lib/bosh/director/deployment_plan/release_version.rb, line 104
def template(name)
  @templates[name]
end
templates() click to toggle source

Returns a list of job templates that need to be included into this release. Note that this is not just a list of all templates existing in the release but rather a list of templates for jobs that are included into current deployment plan. @return [Array<DeploymentPlan::Template>] List of job templates

# File lib/bosh/director/deployment_plan/release_version.rb, line 113
def templates
  @templates.values
end