class Object
Public Instance Methods
find_datastores()
click to toggle source
# File lib/chef/knife/vsphere_datastore_maxfree.rb, line 70 def find_datastores if get_config(:vlan) find_network(get_config(:vlan)).host.map(&:datastore).flatten elsif get_config(:pool) find_pools_and_clusters(datacenter.hostFolder, get_config(:pool)).map(&:datastore).flatten else datacenter.datastore end end
find_max_dscluster(folder, max_dscluster, regex)
click to toggle source
# File lib/chef/knife/vsphere_datastorecluster_maxfree.rb, line 31 def find_max_dscluster(folder, max_dscluster, regex) folder.childEntity.each do |child| if child.class.to_s == "Folder" sub_max = find_max_dscluster(child, max_dscluster, regex) max_dscluster = sub_max if max_dscluster(sub_max, max_dscluster) elsif child.class.to_s == "StoragePod" if max_dscluster(child, max_dscluster) && regex.match(child.name) max_dscluster = child end end end max_dscluster end
max_dscluster(dscluster, max_dscluster)
click to toggle source
# File lib/chef/knife/vsphere_datastorecluster_maxfree.rb, line 21 def max_dscluster(dscluster, max_dscluster) return true unless max_dscluster if dscluster.summary[:freeSpace] > max_dscluster.summary[:freeSpace] return true end false end
number_to_human_size(number)
click to toggle source
# File lib/chef/knife/vsphere_datastorecluster_list.rb, line 21 def number_to_human_size(number) number = number.to_f storage_units_fmt = %w{byte kB MB GB TB} base = 1024 if number.to_i < base unit = storage_units_fmt[0] else max_exp = storage_units_fmt.size - 1 exponent = (Math.log(number) / Math.log(base)).to_i # Convert to base exponent = max_exp if exponent > max_exp # we need this to avoid overflow for the highest unit number /= base**exponent unit = storage_units_fmt[exponent] end format("%0.2f %s", number, unit) end
print_dsclusters_in_folder(folder)
click to toggle source
# File lib/chef/knife/vsphere_datastorecluster_list.rb, line 45 def print_dsclusters_in_folder(folder) folder.childEntity.each do |child| next unless child.class.to_s == "StoragePod" avail = number_to_human_size(child.summary[:freeSpace]) cap = number_to_human_size(child.summary[:capacity]) puts "#{ui.color("DatastoreCluster", :cyan)}: #{child.name} (#{avail} / #{cap})" end end
traverse_folders_for_dsclusters(folder)
click to toggle source
# File lib/chef/knife/vsphere_datastorecluster_list.rb, line 38 def traverse_folders_for_dsclusters(folder) print_dsclusters_in_folder(folder) folder.childEntity.each do |child| traverse_folders_for_dsclusters(child) if child.class.to_s == "Folder" end end