(MOB) refactor create_inventory into own method

Takes the #INVENTORY section from
the _check_pool method & splits
it into its own method
This commit is contained in:
kevpl 2018-06-19 11:00:16 -07:00
parent 987cdcdee3
commit 03a16a1a4d
No known key found for this signature in database
GPG key ID: A2791F7C6D6C0186
2 changed files with 39 additions and 17 deletions

View file

@ -555,17 +555,7 @@ module Vmpooler
end end
end end
def _check_pool(pool, provider) def create_inventory(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
inventory = {} inventory = {}
begin begin
provider.vms_in_pool(pool['name']).each do |vm| provider.vms_in_pool(pool['name']).each do |vm|
@ -585,9 +575,23 @@ module Vmpooler
inventory[vm['name']] = 1 inventory[vm['name']] = 1
end end
rescue => err rescue => err
$logger.log('s', "[!] [#{pool['name']}] _check_pool failed with an error while inspecting inventory: #{err}") $logger.log('s', "[!] [#{pool['name']}] _check_pool failed with an error while running create_inventory: #{err}")
return pool_check_response raise(err)
end 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 # RUNNING
$redis.smembers("vmpooler__running__#{pool['name']}").each do |vm| $redis.smembers("vmpooler__running__#{pool['name']}").each do |vm|

View file

@ -2153,6 +2153,17 @@ EOT
end end
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 describe '#_check_pool' do
let(:new_vm_response) { let(:new_vm_response) {
# Mock response from Base Provider for vms_in_pool # Mock response from Base Provider for vms_in_pool
@ -2205,11 +2216,18 @@ EOT
allow(provider).to receive(:vms_in_pool).with(pool).and_return(new_vm_response) allow(provider).to receive(:vms_in_pool).with(pool).and_return(new_vm_response)
end end
it 'should log an error if one occurs' do it 'calls inventory correctly' do
expect(provider).to receive(:vms_in_pool).and_raise(RuntimeError,'Mock Error') expect(subject).to receive(:create_inventory)
expect(logger).to receive(:log).with('s', "[!] [#{pool}] _check_pool failed with an error while inspecting inventory: Mock Error") 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 end
it 'should not perform any other actions if an error occurs' do it 'should not perform any other actions if an error occurs' do