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:
Scott Schneider 2015-05-07 08:46:35 -07:00
parent 640b1ef4da
commit 4cfc078684
2 changed files with 37 additions and 1 deletions

View file

@ -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)

View file

@ -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