Как получить сводную информацию о центре данных vSphere, используя гем rbvmomi? - PullRequest
0 голосов
/ 17 октября 2018

Лучший вопрос должен быть, как правило, как вы используете гем 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

Есть ли более простой способ без всех циклов?Обратите внимание, что я никогда не получал точного подсчета количества виртуальных машин.

...