class Chef::Knife::VsphereDatastoreList
Lists all known data stores in datacenter with sizes VsphereDatastorelist extends the BaseVspherecommand
Public Instance Methods
run()
click to toggle source
The main run method for datastore_list
# File lib/chef/knife/vsphere_datastore_list.rb, line 43 def run $stdout.sync = true vim_connection dc = datacenter folder = dc.hostFolder target_pool = get_config(:pool) pools = find_pools_and_clusters(folder, target_pool) if target_pool && pools.empty? fatal_exit("Pool #{target_pool} not found") end pool_info = pools.map do |pool| datastores = list_ds(pool) { "Pool" => pool.name, "Datastores" => datastores } end ui.output(pool_info) end
Private Instance Methods
list_ds(pool)
click to toggle source
# File lib/chef/knife/vsphere_datastore_list.rb, line 74 def list_ds(pool) pool.datastore.map do |store| avail = number_to_human_size(store.summary[:freeSpace]) cap = number_to_human_size(store.summary[:capacity]) ds_info = { "Datastore" => store.name, "Free" => avail, "Capacity" => cap } ds_info["Vms"] = list_vms(store) if get_config(:list) ds_info end end
list_vms(store)
click to toggle source
# File lib/chef/knife/vsphere_datastore_list.rb, line 65 def list_vms(store) store.vm.map do |vm| host_name = vm.guest[:hostName] guest_full_name = vm.guest[:guest_full_name] guest_state = vm.guest[:guest_state] { "VM Name" => host_name, "OS" => guest_full_name, "State" => guest_state } end end