puppet-glance/spec/unit/provider/glance_spec.rb
Jan Kundrát abd028a5f6 Run the glance CLI tool with appropriate region name
This is pretty important in situations where Keystone contains information about
multiple regions. The holding assumption is that the glance::image etc are used
for image upload for the current region.

Change-Id: I0a24cd24ddf3e0b1fab94e693a2fac847cc7271c
2014-10-09 16:27:37 +02:00

66 lines
2.0 KiB
Ruby

require 'puppet'
require 'spec_helper'
require 'puppet/provider/glance'
require 'tempfile'
klass = Puppet::Provider::Glance
describe Puppet::Provider::Glance do
after :each do
klass.reset
end
describe 'when retrieving the auth credentials' do
it 'should fail if the glance config file does not have the expected contents' do
mock = {}
Puppet::Util::IniConfig::File.expects(:new).returns(mock)
mock.expects(:read).with('/etc/glance/glance-api.conf')
expect do
klass.glance_credentials
end.to raise_error(Puppet::Error, /does not contain all required sections/)
end
describe 'when testing glance connection retries' do
['[Errno 111] Connection refused', '(HTTP 400)', 'HTTP Unable to establish connection'].reverse.each do |valid_message|
it "should retry when glance is not ready with error #{valid_message}" do
mock = {'keystone_authtoken' =>
{
'auth_host' => '127.0.0.1',
'auth_port' => '35357',
'auth_protocol' => 'http',
'admin_tenant_name' => 'foo',
'admin_user' => 'user',
'admin_password' => 'pass'
},
'DEFAULT' =>
{
'os_region_name' => 'SomeRegion',
}
}
Puppet::Util::IniConfig::File.expects(:new).returns(mock)
mock.expects(:read).with('/etc/glance/glance-api.conf')
klass.expects(:sleep).with(10).returns(nil)
klass.expects(:glance).twice.with(
'--os-tenant-name',
'foo',
'--os-username',
'user',
'--os-password',
'pass',
'--os-region-name',
'SomeRegion',
'--os-auth-url',
'http://127.0.0.1:35357/v2.0/',
['test_retries']
).raises(Exception, valid_message).then.returns('')
klass.auth_glance('test_retries')
end
end
end
end
end