class Bosh::Director::Models::Instance

Public Instance Methods

cloud_properties_hash() click to toggle source
# File lib/bosh/director/models/instance.rb, line 42
def cloud_properties_hash
  if cloud_properties.nil?
    return {} if spec.nil? || spec['vm_type'].nil?
    spec['vm_type']['cloud_properties'] || {}
  else
    JSON.parse(cloud_properties)
  end
end
cloud_properties_hash=(hash) click to toggle source
# File lib/bosh/director/models/instance.rb, line 51
def cloud_properties_hash=(hash)
  self.cloud_properties = JSON.dump(hash)
end
credentials() click to toggle source
# File lib/bosh/director/models/instance.rb, line 124
def credentials
  object_or_nil(credentials_json)
end
credentials=(spec) click to toggle source
# File lib/bosh/director/models/instance.rb, line 128
def credentials=(spec)
  self.credentials_json = json_encode(spec)
end
dns_record_names() click to toggle source
# File lib/bosh/director/models/instance.rb, line 55
def dns_record_names
  return nil if dns_records.nil?

  JSON.parse(dns_records)
end
dns_record_names=(list) click to toggle source
# File lib/bosh/director/models/instance.rb, line 61
def dns_record_names=(list)
  self.dns_records = JSON.dump(list)
end
latest_rendered_templates_archive() click to toggle source
# File lib/bosh/director/models/instance.rb, line 29
def latest_rendered_templates_archive
  rendered_templates_archives_dataset.order(:created_at).last
end
name() click to toggle source
# File lib/bosh/director/models/instance.rb, line 65
def name
  "#{self.job}/#{self.uuid}"
end
persistent_disk() click to toggle source
# File lib/bosh/director/models/instance.rb, line 18
def persistent_disk
  # Currently we support only 1 persistent disk.
  self.persistent_disks.find { |disk| disk.active }
end
persistent_disk_cid() click to toggle source
# File lib/bosh/director/models/instance.rb, line 23
def persistent_disk_cid
  disk = persistent_disk
  return disk.disk_cid if disk
  nil
end
spec() click to toggle source
# File lib/bosh/director/models/instance.rb, line 73
def spec
  return nil if spec_json.nil?

  begin
    result = JSON.parse(spec_json)
  rescue JSON::ParserError
    return 'error'
  end
  if result['resource_pool'].nil?
    result
  else
    if result['vm_type'].nil?
      result['vm_type'] = {
        'name' => result['resource_pool']['name'],
        'cloud_properties' => result['resource_pool']['cloud_properties']
      }
    end

    if result['resource_pool']['stemcell'] && result['stemcell'].nil?
      result['stemcell'] = result['resource_pool']['stemcell']
      result['stemcell']['alias'] = result['resource_pool']['name']
    end

    result.delete('resource_pool')

    result
  end
end
spec=(spec) click to toggle source
# File lib/bosh/director/models/instance.rb, line 102
def spec=(spec)
  begin
    self.spec_json = spec.nil? ? nil : JSON.generate(spec)
  rescue JSON::GeneratorError
    self.spec_json = 'error'
  end
end
spec_p(property_path) click to toggle source
# File lib/bosh/director/models/instance.rb, line 110
def spec_p(property_path)
  current_prop = spec
  property_path.split('.').each do |prop|
    return nil if current_prop.nil? || !current_prop.is_a?(Hash)
    current_prop = current_prop[prop]
  end
  current_prop
end
stale_rendered_templates_archives() click to toggle source
# File lib/bosh/director/models/instance.rb, line 33
def stale_rendered_templates_archives
  stale_archives = rendered_templates_archives_dataset
  if latest = latest_rendered_templates_archive
    stale_archives.exclude(id: latest.id)
  else
    stale_archives
  end
end
to_s() click to toggle source
# File lib/bosh/director/models/instance.rb, line 69
def to_s
  "#{self.job}/#{self.index} (#{self.uuid})"
end
validate() click to toggle source
# File lib/bosh/director/models/instance.rb, line 11
def validate
  validates_presence [:deployment_id, :job, :index, :state]
  validates_unique [:deployment_id, :job, :index]
  validates_integer :index
  validates_includes %w(started stopped detached), :state
end
vm_env() click to toggle source
# File lib/bosh/director/models/instance.rb, line 119
def vm_env
  return {} if spec.nil?
  spec['env'] || {}
end

Private Instance Methods

json_encode(value) click to toggle source
# File lib/bosh/director/models/instance.rb, line 142
def json_encode(value)
  value.nil? ? 'null' : JSON.generate(value)
end
object_or_nil(value) click to toggle source
# File lib/bosh/director/models/instance.rb, line 134
def object_or_nil(value)
  if value == 'null' || value.nil?
    nil
  else
    JSON.parse(value)
  end
end