mirror of
https://github.com/puppetlabs/vmpooler.git
synced 2026-01-26 10:08:40 -05:00
Ensure all configured providers are loaded
Prior to this, providers that should have been loaded per the provider_class key of the providers hash were not actually loaded.
This commit is contained in:
parent
7872bfe8fc
commit
45378d46b9
2 changed files with 93 additions and 2 deletions
|
|
@ -619,8 +619,21 @@ module Vmpooler
|
||||||
# @return [Array] - a list of used providers from the config file, defaults to the default providers
|
# @return [Array] - a list of used providers from the config file, defaults to the default providers
|
||||||
# ie. ["dummy"]
|
# ie. ["dummy"]
|
||||||
def used_providers
|
def used_providers
|
||||||
pools = config[:pools] || []
|
# create an array of provider classes based on the config
|
||||||
@used_providers ||= (pools.map { |pool| pool[:provider] || pool['provider'] }.compact + default_providers).uniq
|
if config[:providers]
|
||||||
|
config_provider_names = config[:providers].keys
|
||||||
|
config_providers = config_provider_names.map do |config_provider_name|
|
||||||
|
if config[:providers][config_provider_name] && config[:providers][config_provider_name]['provider_class']
|
||||||
|
config[:providers][config_provider_name]['provider_class'].to_s
|
||||||
|
else
|
||||||
|
config_provider_name.to_s
|
||||||
|
end
|
||||||
|
end.compact.uniq
|
||||||
|
else
|
||||||
|
config_providers = []
|
||||||
|
end
|
||||||
|
# return the unique array of providers from the config and VMPooler defaults
|
||||||
|
@used_providers ||= (config_providers + default_providers).uniq
|
||||||
end
|
end
|
||||||
|
|
||||||
# @return [Array] - returns a list of providers that should always be loaded
|
# @return [Array] - returns a list of providers that should always be loaded
|
||||||
|
|
|
||||||
|
|
@ -75,6 +75,84 @@ EOT
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe '#used_providers' do
|
||||||
|
context 'with no named providers' do
|
||||||
|
let(:config) { YAML.load(<<-EOT
|
||||||
|
---
|
||||||
|
:config:
|
||||||
|
:pools:
|
||||||
|
- name: '#{pool}'
|
||||||
|
size: 1
|
||||||
|
provider: 'spoof'
|
||||||
|
EOT
|
||||||
|
)
|
||||||
|
}
|
||||||
|
it do
|
||||||
|
result = ["dummy"]
|
||||||
|
expect(subject.used_providers).to eq(result)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
context 'with one named provider without a provider_class key' do
|
||||||
|
let(:config) { YAML.load(<<-EOT
|
||||||
|
---
|
||||||
|
:config:
|
||||||
|
:providers:
|
||||||
|
:mock:
|
||||||
|
:pools:
|
||||||
|
- name: '#{pool}'
|
||||||
|
size: 1
|
||||||
|
provider: 'spoof'
|
||||||
|
EOT
|
||||||
|
)
|
||||||
|
}
|
||||||
|
it do
|
||||||
|
result = ["mock", "dummy"]
|
||||||
|
expect(subject.used_providers).to eq(result)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'with one named provider with a provider_class key' do
|
||||||
|
let(:config) { YAML.load(<<-EOT
|
||||||
|
---
|
||||||
|
:config:
|
||||||
|
:providers:
|
||||||
|
:mock:
|
||||||
|
provider_class: 'mock_mock'
|
||||||
|
:pools:
|
||||||
|
- name: '#{pool}'
|
||||||
|
size: 1
|
||||||
|
provider: 'spoof'
|
||||||
|
EOT
|
||||||
|
)
|
||||||
|
}
|
||||||
|
it do
|
||||||
|
result = ["mock_mock", "dummy"]
|
||||||
|
expect(subject.used_providers).to eq(result)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'with one named provider with a provider_class key and one without' do
|
||||||
|
let(:config) { YAML.load(<<-EOT
|
||||||
|
---
|
||||||
|
:config:
|
||||||
|
:providers:
|
||||||
|
:mock:
|
||||||
|
provider_class: 'mock_mock'
|
||||||
|
:foo:
|
||||||
|
:pools:
|
||||||
|
- name: '#{pool}'
|
||||||
|
size: 1
|
||||||
|
provider: 'spoof'
|
||||||
|
EOT
|
||||||
|
)
|
||||||
|
}
|
||||||
|
it do
|
||||||
|
result = ["mock_mock", "foo", "dummy"]
|
||||||
|
expect(subject.used_providers).to eq(result)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
it '#default_providers' do
|
it '#default_providers' do
|
||||||
expect(subject.default_providers).to eq(['dummy'])
|
expect(subject.default_providers).to eq(['dummy'])
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue