def self.paths objs
filterSpec = RbVmomi::VIM.PropertyFilterSpec(
:objectSet => objs.map do |obj|
RbVmomi::VIM.ObjectSpec(
:obj => obj,
:selectSet => [
RbVmomi::VIM.TraversalSpec(
:name => "tsME",
:type => 'ManagedEntity',
:path => 'parent',
:skip => false,
:selectSet => [
RbVmomi::VIM.SelectionSpec(:name => "tsME")
]
)
]
)
end,
:propSet => [{
:pathSet => %w(name parent),
:type => 'ManagedEntity'
}]
)
propCollector = objs.first._connection.propertyCollector
result = propCollector.RetrieveProperties(:specSet => [filterSpec])
Hash[objs.map do |obj|
tree = {}
result.each { |x| tree[x.obj] = [x['parent'], x['name']] }
a = []
cur = obj
while cur
parent, name = *tree[cur]
a << [cur, name]
cur = parent
end
[obj, a.reverse]
end]
end