class Chef::Knife::VspherePoolShow
Public Instance Methods
run()
click to toggle source
# File lib/chef/knife/vsphere_pool_show.rb, line 27 def run $stdout.sync = true poolname = @name_args[0] if poolname.nil? show_usage fatal_exit("You must specify a resource poor or cluster name (see knife vsphere pool list)") end query_string = @name_args[1] if query_string.nil? show_usage fatal_exit("You must specify a QUERY value (e.g. summary.overallStatus )") end vim_connection dc = datacenter folder = dc.hostFolder pool = traverse_folders_for_pool(folder, poolname) || abort("Pool #{poolname} not found") # split QUERY by dots, and walk the object model query = query_string.split "." result = pool query.each do |part| message, index = part.split(/[\[\]]/) unless result.respond_to? message.to_sym fatal_exit("\"#{query_string}\" not recognized.") end result = index ? result.send(message)[index.to_i] : result.send(message) end puts result end
traverse_folders_for_pool(folder, poolname)
click to toggle source
# File lib/chef/knife/vsphere_pool_show.rb, line 14 def traverse_folders_for_pool(folder, poolname) children = folder.children.find_all children.each do |child| if child.class == RbVmomi::VIM::ClusterComputeResource || child.class == RbVmomi::VIM::ComputeResource || child.class == RbVmomi::VIM::ResourcePool return child if child.name == poolname elsif child.class == RbVmomi::VIM::Folder pool = traverse_folders_for_pool(child, poolname) return pool if pool end end false end