mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
54 lines
1.4 KiB
Ruby
54 lines
1.4 KiB
Ruby
module Fog
|
|
module Compute
|
|
class Vsphere
|
|
class Real
|
|
|
|
def list_datacenters filters = {}
|
|
raw_datacenters.map do |dc|
|
|
{
|
|
:id => managed_obj_id(dc),
|
|
:name => dc.name,
|
|
:path => raw_getpathmo(dc),
|
|
:status => dc.overallStatus
|
|
}
|
|
end
|
|
end
|
|
|
|
protected
|
|
|
|
def raw_getpathmo mo
|
|
if mo.parent == nil or mo.parent.name == @connection.rootFolder.name then
|
|
[ mo.name ]
|
|
else
|
|
[ raw_getpathmo(mo.parent), mo.name ].flatten
|
|
end
|
|
end
|
|
|
|
def raw_datacenters folder=nil
|
|
folder ||= @connection.rootFolder
|
|
@raw_datacenters ||= get_raw_datacenters_from_folder folder
|
|
end
|
|
|
|
def get_raw_datacenters_from_folder folder=nil
|
|
folder.childEntity.map do | childE |
|
|
if childE.is_a? RbVmomi::VIM::Datacenter
|
|
childE
|
|
elsif childE.is_a? RbVmomi::VIM::Folder
|
|
get_raw_datacenters_from_folder childE
|
|
end
|
|
end.flatten
|
|
end
|
|
|
|
def find_datacenters name=nil
|
|
name ? [find_raw_datacenter(name)] : raw_datacenters
|
|
end
|
|
end
|
|
|
|
class Mock
|
|
def list_datacenters filters = {}
|
|
[ {:name => "Solutions", :status => "grey"}, {:name => "Solutions2", :status => "green" }]
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|