class Chef::Knife::VsphereClusterList

Lists all known clusters in the configured datacenter

Public Instance Methods

find_cluster_folder(folderName) click to toggle source
# File lib/chef/knife/vsphere_cluster_list.rb, line 33
def find_cluster_folder(folderName)
  dc = datacenter
  base_entity = dc.hostFolder
  entity_array = folderName.split("/")
  entity_array.each do |entityArrItem|
    if entityArrItem != ""
      base_entity = base_entity.childEntity.grep(RbVmomi::VIM::ManagedObject).find { |f| f.name == entityArrItem } ||
        abort("no such folder #{folderName} while looking for #{entityArrItem}")
    end
  end
  base_entity
end
run() click to toggle source
# File lib/chef/knife/vsphere_cluster_list.rb, line 46
def run
  vim_connection
  base_folder = find_cluster_folder(get_config(:folder))
  ui.output(traverse_folders(base_folder))
end
traverse_folders(folder) click to toggle source
# File lib/chef/knife/vsphere_cluster_list.rb, line 19
def traverse_folders(folder)
  return if folder.is_a? RbVmomi::VIM::VirtualApp

  if folder.is_a? RbVmomi::VIM::ClusterComputeResource
    clusters = folder.path[3..-1].reject { |p| p.last == "ClusterComputeResource" }
    return { "Cluster" => clusters.map(&:last).join("/") }
  end

  folders = find_all_in_folder(folder, RbVmomi::VIM::ManagedObject) || []
  folders.map do |child|
    traverse_folders(child)
  end
end