1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00
fog--fog/lib/fog/vsphere/requests/compute/get_virtual_machine.rb

62 lines
2.3 KiB
Ruby

module Fog
module Compute
class Vsphere
class Real
def get_virtual_machine(id, datacenter_name = nil)
convert_vm_mob_ref_to_attr_hash(get_vm_ref(id, datacenter_name))
end
protected
def get_vm_ref(id, dc = nil)
vm = case id
# UUID based
when /[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}/
@connection.searchIndex.FindByUuid :uuid => id, :vmSearch => true, :instanceUuid => true, :datacenter => dc
else
# try to find based on VM name
if dc
get_raw_datacenter(dc).find_vm(id)
else
raw_datacenters.map { |d| d.find_vm(id) }.compact.first
end
end
vm ? vm : raise(Fog::Compute::Vsphere::NotFound, "#{id} was not found")
end
end
class Mock
def get_virtual_machine(id, datacenter_name = nil)
case id
when "5032c8a5-9c5e-ba7a-3804-832a03e16381", 'vm-715'
{ :resource_pool => "Resources",
:memory_mb => 2196,
:power_state => "poweredOn",
:mac_addresses => { "Network adapter 1" => "00:50:56:b2:00:af" },
:hostname => "centos56gm.localdomain",
:cpus => 1,
:connection_state => "connected",
:mo_ref => "vm-715",
:overall_status => "green",
:datacenter => "Solutions",
:instance_uuid => "5029c440-85ee-c2a1-e9dd-b63e39364603",
:hypervisor => "gunab.puppetlabs.lan",
:guest_id => "rhel6_64Guest",
:cluster => "virtlabcluster",
:tools_state => "toolsOk",
:name => "jefftest",
:operatingsystem => "Red Hat Enterprise Linux 6 (64-bit)",
:path => "/",
:tools_version => "guestToolsUnmanaged",
:ipaddress => "192.168.100.187",
:id => "5032c8a5-9c5e-ba7a-3804-832a03e16381",
:uuid => "42329da7-e8ab-29ec-1892-d6a4a964912a"
}
end
end
end
end
end
end