This implements regex-based tag filtering

This commit is contained in:
Scott Schneider 2015-06-01 16:23:11 -07:00
parent ae91077494
commit 4bed6edde4
2 changed files with 13 additions and 2 deletions

View file

@ -37,6 +37,12 @@ module Vmpooler
parsed_config[:graphite]['prefix'] ||= 'vmpooler' parsed_config[:graphite]['prefix'] ||= 'vmpooler'
end end
if parsed_config[:tagfilter]
parsed_config[:tagfilter].keys.each do |tag|
parsed_config[:tagfilter][tag] = Regexp.new(parsed_config[:tagfilter][tag])
end
end
parsed_config[:uptime] = Time.now parsed_config[:uptime] = Time.now
parsed_config parsed_config

View file

@ -542,8 +542,13 @@ 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| arg.keys.each do |tag|
backend.hset('vmpooler__vm__' + params[:hostname], 'tag:' + tag, arg[tag]) if Vmpooler::API.settings.config[:tagfilter] and Vmpooler::API.settings.config[:tagfilter][tag]
backend.hset('vmpooler__tag__' + Date.today.to_s, params[:hostname] + ':' + tag, arg[tag]) filter = Vmpooler::API.settings.config[:tagfilter][tag]
arg[tag] = arg[tag].match(filter).captures.join
end
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