class RbVmomi::VIM::PerformanceManager
Public Instance Methods
active_intervals()
click to toggle source
# File lib/rbvmomi/vim/PerformanceManager.rb, line 109 def active_intervals intervals = historicalInterval Hash[(1..4).map { |level| [level, intervals.select { |x| x.enabled && x.level >= level }] }] end
perfcounter_cached()
click to toggle source
# File lib/rbvmomi/vim/PerformanceManager.rb, line 20 def perfcounter_cached @perfcounter ||= perfCounter end
perfcounter_hash()
click to toggle source
# File lib/rbvmomi/vim/PerformanceManager.rb, line 24 def perfcounter_hash @perfcounter_hash ||= Hash[perfcounter_cached.map{|x| [x.name, x]}] end
perfcounter_idhash()
click to toggle source
# File lib/rbvmomi/vim/PerformanceManager.rb, line 28 def perfcounter_idhash @perfcounter_idhash ||= Hash[perfcounter_cached.map{|x| [x.key, x]}] end
provider_summary(obj)
click to toggle source
# File lib/rbvmomi/vim/PerformanceManager.rb, line 32 def provider_summary obj @provider_summary ||= {} @provider_summary[obj.class] ||= QueryPerfProviderSummary(:entity => obj) end
retrieve_stats(objects, metrics, opts = {})
click to toggle source
# File lib/rbvmomi/vim/PerformanceManager.rb, line 37 def retrieve_stats objects, metrics, opts = {} opts = opts.dup max_samples = opts[:max_samples] || 1 realtime = false if not opts[:interval] provider = provider_summary objects.first opts[:interval] = provider.refreshRate realtime = true else provider = provider_summary objects.first if opts[:interval] == provider.refreshRate realtime = true end end instances = opts[:instance] || '*' if !instances.is_a?(Array) instances = [instances] end metric_ids = [] metrics.each do |x| counter = perfcounter_hash[x] if !counter pp perfcounter_hash.keys fail "Counter for #{x} couldn't be found" end instances.each do |instance| metric_ids << RbVmomi::VIM::PerfMetricId(:counterId => counter.key, :instance => instance) end end query_specs = objects.map do |obj| RbVmomi::VIM::PerfQuerySpec({ :maxSample => max_samples, :entity => obj, :metricId => metric_ids, :intervalId => opts[:interval], :startTime => (realtime == false ? opts[:start_time].to_datetime : nil), }) end stats = QueryPerf(:querySpec => query_specs) if !opts[:multi_instance] Hash[stats.map do |res| [ res.entity, { :sampleInfo => res.sampleInfo, :metrics => Hash[res.value.map do |metric| metric_name = perfcounter_idhash[metric.id.counterId].name [metric_name, metric.value] end] } ] end] else Hash[stats.map do |res| [ res.entity, { :sampleInfo => res.sampleInfo, :metrics => Hash[res.value.map do |metric| metric_name = perfcounter_idhash[metric.id.counterId].name [[metric_name, metric.id.instance], metric.value] end] } ] end] end end