diff --git a/.fixtures.yml b/.fixtures.yml index 1d6a1778..6bb634ed 100644 --- a/.fixtures.yml +++ b/.fixtures.yml @@ -2,7 +2,7 @@ fixtures: repositories: 'cinder': repo: 'git://github.com/enovance/puppet-cinder' - ref: '3a0f09995625b1c2f6ec446cc2a2571348a7af0b' + ref: 'd92b38a8c7bb484e935ed21510843ef6be8e31d3' 'keystone': repo: 'git://github.com/enovance/puppet-keystone.git' ref: '9802add6566646dc1e4a2812d19c2ab4724ff594' diff --git a/Puppetfile b/Puppetfile index 7952d1ea..25305441 100644 --- a/Puppetfile +++ b/Puppetfile @@ -22,7 +22,7 @@ mod 'ceilometer', :ref => 'f71f935a3e41dcd11f8f5986a1fe0708b124e589' mod 'cinder', :git => 'git://github.com/enovance/puppet-cinder.git', - :ref => '3a0f09995625b1c2f6ec446cc2a2571348a7af0b' + :ref => 'd92b38a8c7bb484e935ed21510843ef6be8e31d3' mod 'glance', :git => 'git://github.com/enovance/puppet-glance.git', :ref => '001f1b6a8ef6bd0fde8fbe0a4b3362f31e6bbcda' diff --git a/manifests/volume/controller.pp b/manifests/volume/controller.pp index de54d9f2..a428b3bd 100644 --- a/manifests/volume/controller.pp +++ b/manifests/volume/controller.pp @@ -25,6 +25,7 @@ class cloud::volume::controller( $api_eth = $os_params::api_eth, # Maintain backward compatibility for multi-backend $volume_multi_backend = false, + $default_volume_type = undef, # TODO(EmilienM) Disabled for now: http://git.io/kfTmcA # $backup_ceph_pool = $os_params::cinder_rbd_backup_pool, # $backup_ceph_user = $os_params::cinder_rbd_backup_user @@ -33,9 +34,16 @@ class cloud::volume::controller( include 'cloud::volume' if ! $volume_multi_backend { - $scheduler_driver_real = false + $scheduler_driver_real = false + $default_volume_type_real = undef } else { $scheduler_driver_real = 'cinder.scheduler.filter_scheduler.FilterScheduler' + + if ! $default_volume_type { + fail('when using multi-backend, you should define a default_volume_type value in cloud::volume::controller') + } else { + $default_volume_type_real = $default_volume_type + } } class { 'cinder::scheduler': @@ -43,9 +51,10 @@ class cloud::volume::controller( } class { 'cinder::api': - keystone_password => $ks_cinder_password, - keystone_auth_host => $ks_keystone_internal_host, - bind_host => $api_eth + keystone_password => $ks_cinder_password, + keystone_auth_host => $ks_keystone_internal_host, + bind_host => $api_eth, + default_volume_type => $default_volume_type_real } class { 'cinder::backup': } diff --git a/spec/classes/cloud_volume_controller_spec.rb b/spec/classes/cloud_volume_controller_spec.rb index 47bcaf6a..4ca32e1b 100644 --- a/spec/classes/cloud_volume_controller_spec.rb +++ b/spec/classes/cloud_volume_controller_spec.rb @@ -80,12 +80,28 @@ describe 'cloud::volume::controller' do context 'with multi-backend' do before :each do - params.merge!( :volume_multi_backend => true ) + params.merge!( + :volume_multi_backend => true, + :default_volume_type => 'ceph' + ) end it 'configure cinder scheduler with multi-backend' do should contain_class('cinder::scheduler').with( :scheduler_driver => 'cinder.scheduler.filter_scheduler.FilterScheduler' ) + should contain_class('cinder::api').with(:default_volume_type => 'ceph') + end + end + + context 'with multi-backend without default volume type' do + before :each do + params.merge!( + :volume_multi_backend => true, + :default_volume_type => nil + ) + end + it 'should raise an error and fail' do + should compile.and_raise_error(/when using multi-backend, you should define a default_volume_type value in cloud::volume::controller/) end end @@ -98,10 +114,11 @@ describe 'cloud::volume::controller' do it 'configure cinder api' do should contain_class('cinder::api').with( - :keystone_password => 'secrete', - :keystone_auth_host => '10.0.0.1', - :bind_host => '10.0.0.1' + :keystone_password => 'secrete', + :keystone_auth_host => '10.0.0.1', + :bind_host => '10.0.0.1', ) + should contain_cinder_config('DEFAULT/default_volume_type').with(:ensure => 'absent') end # TODO(EmilienM) Disabled for now: http://git.io/kfTmcA