class Vcloud::Walker::Resource::Vm

Constants

HARDWARE_RESOURCE_TYPES

Attributes

cpu[R]
disks[R]
id[R]
memory[R]
metadata[R]
network_cards[R]
network_connections[R]
operating_system[R]
primary_network_connection_index[R]
status[R]
storage_profile[R]
virtual_system_type[R]
vmware_tools[R]

Public Class Methods

new(fog_vm) click to toggle source
# File lib/vcloud/walker/resource/vm.rb, line 28
def initialize fog_vm
  @id = extract_id(fog_vm[:href])
  @status = fog_vm[:status]
  @operating_system = fog_vm[:'ovf:OperatingSystemSection'][:'ovf:Description']
  @network_connections = fog_vm[:NetworkConnectionSection][:NetworkConnection] if fog_vm[:NetworkConnectionSection]
  @primary_network_connection_index = fog_vm[:NetworkConnectionSection][:PrimaryNetworkConnectionIndex]
  extract_compute_capacity fog_vm[:'ovf:VirtualHardwareSection'][:'ovf:Item']
  @vmware_tools = fog_vm[:RuntimeInfoSection][:VMWareTools]
  @virtual_system_type = extract_virtual_system_type(fog_vm[:'ovf:VirtualHardwareSection'])
  @storage_profile = {
    :id   => fog_vm[:StorageProfile][:href].split('/').last,
    :name => fog_vm[:StorageProfile][:name],
  }
  @metadata = Vcloud::Core::Vm.get_metadata(id)
end

Private Instance Methods

extract_compute_capacity(ovf_resources) click to toggle source
# File lib/vcloud/walker/resource/vm.rb, line 46
def extract_compute_capacity ovf_resources
  %w(cpu memory disks network_cards).each { |resource| send("extract_#{resource}", ovf_resources) } unless ovf_resources.empty?
end
extract_cpu(resources) click to toggle source
# File lib/vcloud/walker/resource/vm.rb, line 50
def extract_cpu(resources)
  @cpu = resources.detect { |element| element[:'rasd:ResourceType']== HARDWARE_RESOURCE_TYPES[:cpu] }[:'rasd:ElementName']
end
extract_disk_capacity(d) click to toggle source
# File lib/vcloud/walker/resource/vm.rb, line 65
def extract_disk_capacity(d)
  (d[:"rasd:HostResource"][:ns12_capacity] || d[:"rasd:HostResource"][:vcloud_capacity]).to_i
end
extract_disks(resources) click to toggle source
# File lib/vcloud/walker/resource/vm.rb, line 58
def extract_disks(resources)
  disk_resources = resources.select { |element| element[:'rasd:ResourceType']== HARDWARE_RESOURCE_TYPES[:hard_disk] }
  @disks = disk_resources.collect do |d|
    {:name => d[:'rasd:ElementName'], :size => extract_disk_capacity(d)}
  end
end
extract_memory(resources) click to toggle source
# File lib/vcloud/walker/resource/vm.rb, line 54
def extract_memory(resources)
  @memory = resources.detect { |element| element[:'rasd:ResourceType']== HARDWARE_RESOURCE_TYPES[:memory] }[:'rasd:ElementName']
end
extract_network_cards(resources) click to toggle source
# File lib/vcloud/walker/resource/vm.rb, line 69
def extract_network_cards(resources)
  resources = resources.select {
    |element| element[:'rasd:ResourceType'] == HARDWARE_RESOURCE_TYPES[:network_adapter]
  }
  @network_cards = resources.collect do |r|
    {:name => r[:'rasd:ElementName'],
     :type => r[:'rasd:ResourceSubType'],
     :mac_address => r[:'rasd:Address'],
    }
  end
end
extract_virtual_system_type(virtual_hardware_section) click to toggle source
# File lib/vcloud/walker/resource/vm.rb, line 81
def extract_virtual_system_type virtual_hardware_section
  virtual_system = virtual_hardware_section[:"ovf:System"]
  virtual_system[:"vssd:VirtualSystemType"] if virtual_system
end