From ec07f04d9516615feb71f4a28cf2ea42047890e6 Mon Sep 17 00:00:00 2001 From: kevpl Date: Tue, 19 Jun 2018 11:00:16 -0700 Subject: [PATCH] (MOB) refactor create_inventory into own method Takes the #INVENTORY section from the _check_pool method & splits it into its own method --- lib/vmpooler/pool_manager.rb | 30 +++++++++++++++++------------- spec/unit/pool_manager_spec.rb | 26 ++++++++++++++++++++++---- 2 files changed, 39 insertions(+), 17 deletions(-) diff --git a/lib/vmpooler/pool_manager.rb b/lib/vmpooler/pool_manager.rb index a00acb4..927404f 100644 --- a/lib/vmpooler/pool_manager.rb +++ b/lib/vmpooler/pool_manager.rb @@ -695,17 +695,7 @@ module Vmpooler end end - def _check_pool(pool, provider) - pool_check_response = { - discovered_vms: 0, - checked_running_vms: 0, - checked_ready_vms: 0, - checked_pending_vms: 0, - destroyed_vms: 0, - migrated_vms: 0, - cloned_vms: 0 - } - # INVENTORY + def create_inventory(pool, provider) inventory = {} begin provider.vms_in_pool(pool['name']).each do |vm| @@ -725,9 +715,23 @@ module Vmpooler inventory[vm['name']] = 1 end rescue => err - $logger.log('s', "[!] [#{pool['name']}] _check_pool failed with an error while inspecting inventory: #{err}") - return pool_check_response + $logger.log('s', "[!] [#{pool['name']}] _check_pool failed with an error while running create_inventory: #{err}") + raise(err) end + inventory + end + + def _check_pool(pool, provider) + pool_check_response = { + discovered_vms: 0, + checked_running_vms: 0, + checked_ready_vms: 0, + checked_pending_vms: 0, + destroyed_vms: 0, + migrated_vms: 0, + cloned_vms: 0 + } + inventory = create_inventory(pool, provider) # RUNNING $redis.smembers("vmpooler__running__#{pool['name']}").each do |vm| diff --git a/spec/unit/pool_manager_spec.rb b/spec/unit/pool_manager_spec.rb index be176d6..47d1138 100644 --- a/spec/unit/pool_manager_spec.rb +++ b/spec/unit/pool_manager_spec.rb @@ -2651,6 +2651,17 @@ EOT end end + 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 + + end + describe '#_check_pool' do let(:new_vm_response) { # Mock response from Base Provider for vms_in_pool @@ -2703,11 +2714,18 @@ EOT allow(provider).to receive(:vms_in_pool).with(pool).and_return(new_vm_response) end - 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 inspecting inventory: Mock Error") + it 'calls inventory correctly' do + expect(subject).to receive(:create_inventory) + subject._check_pool(pool_object, provider) + end - subject._check_pool(pool_object,provider) + it 'passes #create_inventory errors correctly' 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/) end it 'should not perform any other actions if an error occurs' do