(POOLER-70) Add get_provider_for_pool for VM Provider

This commit adds a helper method which retrieves the associated Provider object
for a pool by name
This commit is contained in:
Glenn Sarti 2017-04-03 15:33:10 -07:00
parent c09035cfcb
commit e01b96c6d0
2 changed files with 98 additions and 0 deletions

View file

@ -353,6 +353,17 @@ module Vmpooler
$redis.hget('vmpooler__vm__' + vm_name, 'template') $redis.hget('vmpooler__vm__' + vm_name, 'template')
end end
def get_provider_for_pool(pool_name)
provider_name = nil
$config[:pools].each do |pool|
next unless pool['name'] == pool_name
provider_name = pool['provider']
end
return nil if provider_name.nil?
$providers[provider_name]
end
def check_disk_queue(maxloop = 0, loop_delay = 5) def check_disk_queue(maxloop = 0, loop_delay = 5)
$logger.log('d', "[*] [disk_manager] starting worker thread") $logger.log('d', "[*] [disk_manager] starting worker thread")

View file

@ -1018,6 +1018,93 @@ EOT
end end
end end
describe '#get_provider_for_pool' do
let(:provider_name) { 'mock_provider' }
before do
expect(subject).not_to be_nil
# Inject mock provider into global variable - Note this is a code smell
$providers = { provider_name => provider }
end
after(:each) do
# Reset the global variable - Note this is a code smell
$providers = nil
end
context 'Given a pool name which does not exist' do
let(:config) { YAML.load(<<-EOT
---
:config:
:providers:
:mock:
:pools:
- name: '#{pool}'
size: 1
EOT
)}
it 'should return nil' do
expect(subject.get_provider_for_pool('pool_does_not_exist')).to be_nil
end
end
context 'Given a pool which does not have a provider' do
let(:config) { YAML.load(<<-EOT
---
:config:
:providers:
:mock:
:pools:
- name: '#{pool}'
size: 1
EOT
)}
it 'should return nil' do
expect(subject.get_provider_for_pool(pool)).to be_nil
end
end
context 'Given a pool which uses an invalid provider' do
let(:config) { YAML.load(<<-EOT
---
:config:
:providers:
:mock:
:pools:
- name: '#{pool}'
size: 1
provider: 'does_not_exist'
EOT
)}
it 'should return nil' do
expect(subject.get_provider_for_pool(pool)).to be_nil
end
end
context 'Given a pool which uses a valid provider' do
let(:config) { YAML.load(<<-EOT
---
:config:
:providers:
:mock:
:pools:
- name: '#{pool}'
size: 1
provider: #{provider_name}
EOT
)}
it 'should return a provider object' do
result = subject.get_provider_for_pool(pool)
expect(result).to_not be_nil
expect(result.name).to eq(provider_name)
end
end
end
describe '#check_disk_queue' do describe '#check_disk_queue' do
let(:threads) {[]} let(:threads) {[]}