diff --git a/manifests/backend/solidfire.pp b/manifests/backend/solidfire.pp index c5d3a084..6517ad86 100644 --- a/manifests/backend/solidfire.pp +++ b/manifests/backend/solidfire.pp @@ -49,6 +49,27 @@ # (optional) Port ID to use to connect to SolidFire API. # Defaults to 443 # +# [*sf_volume_prefix*] +# (optional) Create SolidFire volumes with this prefix. Volume names +# are of the form . +# Defaults to UUID- +# +# [*sf_svip*] +# (optional) Overrides default cluster SVIP with the one specified. +# This is required or deployments that have implemented the use of +# VLANs for iSCSI networks in their cloud. +# Defaults to none +# +# [*sf_enable_volume_mapping*] +# (optional) Create an internal mapping of volume IDs and account. +# Optimizes lookups and performance at the expense of memory, very +# large deployments may want to consider setting to False. +# Defaults to true +# +# [*sf_enable_vag*] +# (optional) Utilize volume access groups on a per-tenant basis. +# Defaults to false +# # [*extra_options*] # (optional) Hash of extra options to pass to the backend stanza # Defaults to: {} @@ -60,28 +81,36 @@ define cinder::backend::solidfire( $san_login, $san_password, $volume_backend_name = $name, - $volume_driver = 'cinder.volume.drivers.solidfire.SolidFireDriver', + $volume_driver = 'cinder.volume.drivers.solidfire.SolidFireDriver', $sf_emulate_512 = true, $sf_allow_tenant_qos = false, $sf_account_prefix = '', $sf_template_account_name = 'openstack-vtemplate', $sf_allow_template_caching = false, $sf_api_port = '443', + $sf_volume_prefix = 'UUID-', + $sf_svip = '', + $sf_enable_volume_mapping = true, + $sf_enable_vag = false, $extra_options = {}, ) { cinder_config { - "${name}/volume_backend_name": value => $volume_backend_name; - "${name}/volume_driver": value => $volume_driver; - "${name}/san_ip": value => $san_ip; - "${name}/san_login": value => $san_login; - "${name}/san_password": value => $san_password, secret => true; - "${name}/sf_emulate_512": value => $sf_emulate_512; - "${name}/sf_allow_tenant_qos": value => $sf_allow_tenant_qos; - "${name}/sf_account_prefix": value => $sf_account_prefix; - "${name}/sf_template_account_name": value => $sf_template_account_name; - "${name}/sf_allow_template_caching": value => $sf_allow_template_caching; - "${name}/sf_api_port": value => $sf_api_port; + "${name}/volume_backend_name": value => $volume_backend_name; + "${name}/volume_driver": value => $volume_driver; + "${name}/san_ip": value => $san_ip; + "${name}/san_login": value => $san_login; + "${name}/san_password": value => $san_password, secret => true; + "${name}/sf_emulate_512": value => $sf_emulate_512; + "${name}/sf_allow_tenant_qos": value => $sf_allow_tenant_qos; + "${name}/sf_account_prefix": value => $sf_account_prefix; + "${name}/sf_template_account_name": value => $sf_template_account_name; + "${name}/sf_allow_template_caching": value => $sf_allow_template_caching; + "${name}/sf_api_port": value => $sf_api_port; + "${name}/sf_volume_prefix": value => $sf_volume_prefix; + "${name}/sf_svip": value => $sf_svip; + "${name}/sf_enable_volume_mapping": value => $sf_enable_volume_mapping; + "${name}/sf_enable_vag": value => $sf_enable_vag; } create_resources('cinder_config', $extra_options) diff --git a/spec/classes/cinder_volume_solidfire_spec.rb b/spec/classes/cinder_volume_solidfire_spec.rb index b414a4e7..e71df76c 100644 --- a/spec/classes/cinder_volume_solidfire_spec.rb +++ b/spec/classes/cinder_volume_solidfire_spec.rb @@ -4,7 +4,7 @@ describe 'cinder::volume::solidfire' do let :req_params do { :san_ip => '127.0.0.2', - :san_login => 'solidfire', + :san_login => 'solidfire_login', :san_password => 'password', } end @@ -13,25 +13,51 @@ describe 'cinder::volume::solidfire' do req_params end - describe 'solidfire volume driver' do + shared_examples_for 'solidfire volume driver' do it 'configure solidfire volume driver' do - is_expected.to contain_cinder_config('DEFAULT/volume_driver').with_value('cinder.volume.drivers.solidfire.SolidFireDriver') - is_expected.to contain_cinder_config('DEFAULT/san_ip').with_value('127.0.0.2') - is_expected.to contain_cinder_config('DEFAULT/san_login').with_value('solidfire') - is_expected.to contain_cinder_config('DEFAULT/san_password').with_value('password') - is_expected.to contain_cinder_config('DEFAULT/sf_template_account_name').with_value('openstack-vtemplate') - is_expected.to contain_cinder_config('DEFAULT/sf_allow_template_caching').with_value('false') + is_expected.to contain_cinder_config('DEFAULT/volume_driver' + ).with_value('cinder.volume.drivers.solidfire.SolidFireDriver') + is_expected.to contain_cinder_config('DEFAULT/san_ip' + ).with_value('127.0.0.2') + is_expected.to contain_cinder_config('DEFAULT/san_login' + ).with_value('solidfire_login') + is_expected.to contain_cinder_config('DEFAULT/san_password' + ).with_value('password') + is_expected.to contain_cinder_config('DEFAULT/sf_template_account_name' + ).with_value('openstack-vtemplate') + is_expected.to contain_cinder_config('DEFAULT/sf_allow_template_caching' + ).with_value(false) + is_expected.to contain_cinder_config('DEFAULT/volume_backend_name' + ).with_value('solidfire') + is_expected.to contain_cinder_config('DEFAULT/sf_emulate_512' + ).with_value(true) + is_expected.to contain_cinder_config('DEFAULT/sf_allow_tenant_qos' + ).with_value(false) + is_expected.to contain_cinder_config('DEFAULT/sf_account_prefix' + ).with_value('') + is_expected.to contain_cinder_config('DEFAULT/sf_api_port' + ).with_value('443') + is_expected.to contain_cinder_config('DEFAULT/sf_volume_prefix' + ).with_value('UUID-') + is_expected.to contain_cinder_config('DEFAULT/sf_svip' + ).with_value('') + is_expected.to contain_cinder_config('DEFAULT/sf_enable_volume_mapping' + ).with_value(true) + is_expected.to contain_cinder_config('DEFAULT/sf_enable_vag' + ).with_value(false) end it 'marks san_password as secret' do - is_expected.to contain_cinder_config('DEFAULT/san_password').with_secret( true ) + is_expected.to contain_cinder_config('DEFAULT/san_password' + ).with_secret( true ) end end - describe 'solidfire volume driver with additional configuration' do - before :each do - params.merge!({:extra_options => {'solidfire_backend/param1' => {'value' => 'value1'}}}) + context 'with solidfire volume drivers additional configuration' do + before do + params.merge!({:extra_options => {'solidfire_backend/param1' => + { 'value' => 'value1' }}}) end it 'configure solidfire volume with additional configuration' do diff --git a/spec/defines/cinder_backend_solidfire_spec.rb b/spec/defines/cinder_backend_solidfire_spec.rb index c099d586..4ed53636 100644 --- a/spec/defines/cinder_backend_solidfire_spec.rb +++ b/spec/defines/cinder_backend_solidfire_spec.rb @@ -6,7 +6,7 @@ describe 'cinder::backend::solidfire' do let :req_params do { :san_ip => '127.0.0.2', - :san_login => 'solidfire', + :san_login => 'solidfire_login', :san_password => 'password', } end @@ -17,24 +17,49 @@ describe 'cinder::backend::solidfire' do describe 'solidfire volume driver' do it 'configure solidfire volume driver' do - is_expected.to contain_cinder_config('solidfire/volume_driver').with_value( - 'cinder.volume.drivers.solidfire.SolidFireDriver') - is_expected.to contain_cinder_config('solidfire/san_ip').with_value( - '127.0.0.2') - is_expected.to contain_cinder_config('solidfire/san_login').with_value( - 'solidfire') - is_expected.to contain_cinder_config('solidfire/san_password').with_value( - 'password') - is_expected.to contain_cinder_config('solidfire/sf_template_account_name').with_value( - 'openstack-vtemplate') - is_expected.to contain_cinder_config('solidfire/sf_allow_template_caching').with_value( - 'false') + is_expected.to contain_cinder_config('solidfire/volume_driver' + ).with_value('cinder.volume.drivers.solidfire.SolidFireDriver') + is_expected.to contain_cinder_config('solidfire/san_ip' + ).with_value('127.0.0.2') + is_expected.to contain_cinder_config('solidfire/san_login' + ).with_value('solidfire_login') + is_expected.to contain_cinder_config('solidfire/san_password' + ).with_value('password') + is_expected.to contain_cinder_config('solidfire/sf_template_account_name' + ).with_value('openstack-vtemplate') + is_expected.to contain_cinder_config('solidfire/sf_allow_template_caching' + ).with_value(false) + is_expected.to contain_cinder_config('solidfire/volume_backend_name' + ).with_value('solidfire') + is_expected.to contain_cinder_config('solidfire/sf_emulate_512' + ).with_value(true) + is_expected.to contain_cinder_config('solidfire/sf_allow_tenant_qos' + ).with_value(false) + is_expected.to contain_cinder_config('solidfire/sf_account_prefix' + ).with_value('') + is_expected.to contain_cinder_config('solidfire/sf_api_port' + ).with_value('443') + is_expected.to contain_cinder_config('solidfire/sf_volume_prefix' + ).with_value('UUID-') + is_expected.to contain_cinder_config('solidfire/sf_svip' + ).with_value('') + is_expected.to contain_cinder_config('solidfire/sf_enable_volume_mapping' + ).with_value(true) + is_expected.to contain_cinder_config('solidfire/sf_enable_vag' + ).with_value(false) end + + it 'marks san_password as secret' do + is_expected.to contain_cinder_config('solidfire/san_password' + ).with_secret( true ) + end + end describe 'solidfire backend with additional configuration' do before :each do - params.merge!({:extra_options => {'solidfire/param1' => {'value' => 'value1'}}}) + params.merge!({:extra_options => + {'solidfire/param1' => {'value' => 'value1'}}}) end it 'configure solidfire backend with additional configuration' do