diff --git a/lib/vmpooler/api/v1.rb b/lib/vmpooler/api/v1.rb index dfba6fb..8fdc590 100644 --- a/lib/vmpooler/api/v1.rb +++ b/lib/vmpooler/api/v1.rb @@ -499,6 +499,8 @@ module Vmpooler 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 diff --git a/spec/vmpooler/api/v1_spec.rb b/spec/vmpooler/api/v1_spec.rb index 788bc24..7c17b82 100644 --- a/spec/vmpooler/api/v1_spec.rb +++ b/spec/vmpooler/api/v1_spec.rb @@ -323,6 +323,15 @@ describe Vmpooler::API::V1 do expect(last_response.status).to eq(200) end + it 'skips empty tags' do + put "#{prefix}/vm/testhost", '{"tags":{"tested_by":""}}' + + 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 + it 'does not set tags if request body format is invalid' do put "#{prefix}/vm/testhost", '{"tags":{"tested"}}'