module SearchHelper

Some helpers for faster searching of the inventory

Public Instance Methods

get_all_objects(opts = {}) click to toggle source
# File lib/chef/knife/helpers/search_helper.rb, line 13
def get_all_objects(opts = {})
  pc = vim_connection.serviceInstance.content.propertyCollector
  viewmgr = vim_connection.serviceInstance.content.viewManager
  folder = if opts[:folder]
             find_folder(opts[:folder])
           else
             vim_connection.serviceInstance.content.rootFolder
           end
  vmview = viewmgr.CreateContainerView(container: folder,
                                       type: [opts[:type]],
                                       recursive: true)

  opts[:properties] ||= ["name"]

  filter_spec = RbVmomi::VIM.PropertyFilterSpec(
    objectSet: [
      obj: vmview,
      skip: true,
      selectSet: [
        RbVmomi::VIM.TraversalSpec(
          name: "traverseEntities",
          type: "ContainerView",
          path: "view",
          skip: false
        ),
      ],
    ],
    propSet: [
      { type: opts[:type], pathSet: opts[:properties] },
    ]
  )
  pc.RetrieveProperties(specSet: [filter_spec])
end
get_all_vm_objects(opts = {}) click to toggle source

Retrieves all the VM objects and returns their ObjectContents Note that since it's a ObjectContent coming back, the individual object's [] will return only the properties you asked for and `#obj` will return the actual object (but make a call to the server) param [Array<String>] properties to retrieve @return [Array<RbVmomi::VIM::ObjectContent>]

# File lib/chef/knife/helpers/search_helper.rb, line 9
def get_all_vm_objects(opts = {})
  get_all_objects(opts.merge(type: "VirtualMachine"))
end
get_vm_by_name(vmname, folder = nil) click to toggle source
# File lib/chef/knife/helpers/search_helper.rb, line 47
def get_vm_by_name(vmname, folder = nil)
  vm = get_all_vm_objects(folder: folder).detect { |r| r["name"] == vmname }
  vm ? vm.obj : nil
end
get_vm_host_by_name(name, folder = nil) click to toggle source
# File lib/chef/knife/helpers/search_helper.rb, line 52
def get_vm_host_by_name(name, folder = nil)
  host = get_all_objects(type: "HostSystem", folder: folder).detect { |r| r["name"] == name }
  host ? host.obj : nil
end