Merge pull request #320 from mattkirby/pooler_140

(POOLER-140) Ensure a running VM stays in a queue
This commit is contained in:
Samuel 2019-04-09 13:48:55 -05:00 committed by GitHub
commit 5351c9f45e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 2 deletions

View file

@ -68,9 +68,9 @@ module Vmpooler
end
template_backends.each do |template_backend|
vm = backend.spop("vmpooler__ready__#{template_backend}")
vm = backend.smembers("vmpooler__ready__#{template_backend}")[-1]
if vm
backend.sadd("vmpooler__running__#{template_backend}", vm)
backend.smove("vmpooler__ready__#{template_backend}", "vmpooler__running__#{template_backend}", vm)
return [vm, template_backend, template]
end
end

View file

@ -213,6 +213,24 @@ describe Vmpooler::API::V1 do
expect_json(ok = true, http = 200)
end
it 'returns the first VM that was moved to the ready state when checking out a VM' do
create_ready_vm 'pool1', '1abcdefghijklmnop'
create_ready_vm 'pool1', '2abcdefghijklmnop'
create_ready_vm 'pool1', '3abcdefghijklmnop'
post "#{prefix}/vm", '{"pool1":"1"}'
expected = {
ok: true,
"pool1": {
"hostname": "1abcdefghijklmnop"
}
}
expect(last_response.body).to eq(JSON.pretty_generate(expected))
expect_json(ok = true, http = 200)
end
it 'fails when not all requested vms can be allocated' do
create_ready_vm 'pool1', '1abcdefghijklmnop'