class RbVmomi::VIM::ComputeResource

Copyright © 2011-2017 VMware, Inc. All Rights Reserved. SPDX-License-Identifier: MIT

Public Instance Methods

stats() click to toggle source

Aggregate cluster information.

@note Values are returned in a hash.

@return [Mhz] totalCPU: Sum of the frequencies of each CPU in the cluster. @return [Mhz] usedCPU: CPU cycles used across the cluster. @return [MB] totalMem: Total RAM. @return [MB] usedMem: Used RAM.

# File lib/rbvmomi/vim/ComputeResource.rb, line 14
def stats
  filterSpec = RbVmomi::VIM.PropertyFilterSpec(
    objectSet: [{
      obj: self,
      selectSet: [
        RbVmomi::VIM.TraversalSpec(
          name: 'tsHosts',
          type: 'ComputeResource',
          path: 'host',
          skip: false
        )
      ]
    }],
    propSet: [{
      pathSet: %w(name overallStatus summary.hardware.cpuMhz
                  summary.hardware.numCpuCores summary.hardware.memorySize
                  summary.quickStats.overallCpuUsage
                  summary.quickStats.overallMemoryUsage),
      type: 'HostSystem'
    }]
  )

  result = _connection.propertyCollector.RetrieveProperties(specSet: [filterSpec])

  stats = {
    totalCPU: 0,
    totalMem: 0,
    usedCPU: 0,
    usedMem: 0,
  }

  result.each do |x|
    next if x['overallStatus'] == 'red'

    stats[:totalCPU] += x['summary.hardware.cpuMhz'] * x['summary.hardware.numCpuCores']
    stats[:totalMem] += x['summary.hardware.memorySize'] / (1024*1024)
    stats[:usedCPU] += x['summary.quickStats.overallCpuUsage'] || 0
    stats[:usedMem] += x['summary.quickStats.overallMemoryUsage'] || 0
  end

  stats
end