diff --git a/lib/vmpooler/pool_manager.rb b/lib/vmpooler/pool_manager.rb index 6d0bdfd..45bcd7a 100644 --- a/lib/vmpooler/pool_manager.rb +++ b/lib/vmpooler/pool_manager.rb @@ -721,8 +721,20 @@ module Vmpooler inventory end - def check_running_pool_vms(pool, provider, pool_check_response) - # do stuff here + def check_running_pool_vms(pool_name, provider, pool_check_response, inventory) + $redis.smembers("vmpooler__running__#{pool_name}").each do |vm| + if inventory[vm] + begin + vm_lifetime = $redis.hget('vmpooler__vm__' + vm, 'lifetime') || $config[:config]['vm_lifetime'] || 12 + pool_check_response[:checked_running_vms] += 1 + check_running_vm(vm, pool_name, vm_lifetime, provider) + rescue => err + $logger.log('d', "[!] [#{pool_name}] _check_pool with an error while evaluating running VMs: #{err}") + end + else + move_vm_queue(pool_name, vm, 'running', 'completed', 'is a running VM but is missing from inventory. Marking as completed.') + end + end end def _check_pool(pool, provider) @@ -742,26 +754,8 @@ module Vmpooler return(pool_check_response) end - # RUNNING - begin - check_running_pool_vms(pool, provider, pool_check_response) - rescue => err - return(pool_check_response) - end + check_running_pool_vms(pool['name'], provider, pool_check_response, inventory) - $redis.smembers("vmpooler__running__#{pool['name']}").each do |vm| - if inventory[vm] - begin - vm_lifetime = $redis.hget('vmpooler__vm__' + vm, 'lifetime') || $config[:config]['vm_lifetime'] || 12 - pool_check_response[:checked_running_vms] += 1 - check_running_vm(vm, pool['name'], vm_lifetime, provider) - rescue => err - $logger.log('d', "[!] [#{pool['name']}] _check_pool with an error while evaluating running VMs: #{err}") - end - else - move_vm_queue(pool['name'], vm, 'running', 'completed', 'is a running VM but is missing from inventory. Marking as completed.') - end - end # READY $redis.smembers("vmpooler__ready__#{pool['name']}").each do |vm| diff --git a/spec/unit/pool_manager_spec.rb b/spec/unit/pool_manager_spec.rb index 74a2446..3142cee 100644 --- a/spec/unit/pool_manager_spec.rb +++ b/spec/unit/pool_manager_spec.rb @@ -2653,13 +2653,15 @@ EOT describe '#create_inventory' do - it 'should log an error if one occurs' # do -# expect(provider).to receive(:vms_in_pool).and_raise(RuntimeError,'Mock Error') -# expect(logger).to receive(:log).with('s', "[!] [#{pool}] _check_pool failed with an error while running create_inventory: Mock Error") -# -# subject._check_pool(pool_object,provider) -# end + it 'should log an error if one occurs' do + allow(provider).to receive(:vms_in_pool).and_raise( + RuntimeError,'Mock Error' + ) + expect { + subject.create_inventory(config[:pools].first, provider, {}) + }.to raise_error(RuntimeError, 'Mock Error') + end end describe '#_check_pool' do @@ -2719,13 +2721,11 @@ EOT subject._check_pool(pool_object, provider) end - it 'passes #create_inventory errors correctly' do + it 'returns a hash when #create_inventory errors' do allow(subject).to receive(:create_inventory).and_raise( RuntimeError,'Mock Error' ) - expect { - subject._check_pool(pool_object, provider) - }.to raise_error(RuntimeError, /Mock Error/) + expect(subject._check_pool(pool_object, provider)).to be_kind_of(Hash) end it 'should not perform any other actions if an error occurs' do @@ -2733,11 +2733,8 @@ EOT RuntimeError,'Mock Error' ) - expect { - subject._check_pool(pool_object, provider) - }.to raise_error(RuntimeError, /Mock Error/) - expect(subject).to_not receive(:check_running_pool_vms) + subject._check_pool(pool_object, provider) end it 'should return that no actions were taken' do