diff --git a/lib/vmpooler/api/helpers.rb b/lib/vmpooler/api/helpers.rb index a97455b..334a99b 100644 --- a/lib/vmpooler/api/helpers.rb +++ b/lib/vmpooler/api/helpers.rb @@ -79,6 +79,26 @@ module Vmpooler return false 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) s = list.map(&:to_f).reduce(:+).to_f (s > 0 && list.length > 0) ? s / list.length.to_f : 0 diff --git a/lib/vmpooler/api/v1.rb b/lib/vmpooler/api/v1.rb index e24c03c..d27c474 100644 --- a/lib/vmpooler/api/v1.rb +++ b/lib/vmpooler/api/v1.rb @@ -497,17 +497,8 @@ module Vmpooler backend.hset('vmpooler__vm__' + params[:hostname], param, arg) when 'tags' - arg.keys.each do |tag| - if Vmpooler::API.settings.config[:tagfilter] and Vmpooler::API.settings.config[:tagfilter][tag] - 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 + filter_tags(arg) + export_tags(backend, params[:hostname], arg) end end