mirror of
https://github.com/puppetlabs/vmpooler.git
synced 2026-01-26 18:08:42 -05:00
Add get_tag_summary and get_task_summary helpers
This commit is contained in:
parent
ccede2780e
commit
bea0445020
1 changed files with 121 additions and 2 deletions
|
|
@ -147,7 +147,9 @@ module Vmpooler
|
||||||
queue
|
queue
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_tag_metrics(backend, date_str)
|
def get_tag_metrics(backend, date_str, opts = {})
|
||||||
|
opts = {:only => false}.merge(opts)
|
||||||
|
|
||||||
tags = {}
|
tags = {}
|
||||||
|
|
||||||
backend.hgetall('vmpooler__tag__' + date_str).each do |key, value|
|
backend.hgetall('vmpooler__tag__' + date_str).each do |key, value|
|
||||||
|
|
@ -158,6 +160,10 @@ module Vmpooler
|
||||||
hostname, tag = key.split(':', 2)
|
hostname, tag = key.split(':', 2)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if opts[:only]
|
||||||
|
next unless tag == opts[:only]
|
||||||
|
end
|
||||||
|
|
||||||
tags[tag] ||= {}
|
tags[tag] ||= {}
|
||||||
tags[tag][value] ||= 0
|
tags[tag][value] ||= 0
|
||||||
tags[tag][value] += 1
|
tags[tag][value] += 1
|
||||||
|
|
@ -169,8 +175,38 @@ module Vmpooler
|
||||||
tags
|
tags
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def get_tag_summary(backend, from_date, to_date, opts = {})
|
||||||
|
opts = {:only => false}.merge(opts)
|
||||||
|
|
||||||
|
result = {
|
||||||
|
tag: {},
|
||||||
|
daily: []
|
||||||
|
}
|
||||||
|
|
||||||
|
(from_date..to_date).each do |date|
|
||||||
|
daily = {
|
||||||
|
date: date.to_s,
|
||||||
|
tag: get_tag_metrics(backend, date.to_s, opts)
|
||||||
|
}
|
||||||
|
result[:daily].push(daily)
|
||||||
|
end
|
||||||
|
|
||||||
|
result[:daily].each do |daily|
|
||||||
|
daily[:tag].each_key do |tag|
|
||||||
|
result[:tag][tag] ||= {}
|
||||||
|
|
||||||
|
daily[:tag][tag].each do |key, value|
|
||||||
|
result[:tag][tag][key] ||= 0
|
||||||
|
result[:tag][tag][key] += value
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
result
|
||||||
|
end
|
||||||
|
|
||||||
def get_task_metrics(backend, task_str, date_str, opts = {})
|
def get_task_metrics(backend, task_str, date_str, opts = {})
|
||||||
opts = {:bypool => false}.merge(opts)
|
opts = {:bypool => false, :only => false}.merge(opts)
|
||||||
|
|
||||||
task = {
|
task = {
|
||||||
duration: {
|
duration: {
|
||||||
|
|
@ -226,9 +262,92 @@ module Vmpooler
|
||||||
task[:duration][:min], task[:duration][:max] = task_times.minmax
|
task[:duration][:min], task[:duration][:max] = task_times.minmax
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if opts[:only]
|
||||||
|
task.each_key do |key|
|
||||||
|
task.delete(key) unless key.to_s == opts[:only]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
task
|
task
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def get_task_summary(backend, task_str, from_date, to_date, opts = {})
|
||||||
|
opts = {:bypool => false, :only => false}.merge(opts)
|
||||||
|
|
||||||
|
result = {
|
||||||
|
task_str => {},
|
||||||
|
daily: []
|
||||||
|
}
|
||||||
|
|
||||||
|
(from_date..to_date).each do |date|
|
||||||
|
daily = {
|
||||||
|
date: date.to_s,
|
||||||
|
task_str => get_task_metrics(backend, task_str, date.to_s, opts)
|
||||||
|
}
|
||||||
|
result[:daily].push(daily)
|
||||||
|
end
|
||||||
|
|
||||||
|
daily_task = {}
|
||||||
|
daily_task_bypool = {} if opts[:bypool] == true
|
||||||
|
|
||||||
|
result[:daily].each do |daily|
|
||||||
|
daily[task_str].each_key do |type|
|
||||||
|
result[task_str][type] ||= {}
|
||||||
|
daily_task[type] ||= {}
|
||||||
|
|
||||||
|
['min', 'max'].each do |key|
|
||||||
|
if daily[task_str][type][key]
|
||||||
|
daily_task[type][:data] ||= []
|
||||||
|
daily_task[type][:data].push(daily[task_str][type][key])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
result[task_str][type][:total] ||= 0
|
||||||
|
result[task_str][type][:total] += daily[task_str][type][:total]
|
||||||
|
|
||||||
|
if opts[:bypool] == true
|
||||||
|
result[task_str][type][:pool] ||= {}
|
||||||
|
daily_task_bypool[type] ||= {}
|
||||||
|
|
||||||
|
daily[task_str][type][:pool].each_key do |pool|
|
||||||
|
result[task_str][type][:pool][pool] ||= {}
|
||||||
|
daily_task_bypool[type][pool] ||= {}
|
||||||
|
|
||||||
|
['min', 'max'].each do |key|
|
||||||
|
if daily[task_str][type][:pool][pool][key]
|
||||||
|
daily_task_bypool[type][pool][:data] ||= []
|
||||||
|
daily_task_bypool[type][pool][:data].push(daily[task_str][type][:pool][pool][key])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
result[task_str][type][:pool][pool][:total] ||= 0
|
||||||
|
result[task_str][type][:pool][pool][:total] += daily[task_str][type][:pool][pool][:total]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
result[task_str].each_key do |type|
|
||||||
|
if daily_task[type][:data]
|
||||||
|
result[task_str][type][:min], result[task_str][type][:max] = daily_task[type][:data].minmax
|
||||||
|
result[task_str][type][:average] = mean(daily_task[type][:data])
|
||||||
|
end
|
||||||
|
|
||||||
|
if opts[:bypool] == true
|
||||||
|
result[task_str].each_key do |type|
|
||||||
|
result[task_str][type][:pool].each_key do |pool|
|
||||||
|
if daily_task_bypool[type][pool][:data]
|
||||||
|
result[task_str][type][:pool][pool][:min], result[task_str][type][:pool][pool][:max] = daily_task_bypool[type][pool][:data].minmax
|
||||||
|
result[task_str][type][:pool][pool][:average] = mean(daily_task_bypool[type][pool][:data])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
result
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue