mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
fbce47b429
As raised e8630a0083 (commitcomment-2445605)
62 lines
2.3 KiB
Ruby
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
|