1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
class RbVmomi::VIM::ResourcePool
# Retrieve a child ResourcePool.
# @param name [String] Name of the child.
# @return [VIM::ResourcePool]
def find name
_connection.searchIndex.FindChild(:entity => self, :name => name)
end
# Retrieve a descendant of this ResourcePool.
# @param path [String] Path delimited by '/'.
# @return [VIM::ResourcePool]
def traverse path
es = path.split('/').reject(&:empty?)
es.inject(self) do |f,e|
f.find(e) || return
end
end
def resourcePoolSubTree fields = []
self.class.resourcePoolSubTree [self], fields
end
def self.resourcePoolSubTree objs, fields = []
fields = (fields + ['name', 'resourcePool']).uniq
filterSpec = RbVmomi::VIM.PropertyFilterSpec(
:objectSet => objs.map do |obj|
RbVmomi::VIM.ObjectSpec(
:obj => obj,
:selectSet => [
RbVmomi::VIM.TraversalSpec(
:name => "tsRP",
:type => 'ResourcePool',
:path => 'resourcePool',
:skip => false,
:selectSet => [
RbVmomi::VIM.SelectionSpec(:name => "tsRP")
]
)
]
)
end,
:propSet => [{
:pathSet => fields,
:type => 'ResourcePool'
}]
)
propCollector = objs.first._connection.propertyCollector
result = propCollector.RetrieveProperties(:specSet => [filterSpec])
Hash[result.map do |x|
[x.obj, x.to_hash]
end]
end
end
|