class Cloudkeeper::Entities::Appliance

Constants

IMAGE_LIST_APPLIANCE_ATTRIBUTES

Attributes

appid[RW]
architecture[RW]
base_mpuri[RW]
core[RW]
description[RW]
digest[RW]
expiration_date[RW]
group[RW]
identifier[RW]
image[RW]
image_list_identifier[RW]
mpuri[RW]
operating_system[RW]
ram[RW]
title[RW]
version[RW]
vo[RW]

Public Class Methods

compute_digest!(appliance, appliance_hash) click to toggle source
# File lib/cloudkeeper/entities/appliance.rb, line 94
def compute_digest!(appliance, appliance_hash)
  digest_hash = appliance_hash.select { |key| IMAGE_LIST_APPLIANCE_ATTRIBUTES.include? key }
  appliance.digest = Digest::SHA512.hexdigest(digest_hash.to_json)
end
construct_appliance(appliance_hash) click to toggle source
# File lib/cloudkeeper/entities/appliance.rb, line 71
def construct_appliance(appliance_hash)
  Appliance.new appliance_hash[:'dc:identifier'],
                appliance_hash[:'ad:mpuri'],
                appliance_hash[:vo],
                Cloudkeeper::Utils::Date.parse(appliance_hash[:'dc:date:expires']),
                appliance_hash[:image_list_identifier],
                appliance_hash[:'dc:title'],
                appliance_hash[:'dc:description'],
                appliance_hash[:'ad:group'],
                appliance_hash[:'hv:ram_minimum'],
                appliance_hash[:'hv:core_minimum'],
                appliance_hash[:'hv:version'],
                appliance_hash[:'sl:arch'],
                appliance_hash[:'ad:base_mpuri'],
                appliance_hash[:'ad:appid']
end
construct_os_name!(appliance, appliance_hash) click to toggle source
# File lib/cloudkeeper/entities/appliance.rb, line 88
def construct_os_name!(appliance, appliance_hash)
  appliance.operating_system = appliance_hash[:'sl:os'].to_s
  appliance.operating_system = "#{appliance.operating_system} #{appliance_hash[:'sl:osname']}".strip
  appliance.operating_system = "#{appliance.operating_system} #{appliance_hash[:'sl:osversion']}".strip
end
from_hash(appliance_hash) click to toggle source
# File lib/cloudkeeper/entities/appliance.rb, line 50
def from_hash(appliance_hash)
  appliance_hash.deep_symbolize_keys!
  appliance = populate_appliance appliance_hash
  appliance.image = Image.from_hash(appliance_hash)

  appliance
end
new(identifier, mpuri, vo, expiration_date, image_list_identifier, title = '', description = '', group = '', ram = 1024, core = 1, version = '', architecture = '', base_mpuri = '', appid = '', digest = '', operating_system = '', image = nil) click to toggle source
# File lib/cloudkeeper/entities/appliance.rb, line 14
def initialize(identifier, mpuri, vo, expiration_date, image_list_identifier, title = '', description = '', group = '',
               ram = 1024, core = 1, version = '', architecture = '', base_mpuri = '', appid = '', digest = '',
               operating_system = '', image = nil)
  if identifier.blank? || \
     mpuri.blank? || \
     vo.blank? || \
     expiration_date.blank? || \
     image_list_identifier.blank?
    raise Cloudkeeper::Errors::ArgumentError, 'identifier, mpuri, vo, expiration_date and image_list_identifier ' \
                                              'cannot be nil nor empty'
  end

  @identifier = identifier
  @description = description
  @mpuri = mpuri
  @title = title
  @group = group
  @ram = ram
  @core = core
  @version = version
  @architecture = architecture
  @operating_system = operating_system
  @image = image
  @vo = vo
  @expiration_date = expiration_date
  @image_list_identifier = image_list_identifier
  @base_mpuri = base_mpuri
  @appid = appid
  @digest = digest
end
populate_appliance(appliance_hash) click to toggle source
# File lib/cloudkeeper/entities/appliance.rb, line 58
def populate_appliance(appliance_hash)
  raise Cloudkeeper::Errors::Parsing::InvalidApplianceHashError, 'invalid appliance hash' if appliance_hash.blank?

  appliance = construct_appliance(appliance_hash)
  construct_os_name!(appliance, appliance_hash)
  compute_digest!(appliance, appliance_hash)

  appliance
rescue Cloudkeeper::Errors::ArgumentError => ex
  raise Cloudkeeper::Errors::Parsing::InvalidApplianceHashError, ex, "appliance hash #{appliance_hash.inspect} " \
                                                                     "doesn't contain all the necessary data"
end

Public Instance Methods

expired?() click to toggle source
# File lib/cloudkeeper/entities/appliance.rb, line 45
def expired?
  expiration_date < Time.now
end