puppet-cinder/spec/defines/cinder_backend_rbd_spec.rb
Clayton O'Neill e226c0ed95 Allow RBD host to be configurable
Most sites using ceph with cinder are going to have already set the host
value.  This change allows those sites to override the default and not
break existing volumes.  It also moves the tests cases from the volume
class to the backend define.  Lastly, it renames the parameter from host
to backend_host, since host is deprecated with Kilo.

Change-Id: I43e4d3b7ae1672ea0c551c6c7267f0c38bb9842f
2015-10-05 15:59:23 +00:00

114 lines
4.7 KiB
Ruby

require 'spec_helper'
describe 'cinder::backend::rbd' do
let(:title) {'rbd-ssd'}
let :req_params do
{
:volume_backend_name => 'rbd-ssd',
:rbd_pool => 'volumes',
:rbd_user => 'test',
:rbd_secret_uuid => '<SERVICE DEFAULT>',
:rbd_ceph_conf => '/foo/boo/zoo/ceph.conf',
:rbd_flatten_volume_from_snapshot => true,
:volume_tmp_dir => '<SERVICE DEFAULT>',
:rbd_max_clone_depth => '0'
}
end
it { is_expected.to contain_class('cinder::params') }
let :params do
req_params
end
let :facts do
{:osfamily => 'Debian'}
end
describe 'rbd backend volume driver' do
it 'configure rbd volume driver' do
is_expected.to contain_cinder_config("#{req_params[:volume_backend_name]}/volume_backend_name").with_value(req_params[:volume_backend_name])
is_expected.to contain_cinder_config("#{req_params[:volume_backend_name]}/volume_driver").with_value('cinder.volume.drivers.rbd.RBDDriver')
is_expected.to contain_cinder_config("#{req_params[:volume_backend_name]}/rbd_ceph_conf").with_value(req_params[:rbd_ceph_conf])
is_expected.to contain_cinder_config("#{req_params[:volume_backend_name]}/rbd_flatten_volume_from_snapshot").with_value(req_params[:rbd_flatten_volume_from_snapshot])
is_expected.to contain_cinder_config("#{req_params[:volume_backend_name]}/volume_tmp_dir").with_value(req_params[:volume_tmp_dir])
is_expected.to contain_cinder_config("#{req_params[:volume_backend_name]}/rbd_max_clone_depth").with_value(req_params[:rbd_max_clone_depth])
is_expected.to contain_cinder_config("#{req_params[:volume_backend_name]}/rbd_pool").with_value(req_params[:rbd_pool])
is_expected.to contain_cinder_config("#{req_params[:volume_backend_name]}/rbd_user").with_value(req_params[:rbd_user])
is_expected.to contain_cinder_config("#{req_params[:volume_backend_name]}/rbd_secret_uuid").with_value(req_params[:rbd_secret_uuid])
is_expected.to contain_cinder_config("#{req_params[:volume_backend_name]}/backend_host").with_value('rbd:'"#{req_params[:rbd_pool]}")
is_expected.to contain_file('/etc/init/cinder-volume.override').with(:ensure => 'present')
is_expected.to contain_file_line('set initscript env').with(
:line => /env CEPH_ARGS=\"--id test\"/,
:path => '/etc/init/cinder-volume.override',
:notify => 'Service[cinder-volume]')
end
context 'with another RBD backend' do
let :pre_condition do
"cinder::backend::rbd { 'ceph2':
rbd_pool => 'volumes2',
rbd_user => 'test'
}"
end
it { is_expected.to contain_cinder_config("#{req_params[:volume_backend_name]}/volume_driver").with_value('cinder.volume.drivers.rbd.RBDDriver') }
it { is_expected.to contain_cinder_config("#{req_params[:volume_backend_name]}/rbd_pool").with_value(req_params[:rbd_pool]) }
it { is_expected.to contain_cinder_config("#{req_params[:volume_backend_name]}/rbd_user").with_value(req_params[:rbd_user]) }
it { is_expected.to contain_cinder_config("ceph2/volume_driver").with_value('cinder.volume.drivers.rbd.RBDDriver') }
it { is_expected.to contain_cinder_config("ceph2/rbd_pool").with_value('volumes2') }
it { is_expected.to contain_cinder_config("ceph2/rbd_user").with_value('test') }
end
context 'rbd backend with additional configuration' do
before do
params.merge!({:extra_options => {'rbd-ssd/param1' => { 'value' => 'value1' }}})
end
it 'configure rbd backend with additional configuration' do
is_expected.to contain_cinder_config('rbd-ssd/param1').with({
:value => 'value1'
})
end
end
context 'override backend_host parameter' do
before do
params.merge!({:backend_host => 'test_host.fqdn.com' })
end
it 'configure rbd backend with specific hostname' do
is_expected.to contain_cinder_config('rbd-ssd/backend_host').with({
:value => 'test_host.fqdn.com',
})
end
end
end
describe 'with RedHat' do
let :facts do
{ :osfamily => 'RedHat' }
end
let :params do
req_params
end
it 'should ensure that the cinder-volume sysconfig file is present' do
is_expected.to contain_file('/etc/sysconfig/openstack-cinder-volume').with(
:ensure => 'present'
)
end
it 'should configure RedHat init override' do
is_expected.to contain_file_line('set initscript env').with(
:line => /export CEPH_ARGS=\"--id test\"/,
:path => '/etc/sysconfig/openstack-cinder-volume',
:notify => 'Service[cinder-volume]')
end
end
end