Move tag-filtering and exporting to API helper methods

This commit is contained in:
Scott Schneider 2015-06-30 12:46:54 -07:00
parent 6523062b62
commit c720f12c05
2 changed files with 22 additions and 11 deletions

View file

@ -79,6 +79,26 @@ module Vmpooler
return false return false
end end
def export_tags(backend, hostname, tags)
tags.each_pair do |tag, value|
next if value.nil? or value.empty?
backend.hset('vmpooler__vm__' + hostname, 'tag:' + tag, value)
backend.hset('vmpooler__tag__' + Date.today.to_s, hostname + ':' + tag, value)
end
end
def filter_tags(tags)
return unless Vmpooler::API.settings.config[:tagfilter]
tags.each_pair do |tag, value|
next unless filter = Vmpooler::API.settings.config[:tagfilter][tag]
tags[tag] = value.match(filter).captures.join if value.match(filter)
end
tags
end
def mean(list) def mean(list)
s = list.map(&:to_f).reduce(:+).to_f s = list.map(&:to_f).reduce(:+).to_f
(s > 0 && list.length > 0) ? s / list.length.to_f : 0 (s > 0 && list.length > 0) ? s / list.length.to_f : 0

View file

@ -497,17 +497,8 @@ module Vmpooler
backend.hset('vmpooler__vm__' + params[:hostname], param, arg) backend.hset('vmpooler__vm__' + params[:hostname], param, arg)
when 'tags' when 'tags'
arg.keys.each do |tag| filter_tags(arg)
if Vmpooler::API.settings.config[:tagfilter] and Vmpooler::API.settings.config[:tagfilter][tag] export_tags(backend, params[:hostname], arg)
filter = Vmpooler::API.settings.config[:tagfilter][tag]
arg[tag] = arg[tag].match(filter).captures.join if arg[tag].match(filter)
end
next if arg[tag].nil? or arg[tag].empty?
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