volume/api: specify a default backend

When using multi-backend in Cinder, we need to specify a default type to
avoid any error when creating a volume without specifying a type.

This patch is backward compatible when not using multi-backend and make
the catalog fail if we don't specify the value.

Also, it updates puppet-cinder to last stable/havana commit.

Signed-off-by: Emilien Macchi <emilien.macchi@enovance.com>
This commit is contained in:
Emilien Macchi 2014-03-29 12:10:26 +01:00
parent ca7bb82ca5
commit a12565cdeb
4 changed files with 36 additions and 10 deletions

View File

@ -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'

View File

@ -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'

View File

@ -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': }

View File

@ -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