+++ /dev/null
-
-describe 'glance::registry' do
-
- let :facts do
- {
- :osfamily => 'Debian'
- }
- end
-
- let :default_params do
- {
- :verbose => false,
- :debug => false,
- :bind_host => '0.0.0.0',
- :bind_port => '9191',
- :log_file => '/var/log/glance/registry.log',
- :log_dir => '/var/log/glance',
- :database_connection => 'sqlite:///var/lib/glance/glance.sqlite',
- :database_idle_timeout => '3600',
- :enabled => true,
- :manage_service => true,
- :auth_type => 'keystone',
- :auth_host => '127.0.0.1',
- :auth_port => '35357',
- :auth_protocol => 'http',
- :auth_uri => 'http://127.0.0.1:5000/',
- :keystone_tenant => 'services',
- :keystone_user => 'glance',
- :keystone_password => 'ChangeMe',
- :purge_config => false,
- :sync_db => true,
- }
- end
-
- [
- {:keystone_password => 'ChangeMe'},
- {
- :verbose => true,
- :debug => true,
- :bind_host => '127.0.0.1',
- :bind_port => '9111',
- :database_connection => 'sqlite:///var/lib/glance.sqlite',
- :database_idle_timeout => '360',
- :enabled => false,
- :auth_type => 'keystone',
- :auth_host => '127.0.0.1',
- :auth_port => '35357',
- :auth_protocol => 'http',
- :auth_uri => 'http://127.0.0.1:5000/',
- :keystone_tenant => 'admin',
- :keystone_user => 'admin',
- :keystone_password => 'ChangeMe',
- :sync_db => false,
- }
- ].each do |param_set|
-
- describe "when #{param_set == {:keystone_password => 'ChangeMe'} ? "using default" : "specifying"} class parameters" do
- let :param_hash do
- default_params.merge(param_set)
- end
-
- let :params do
- param_set
- end
-
- it { should contain_class 'glance::registry' }
-
- it { should contain_service('glance-registry').with(
- 'ensure' => (param_hash[:manage_service] && param_hash[:enabled]) ? 'running' : 'stopped',
- 'enable' => param_hash[:enabled],
- 'hasstatus' => true,
- 'hasrestart' => true,
- 'subscribe' => 'File[/etc/glance/glance-registry.conf]',
- 'require' => 'Class[Glance]'
- )}
-
- it 'should only sync the db if the service is enabled' do
-
- if param_hash[:enabled]
- should contain_exec('glance-manage db_sync').with(
- 'path' => '/usr/bin',
- 'command' => 'glance-manage --config-file=/etc/glance/glance-registry.conf db_sync',
- 'refreshonly' => true,
- 'logoutput' => 'on_failure',
- 'subscribe' => ['Package[glance-registry]', 'File[/etc/glance/glance-registry.conf]'],
- 'notify' => 'Service[glance-registry]'
- )
- end
- end
- it 'should not sync the db if sync_db is set to false' do
-
- if param_hash[:enabled] and !param_hash[:sync_db]
- is_expected.not_to contain_exec('glance-manage db_sync')
- end
- end
- it 'should configure itself' do
- [
- 'verbose',
- 'debug',
- 'bind_port',
- 'bind_host',
- ].each do |config|
- should contain_glance_registry_config("DEFAULT/#{config}").with_value(param_hash[config.intern])
- end
- [
- 'database_connection',
- 'database_idle_timeout',
- ].each do |config|
- should contain_glance_registry_config("database/#{config.gsub(/database_/,'')}").with_value(param_hash[config.intern])
- end
- [
- 'auth_host',
- 'auth_port',
- 'auth_protocol'
- ].each do |config|
- should contain_glance_registry_config("keystone_authtoken/#{config}").with_value(param_hash[config.intern])
- end
- should contain_glance_registry_config('keystone_authtoken/auth_admin_prefix').with_ensure('absent')
- if param_hash[:auth_type] == 'keystone'
- should contain_glance_registry_config("paste_deploy/flavor").with_value('keystone')
- should contain_glance_registry_config("keystone_authtoken/admin_tenant_name").with_value(param_hash[:keystone_tenant])
- should contain_glance_registry_config("keystone_authtoken/admin_user").with_value(param_hash[:keystone_user])
- should contain_glance_registry_config("keystone_authtoken/admin_password").with_value(param_hash[:keystone_password])
- should contain_glance_registry_config("keystone_authtoken/admin_password").with_value(param_hash[:keystone_password]).with_secret(true)
- end
- end
- end
- end
-
- describe 'with disabled service managing' do
- let :params do
- {
- :keystone_password => 'ChangeMe',
- :manage_service => false,
- :enabled => false,
- }
- end
-
- it { should contain_service('glance-registry').with(
- 'ensure' => nil,
- 'enable' => false,
- 'hasstatus' => true,
- 'hasrestart' => true,
- 'subscribe' => 'File[/etc/glance/glance-registry.conf]',
- 'require' => 'Class[Glance]'
- )}
- end
-
- describe 'with overridden pipeline' do
- # At the time of writing there was only blank and keystone as options
- # but there is no reason that there can't be more options in the future.
- let :params do
- {
- :keystone_password => 'ChangeMe',
- :pipeline => 'validoptionstring',
- }
- end
-
- it { should contain_glance_registry_config('paste_deploy/flavor').with_value('validoptionstring') }
- end
-
- describe 'with blank pipeline' do
- let :params do
- {
- :keystone_password => 'ChangeMe',
- :pipeline => '',
- }
- end
-
- it { should contain_glance_registry_config('paste_deploy/flavor').with_ensure('absent') }
- end
-
- [
- 'keystone/',
- 'keystone+',
- '+keystone',
- 'keystone+cachemanagement+',
- '+'
- ].each do |pipeline|
- describe "with pipeline incorrect value #{pipeline}" do
- let :params do
- {
- :keystone_password => 'ChangeMe',
- :auth_type => 'keystone',
- :pipeline => pipeline
- }
- end
-
- it { expect { should contain_glance_registry_config('filter:paste_deploy/flavor') }.to\
- raise_error(Puppet::Error, /validate_re\(\): .* does not match/) }
- end
- end
-
- describe 'with overriden auth_admin_prefix' do
- let :params do
- {
- :keystone_password => 'ChangeMe',
- :auth_admin_prefix => '/keystone/main'
- }
- end
-
- it { should contain_glance_registry_config('keystone_authtoken/auth_admin_prefix').with_value('/keystone/main') }
- end
-
- [
- '/keystone/',
- 'keystone/',
- 'keystone',
- '/keystone/admin/',
- 'keystone/admin/',
- 'keystone/admin'
- ].each do |auth_admin_prefix|
- describe "with auth_admin_prefix_containing incorrect value #{auth_admin_prefix}" do
- let :params do
- {
- :keystone_password => 'ChangeMe',
- :auth_admin_prefix => auth_admin_prefix
- }
- end
-
- it { expect { should contain_glance_registry_config('filter:authtoken/auth_admin_prefix') }.to\
- raise_error(Puppet::Error, /validate_re\(\): "#{auth_admin_prefix}" does not match/) }
- end
- end
-
- describe 'with syslog disabled by default' do
- let :params do
- default_params
- end
-
- it { should contain_glance_registry_config('DEFAULT/use_syslog').with_value(false) }
- it { should_not contain_glance_registry_config('DEFAULT/syslog_log_facility') }
- end
-
- describe 'with syslog enabled' do
- let :params do
- default_params.merge({
- :use_syslog => 'true',
- })
- end
-
- it { should contain_glance_registry_config('DEFAULT/use_syslog').with_value(true) }
- it { should contain_glance_registry_config('DEFAULT/syslog_log_facility').with_value('LOG_USER') }
- end
-
- describe 'with syslog enabled and custom settings' do
- let :params do
- default_params.merge({
- :use_syslog => 'true',
- :log_facility => 'LOG_LOCAL0'
- })
- end
-
- it { should contain_glance_registry_config('DEFAULT/use_syslog').with_value(true) }
- it { should contain_glance_registry_config('DEFAULT/syslog_log_facility').with_value('LOG_LOCAL0') }
- end
-
- describe 'with log_file enabled by default' do
- let(:params) { default_params }
-
- it { should contain_glance_registry_config('DEFAULT/log_file').with_value(default_params[:log_file]) }
-
- context 'with log_file disabled' do
- let(:params) { default_params.merge!({ :log_file => false }) }
- it { should contain_glance_registry_config('DEFAULT/log_file').with_ensure('absent') }
- end
- end
-
- describe 'with log_dir enabled by default' do
- let(:params) { default_params }
-
- it { should contain_glance_registry_config('DEFAULT/log_dir').with_value(default_params[:log_dir]) }
-
- context 'with log_dir disabled' do
- let(:params) { default_params.merge!({ :log_dir => false }) }
- it { should contain_glance_registry_config('DEFAULT/log_dir').with_ensure('absent') }
- end
- end
-
- describe 'with no ssl options (default)' do
- let(:params) { default_params }
-
- it { should contain_glance_registry_config('DEFAULT/ca_file').with_ensure('absent')}
- it { should contain_glance_registry_config('DEFAULT/cert_file').with_ensure('absent')}
- it { should contain_glance_registry_config('DEFAULT/key_file').with_ensure('absent')}
- end
-
- describe 'with ssl options' do
- let :params do
- default_params.merge({
- :ca_file => '/tmp/ca_file',
- :cert_file => '/tmp/cert_file',
- :key_file => '/tmp/key_file'
- })
- end
-
- context 'with ssl options' do
- it { should contain_glance_registry_config('DEFAULT/ca_file').with_value('/tmp/ca_file') }
- it { should contain_glance_registry_config('DEFAULT/cert_file').with_value('/tmp/cert_file') }
- it { should contain_glance_registry_config('DEFAULT/key_file').with_value('/tmp/key_file') }
- end
- end
-
- describe 'with deprecated sql parameters' do
- let :params do
- default_params.merge({
- :sql_connection => 'mysql://user:pass@db/db',
- :sql_idle_timeout => '30'
- })
- end
-
- it 'configures database' do
- should contain_glance_registry_config('database/connection').with_value('mysql://user:pass@db/db')
- should contain_glance_registry_config('database/idle_timeout').with_value('30')
- end
- end
-
- describe 'on Debian platforms' do
- let :facts do
- { :osfamily => 'Debian' }
- end
-
- # We only test this on Debian platforms, since on RedHat there isn't a
- # separate package for glance registry.
- ['present', 'latest'].each do |package_ensure|
- context "with package_ensure '#{package_ensure}'" do
- let(:params) { default_params.merge({ :package_ensure => package_ensure }) }
- it { should contain_package('glance-registry').with(
- :ensure => package_ensure,
- :tag => ['openstack']
- )}
- end
- end
- end
-
- describe 'on RedHat platforms' do
- let :facts do
- { :osfamily => 'RedHat' }
- end
- let(:params) { default_params }
-
- it { should contain_package('openstack-glance')}
- end
-
- describe 'on unknown platforms' do
- let :facts do
- { :osfamily => 'unknown' }
- end
- let(:params) { default_params }
-
- it 'should fails to configure glance-registry' do
- expect { subject }.to raise_error(Puppet::Error, /module glance only support osfamily RedHat and Debian/)
- end
- end
-
-end