class RbVmomi::VIM::ManagedEntity

Copyright © 2011-2017 VMware, Inc. All Rights Reserved. SPDX-License-Identifier: MIT

Public Class Methods

paths(objs) click to toggle source

Retrieve the ancestors of a list of entries. @return [Hash] Object-indexed hash of ancestors of entities, starting with the root.

# File lib/rbvmomi/vim/ManagedEntity.rb, line 14
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

Public Instance Methods

path() click to toggle source

Retrieve the ancestors of the entity. @return [Array] Ancestors of this entity, starting with the root.

# File lib/rbvmomi/vim/ManagedEntity.rb, line 8
def path
  self.class.paths([self])[self]
end
pretty_path() click to toggle source

Return a string representation of path suitable for display. @return [String] @see path

# File lib/rbvmomi/vim/ManagedEntity.rb, line 58
def pretty_path
  path[1..-1].map { |x| x[1] } * '/'
end