Лучший вопрос должен быть, как правило, как вы используете гем rbvmomi?Я не могу найти какую-либо полезную документацию.Я просто делал <resource>.methods.sort - Object.methods
для каждого объекта, чтобы увидеть, что возможно.Если есть лучший способ, я хотел бы услышать об этом.
Но в любом случае, я ищу сводные данные, в том числе: - Количество хостов - Количество виртуальных машин - Потоки процессора - Объем памяти -Память свободна - Емкость - Используется хранилище
Все это показано на сводной странице веб-клиента vSphere для центра обработки данных, поэтому я ожидаю, что его можно получить с помощью всего нескольких вызовов API, но я не былсмог найти решение с помощью гема rbvmomi.
Вот что у меня есть на данный момент:
num_vms = 0
mem_capacity = 0 # In bytes
mem_free = 0 # In bytes
storage_capacity = 0 # In bytes
storage_free = 0 # In bytes
dc = vim.client.serviceInstance.find_datacenter('My Datacenter')
dc.vmFolder.children.count # Returns wrong number of VMs (much too low)
dc.hostFolder.children.each do |cluster|
cpu_threads = cluster.summary.numCpuThreads
num_hosts = cluster.summary.numHosts
cluster.host.each do |host|
mem_size = host.hardware.memorySize # Bytes
mem_used = host.summary.quickStats.overallMemoryUsage # Megabytes
mem_capacity += mem_size
mem_free += mem_size - (mem_used * 1024 * 1024)
end
end
dc.datastores.each do |datastore|
next unless datastore.summary.type == 'NFS'
storage_capacity += datastore.summary.capacity
storage_free += datastore.summary.freeSpace
end
Есть ли более простой способ без всех циклов?Обратите внимание, что я никогда не получал точного подсчета количества виртуальных машин.