mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
Merge pull request #2186 from grimme-atix-de/dc_subfolder
[vSphere] Support datacenters that are located below folders not in root...
This commit is contained in:
commit
9c666c09c2
3 changed files with 30 additions and 10 deletions
|
@ -6,30 +6,31 @@ module Fog
|
|||
|
||||
identity :id
|
||||
attribute :name
|
||||
attribute :path
|
||||
attribute :status
|
||||
|
||||
def clusters filters = { }
|
||||
service.clusters({ :datacenter => name }.merge(filters))
|
||||
service.clusters({ :datacenter => path.join("/") }.merge(filters))
|
||||
end
|
||||
|
||||
def networks filters = { }
|
||||
service.networks({ :datacenter => name }.merge(filters))
|
||||
service.networks({ :datacenter => path.join("/") }.merge(filters))
|
||||
end
|
||||
|
||||
def datastores filters = { }
|
||||
service.datastores({ :datacenter => name }.merge(filters))
|
||||
service.datastores({ :datacenter => path.join("/") }.merge(filters))
|
||||
end
|
||||
|
||||
def vm_folders filters = { }
|
||||
service.folders({ :datacenter => name, :type => :vm }.merge(filters))
|
||||
service.folders({ :datacenter => path.join("/"), :type => :vm }.merge(filters))
|
||||
end
|
||||
|
||||
def virtual_machines filters = {}
|
||||
service.servers({ :datacenter => name }.merge(filters))
|
||||
service.servers({ :datacenter => path.join("/") }.merge(filters))
|
||||
end
|
||||
|
||||
def customfields filters = {}
|
||||
service.customfields({ :datacenter => name}.merge(filters))
|
||||
service.customfields({ :datacenter => path.join("/")}.merge(filters))
|
||||
end
|
||||
|
||||
def to_s
|
||||
|
|
|
@ -5,7 +5,7 @@ module Fog
|
|||
def get_datacenter name
|
||||
dc = find_raw_datacenter(name)
|
||||
raise(Fog::Compute::Vsphere::NotFound) unless dc
|
||||
{:name => dc.name, :status => dc.overallStatus}
|
||||
{:name => dc.name, :status => dc.overallStatus, :path => raw_getpathmo(dc) }
|
||||
end
|
||||
|
||||
protected
|
||||
|
|
|
@ -8,6 +8,7 @@ module Fog
|
|||
{
|
||||
:id => managed_obj_id(dc),
|
||||
:name => dc.name,
|
||||
:path => raw_getpathmo(dc),
|
||||
:status => dc.overallStatus
|
||||
}
|
||||
end
|
||||
|
@ -15,9 +16,27 @@ module Fog
|
|||
|
||||
protected
|
||||
|
||||
# RbVmomi::VIM::Datacenter Array
|
||||
def raw_datacenters
|
||||
@raw_datacenters ||= @connection.rootFolder.childEntity.grep(RbVmomi::VIM::Datacenter)
|
||||
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
|
||||
|
|
Loading…
Add table
Reference in a new issue