module Fog::VcloudDirector::Parsers::Compute::VmParserHelper

Public Instance Methods

human_status(status) click to toggle source
# File lib/fog/vcloud_director/parsers/compute/vm_parser_helper.rb, line 90
def human_status(status)
  case status
  when '-1', -1
    'failed_creation'
  when '0', 0
    'creating'
  when '8', 8
    'off'
  when '4', 4
    'on'
  when '3', 3
    'suspended'
  else
    'unknown'
  end
end
id_from_url(url, id_prefix: 'vapp-') click to toggle source
# File lib/fog/vcloud_director/parsers/compute/vm_parser_helper.rb, line 107
def id_from_url(url, id_prefix: 'vapp-')
  url.split('/').detect { |part| part.start_with?(id_prefix) }
end
initialize_vm() click to toggle source
# File lib/fog/vcloud_director/parsers/compute/vm_parser_helper.rb, line 6
def initialize_vm
  {
    :vapp_id        => nil,
    :ip_address     => '',
    :description    => '',
    :cpu_hot_add    => nil,
    :memory_hot_add => nil
  }
end
parse_end_element(name, vm) click to toggle source
# File lib/fog/vcloud_director/parsers/compute/vm_parser_helper.rb, line 16
def parse_end_element(name, vm)
  case name
  when 'IpAddress'
    vm[:ip_address] = value
  when 'Description'
    if @in_operating_system
      vm[:operating_system] = value
      @in_operating_system = false
    end
  when 'ResourceType'
    @resource_type = value
  when 'VirtualQuantity'
    case @resource_type
    when '3'
      vm[:cpu] = value
    when '4'
      vm[:memory] = value
    end
  when 'ElementName'
    @element_name = value
  when 'Item'
    if @resource_type == '17' # disk
      vm[:disks] ||= []
      vm[:disks] << { @element_name => @current_host_resource[:capacity].to_i }
    end
  when 'Connection'
    vm[:network_adapters] ||= []
    vm[:network_adapters] << {
      :ip_address => @current_network_connection[:ipAddress],
      :primary => (@current_network_connection[:primaryNetworkConnection] == 'true'),
      :ip_allocation_mode => @current_network_connection[:ipAddressingMode],
      :network => value
    }
  when 'Link'
    vm[:links] = @links
  when 'CoresPerSocket'
    vm[:cores_per_socket] = value
  when 'CpuHotAddEnabled'
    vm[:cpu_hot_add] = value == 'true'
  when 'MemoryHotAddEnabled'
    vm[:memory_hot_add] = value == 'true'
  end
end
parse_start_element(name, attributes, vm) click to toggle source
# File lib/fog/vcloud_director/parsers/compute/vm_parser_helper.rb, line 60
def parse_start_element(name, attributes, vm)
  case name
  when 'OperatingSystemSection'
    @in_operating_system = true

    # VirtualHardwareSection was parsed if we're here. Set missing values to defaults since
    # repeatable parsing won't get them.
    vm[:cores_per_socket] ||= 1
    vm[:disks]            ||= []
    vm[:network_adapters] ||= []
  when 'HostResource'
    @current_host_resource = extract_attributes(attributes)
  when 'Connection'
    @current_network_connection = extract_attributes(attributes)
  when 'Link'
    # Parse vapp id from any link if not found elsewhere.
    vm[:vapp_id] ||= id_from_url(attr_value('href', attributes), :id_prefix => 'vapp-')

    @links << extract_attributes(attributes)
  end
end
parse_vm_attributes(attributes, vm) click to toggle source
# File lib/fog/vcloud_director/parsers/compute/vm_parser_helper.rb, line 82
def parse_vm_attributes(attributes, vm)
  vm_attrs = extract_attributes(attributes)
  vm.merge!(vm_attrs.select { |key, _| %i(href name status type deployed).include?(key) })
  vm[:id]       = vm[:href].split('/').last
  vm[:status]   = human_status(vm[:status])
  vm[:deployed] = vm[:deployed] == 'true'
end