Merge pull request #106 from sschneid/tag_filtering

Only filter regex matches
This commit is contained in:
Colin 2015-06-04 10:32:40 -07:00
commit 211cc54c42
2 changed files with 12 additions and 1 deletions

View file

@ -544,7 +544,7 @@ module Vmpooler
arg.keys.each do |tag| arg.keys.each do |tag|
if Vmpooler::API.settings.config[:tagfilter] and Vmpooler::API.settings.config[:tagfilter][tag] if Vmpooler::API.settings.config[:tagfilter] and Vmpooler::API.settings.config[:tagfilter][tag]
filter = Vmpooler::API.settings.config[:tagfilter][tag] filter = Vmpooler::API.settings.config[:tagfilter][tag]
arg[tag] = arg[tag].match(filter).captures.join arg[tag] = arg[tag].match(filter).captures.join if arg[tag].match(filter)
end end
backend.hset('vmpooler__vm__' + params[:hostname], 'tag:' + tag, arg[tag]) backend.hset('vmpooler__vm__' + params[:hostname], 'tag:' + tag, arg[tag])

View file

@ -347,6 +347,17 @@ describe Vmpooler::API::V1 do
expect(last_response.body).to eq(JSON.pretty_generate({'ok' => true})) expect(last_response.body).to eq(JSON.pretty_generate({'ok' => true}))
expect(last_response.status).to eq(200) expect(last_response.status).to eq(200)
end end
it 'doesn\'t eat tags not matching filter' do
expect(redis).to receive(:hset).with("vmpooler__vm__testhost", "tag:url", "foo.com")
put "#{prefix}/vm/testhost", '{"tags":{"url":"foo.com"}}'
expect(last_response).to be_ok
expect(last_response.header['Content-Type']).to eq('application/json')
expect(last_response.body).to eq(JSON.pretty_generate({'ok' => true}))
expect(last_response.status).to eq(200)
end
end end
context '(auth not configured)' do context '(auth not configured)' do