mirror of
https://github.com/puppetlabs/vmfloaty.git
synced 2026-01-26 05:28:40 -05:00
(maint) Support any vmpooler for ABS via vmpooler_fallback
Before this change, the fallback vmpooler for ABS had to be named 'vmpooler' and it only supported one. With this new code, users can set a key within an 'abs' service type called vmpooler_fallback that points to any other service configured in the ~/.vmfloaty.yml config file. If not set, the appropriate error message is returned, with an example configuration. Added the various use cases for the config to the unit tests
This commit is contained in:
parent
512adb4af1
commit
5333158bdc
4 changed files with 74 additions and 13 deletions
|
|
@ -247,4 +247,61 @@ describe Utils do
|
|||
Utils.pretty_print_hosts(nil, service, hostname)
|
||||
end
|
||||
end
|
||||
|
||||
describe '#get_vmpooler_service_config' do
|
||||
let(:Conf) { double }
|
||||
it 'returns an error if the vmpooler_fallback is not setup' do
|
||||
config = {
|
||||
'user' => 'foo',
|
||||
'services' => {
|
||||
'myabs' => {
|
||||
'url' => 'http://abs.com',
|
||||
'token' => 'krypto-night',
|
||||
'type' => 'abs'
|
||||
}
|
||||
}
|
||||
}
|
||||
allow(Conf).to receive(:read_config).and_return(config)
|
||||
expect{Utils.get_vmpooler_service_config(config['services']['myabs']['vmpooler_fallback'])}.to raise_error(ArgumentError)
|
||||
end
|
||||
it 'returns an error if the vmpooler_fallback is setup but cannot be found' do
|
||||
config = {
|
||||
'user' => 'foo',
|
||||
'services' => {
|
||||
'myabs' => {
|
||||
'url' => 'http://abs.com',
|
||||
'token' => 'krypto-night',
|
||||
'type' => 'abs',
|
||||
'vmpooler_fallback' => 'myvmpooler'
|
||||
}
|
||||
}
|
||||
}
|
||||
allow(Conf).to receive(:read_config).and_return(config)
|
||||
expect{Utils.get_vmpooler_service_config(config['services']['myabs']['vmpooler_fallback'])}.to raise_error(ArgumentError, /myvmpooler/)
|
||||
end
|
||||
it 'returns the vmpooler_fallback config' do
|
||||
config = {
|
||||
'user' => 'foo',
|
||||
'services' => {
|
||||
'myabs' => {
|
||||
'url' => 'http://abs.com',
|
||||
'token' => 'krypto-night',
|
||||
'type' => 'abs',
|
||||
'vmpooler_fallback' => 'myvmpooler'
|
||||
},
|
||||
'myvmpooler' => {
|
||||
'url' => 'http://vmpooler.com',
|
||||
'token' => 'krypto-knight'
|
||||
}
|
||||
}
|
||||
}
|
||||
allow(Conf).to receive(:read_config).and_return(config)
|
||||
expect(Utils.get_vmpooler_service_config(config['services']['myabs']['vmpooler_fallback'])).to include({
|
||||
'url' => 'http://vmpooler.com',
|
||||
'token' => 'krypto-knight',
|
||||
'user' => 'foo',
|
||||
'type' => 'vmpooler'
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue