remove 'last minute' tcp vm_ready check from the api for pooled vms

the vm_ready methods should be implemented per provider and checking in the api
creates issues since provider code is not available. Removing this for the V2 api
This commit is contained in:
Samuel Beaulieu 2022-03-29 12:01:17 -05:00
parent dd375b20c3
commit a2d613782a
No known key found for this signature in database
GPG key ID: 12030F74136D0F34
4 changed files with 9 additions and 40 deletions

View file

@ -73,9 +73,6 @@ module Vmpooler
next if vms.empty? next if vms.empty?
vms.reverse.each do |vm| vms.reverse.each do |vm|
vm_domain = Parsing.get_domain_for_pool(full_config, template_backend)
ready = vm_ready?(vm, vm_domain)
if ready
smoved = backend.smove("vmpooler__ready__#{template_backend}", "vmpooler__running__#{template_backend}", vm) smoved = backend.smove("vmpooler__ready__#{template_backend}", "vmpooler__running__#{template_backend}", vm)
if smoved if smoved
return [vm, template_backend, template] return [vm, template_backend, template]
@ -83,10 +80,6 @@ module Vmpooler
metrics.increment("checkout.smove.failed.#{template_backend}") metrics.increment("checkout.smove.failed.#{template_backend}")
return [nil, nil, nil] return [nil, nil, nil]
end end
else
backend.smove("vmpooler__ready__#{template_backend}", "vmpooler__completed__#{template_backend}", vm)
metrics.increment("checkout.nonresponsive.#{template_backend}")
end
end end
end end
[nil, nil, nil] [nil, nil, nil]

View file

@ -124,8 +124,7 @@ describe Vmpooler::API::V1 do
end end
it 'returns 503 for empty pool referenced by alias' do it 'returns 503 for empty pool referenced by alias' do
create_ready_vm 'pool1', vmname, redis create_ready_vm 'pool2', vmname, redis
post "#{prefix}/vm/poolone"
post "#{prefix}/vm/poolone" post "#{prefix}/vm/poolone"
expected = { ok: false } expected = { ok: false }

View file

@ -129,8 +129,7 @@ describe Vmpooler::API::V2 do
end end
it 'returns 503 for empty pool referenced by alias' do it 'returns 503 for empty pool referenced by alias' do
create_ready_vm 'pool1', vmname, redis create_ready_vm 'pool2', vmname, redis
post "#{prefix}/vm/poolone"
post "#{prefix}/vm/poolone" post "#{prefix}/vm/poolone"
expected = { ok: false } expected = { ok: false }
@ -342,28 +341,6 @@ describe Vmpooler::API::V2 do
expect(pool_has_ready_vm?('pool1', '2abcdefghijklmnop', redis)).to eq(true) expect(pool_has_ready_vm?('pool1', '2abcdefghijklmnop', redis)).to eq(true)
end end
it 'returns the second VM when the first fails to respond' do
create_ready_vm 'pool1', vmname, redis
create_ready_vm 'pool1', "2#{vmname}", redis
allow_any_instance_of(Vmpooler::API::Helpers).to receive(:open_socket).with(vmname, 'one.example.com').and_raise('mockerror')
allow_any_instance_of(Vmpooler::API::Helpers).to receive(:open_socket).with("2#{vmname}", 'one.example.com').and_return(socket)
post "#{prefix}/vm", '{"pool1":"1"}'
expect_json(ok = true, http = 200)
expected = {
ok: true,
pool1: {
hostname: "2#{vmname}.one.example.com"
}
}
expect(last_response.body).to eq(JSON.pretty_generate(expected))
expect(pool_has_ready_vm?('pool1', vmname, redis)).to be false
end
context '(auth not configured)' do context '(auth not configured)' do
it 'does not extend VM lifetime if auth token is provided' do it 'does not extend VM lifetime if auth token is provided' do
app.settings.set :config, auth: false app.settings.set :config, auth: false

View file

@ -28,7 +28,7 @@ describe Vmpooler::API::V2 do
pools: [ pools: [
{'name' => 'pool1', 'size' => 5}, {'name' => 'pool1', 'size' => 5},
{'name' => 'pool2', 'size' => 10}, {'name' => 'pool2', 'size' => 10},
{'name' => 'poolone', 'size' => 0} {'name' => 'poolone', 'size' => 1}
], ],
statsd: { 'prefix' => 'stats_prefix'}, statsd: { 'prefix' => 'stats_prefix'},
alias: { 'poolone' => 'pool1' }, alias: { 'poolone' => 'pool1' },
@ -105,7 +105,7 @@ describe Vmpooler::API::V2 do
end end
it 'returns 503 for empty pool referenced by alias' do it 'returns 503 for empty pool referenced by alias' do
create_ready_vm 'pool1', 'abcdefghijklmnop', redis create_ready_vm 'pool2', 'abcdefghijklmnop', redis
post "#{prefix}/vm/poolone" post "#{prefix}/vm/poolone"
expected = { ok: false } expected = { ok: false }