mirror of
https://github.com/puppetlabs/vmpooler.git
synced 2026-01-26 10:08:40 -05:00
Create daily tag indexes, report in /summary
- Store daily tag roll-ups in vmpooler__tag__<date> - GET /summary will display daily tag counts and roll-up
This commit is contained in:
parent
640b1ef4da
commit
4cfc078684
2 changed files with 37 additions and 1 deletions
|
|
@ -147,6 +147,28 @@ module Vmpooler
|
||||||
queue
|
queue
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def get_tag_metrics(backend, date_str)
|
||||||
|
tags = {}
|
||||||
|
|
||||||
|
backend.hgetall('vmpooler__tag__' + date_str).each do |key, value|
|
||||||
|
hostname = 'unknown'
|
||||||
|
tag = 'unknown'
|
||||||
|
|
||||||
|
if key =~ /\:/
|
||||||
|
hostname, tag = key.split(':', 2)
|
||||||
|
end
|
||||||
|
|
||||||
|
tags[tag] ||= {}
|
||||||
|
tags[tag][value] ||= 0
|
||||||
|
tags[tag][value] += 1
|
||||||
|
|
||||||
|
tags[tag]['total'] ||= 0
|
||||||
|
tags[tag]['total'] += 1
|
||||||
|
end
|
||||||
|
|
||||||
|
tags
|
||||||
|
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}.merge(opts)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -99,6 +99,7 @@ module Vmpooler
|
||||||
pool: {}
|
pool: {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
tag: {},
|
||||||
daily: []
|
daily: []
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -124,7 +125,8 @@ module Vmpooler
|
||||||
daily = {
|
daily = {
|
||||||
date: date.to_s,
|
date: date.to_s,
|
||||||
boot: get_task_metrics(backend, 'boot', date.to_s, :bypool => true),
|
boot: get_task_metrics(backend, 'boot', date.to_s, :bypool => true),
|
||||||
clone: get_task_metrics(backend, 'clone', date.to_s, :bypool => true)
|
clone: get_task_metrics(backend, 'clone', date.to_s, :bypool => true),
|
||||||
|
tag: get_tag_metrics(backend, date.to_s)
|
||||||
}
|
}
|
||||||
|
|
||||||
result[:daily].push(daily)
|
result[:daily].push(daily)
|
||||||
|
|
@ -194,6 +196,17 @@ module Vmpooler
|
||||||
end
|
end
|
||||||
end
|
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
|
||||||
|
|
||||||
JSON.pretty_generate(result)
|
JSON.pretty_generate(result)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -530,6 +543,7 @@ module Vmpooler
|
||||||
when 'tags'
|
when 'tags'
|
||||||
arg.keys.each do |tag|
|
arg.keys.each do |tag|
|
||||||
backend.hset('vmpooler__vm__' + params[:hostname], 'tag:' + tag, arg[tag])
|
backend.hset('vmpooler__vm__' + params[:hostname], 'tag:' + tag, arg[tag])
|
||||||
|
backend.hset('vmpooler__tag__' + Date.today.to_s, params[:hostname] + ':' + tag, arg[tag])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue