From dddbeba4a6d48f14518a89ef2b2e32eb0b525b6a Mon Sep 17 00:00:00 2001 From: "kirby@puppetlabs.com" Date: Tue, 12 May 2020 09:40:47 -0700 Subject: [PATCH] Identify when a cloned VM is being checked for ready for a request that has been deleted --- lib/vmpooler/pool_manager.rb | 3 +++ spec/unit/pool_manager_spec.rb | 22 ++++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/lib/vmpooler/pool_manager.rb b/lib/vmpooler/pool_manager.rb index e68343f..f386b1f 100644 --- a/lib/vmpooler/pool_manager.rb +++ b/lib/vmpooler/pool_manager.rb @@ -139,6 +139,9 @@ module Vmpooler if ondemandrequest_hash['status'] == 'failed' move_vm_queue(pool, vm, 'pending', 'completed', redis, "moved to completed queue. '#{request_id}' could not be filled in time") return nil + elsif ondemandrequest_hash['status'] == 'deleted' + move_vm_queue(pool, vm, 'pending', 'completed', redis, "moved to completed queue. '#{request_id}' has been deleted") + return nil end pool_alias = redis.hget("vmpooler__vm__#{vm}", 'pool_alias') diff --git a/spec/unit/pool_manager_spec.rb b/spec/unit/pool_manager_spec.rb index baa1df8..03d4f76 100644 --- a/spec/unit/pool_manager_spec.rb +++ b/spec/unit/pool_manager_spec.rb @@ -358,6 +358,28 @@ EOT end end + context 'when the request has been marked as deleted' do + before(:each) do + redis_connection_pool.with do |redis| + redis.hset("vmpooler__odrequest__#{request_id}", 'status', 'deleted') + end + end + + it 'moves the vm to completed' do + redis_connection_pool.with do |redis| + expect(subject).to receive(:move_vm_queue).with(pool, vm, 'pending', 'completed', redis, "moved to completed queue. '#{request_id}' has been deleted") + subject.move_pending_vm_to_ready(vm, pool, redis, request_id) + end + end + + it 'returns nil' do + redis_connection_pool.with do |redis| + result = subject.move_pending_vm_to_ready(vm, pool, redis, request_id) + expect(result).to be nil + end + end + end + context 'with auth on the request' do let(:user) { 'vmpuser' } let(:platform_alias) { pool }