diff --git a/manifests/init.pp b/manifests/init.pp index 8034a3b5a..bcffb3705 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -95,6 +95,10 @@ # (optional) Transport to use, either 'tcp' or 'ssl'' # Defaults to 'tcp' # +# [*qpid_sasl_mechanisms*] +# (optional) Enable one or more SASL mechanisms +# Defaults to false +# # [*qpid_tcp_nodelay*] # (optional) Disable Nagle algorithm # Defaults to true @@ -165,6 +169,7 @@ class nova( $qpid_port = '5672', $qpid_username = 'guest', $qpid_password = 'guest', + $qpid_sasl_mechanisms = false, $qpid_heartbeat = 60, $qpid_protocol = 'tcp', $qpid_tcp_nodelay = true, @@ -329,6 +334,21 @@ class nova( 'DEFAULT/qpid_protocol': value => $qpid_protocol; 'DEFAULT/qpid_tcp_nodelay': value => $qpid_tcp_nodelay; } + if is_array($qpid_sasl_mechanisms) { + nova_config { + 'DEFAULT/qpid_sasl_mechanisms': value => join($qpid_sasl_mechanisms, ' '); + } + } + elsif $qpid_sasl_mechanisms { + nova_config { + 'DEFAULT/qpid_sasl_mechanisms': value => $qpid_sasl_mechanisms; + } + } + else { + nova_config { + 'DEFAULT/qpid_sasl_mechanisms': ensure => absent; + } + } } nova_config { diff --git a/spec/classes/nova_init_spec.rb b/spec/classes/nova_init_spec.rb index 3db446726..f062397ba 100644 --- a/spec/classes/nova_init_spec.rb +++ b/spec/classes/nova_init_spec.rb @@ -233,6 +233,44 @@ describe 'nova' do end + describe 'with qpid rpc and no qpid_sasl_mechanisms' do + let :params do + { + :sql_connection => 'mysql://user:password@host/database', + :qpid_password => 'guest', + :rpc_backend => 'nova.openstack.common.rpc.impl_qpid' + } + end + + it { should contain_nova_config('DEFAULT/qpid_sasl_mechanisms').with_ensure('absent') } + end + + describe 'with qpid rpc and qpid_sasl_mechanisms string' do + let :params do + { + :sql_connection => 'mysql://user:password@host/database', + :qpid_password => 'guest', + :qpid_sasl_mechanisms => 'A', + 'rpc_backend' => 'nova.openstack.common.rpc.impl_qpid', + } + end + + it { should contain_nova_config('DEFAULT/qpid_sasl_mechanisms').with_value('A') } + end + + describe 'with qpid rpc and qpid_sasl_mechanisms array' do + let :params do + { + :sql_connection => 'mysql://user:password@host/database', + :qpid_password => 'guest', + :qpid_sasl_mechanisms => [ 'DIGEST-MD5', 'GSSAPI', 'PLAIN' ], + 'rpc_backend' => 'nova.openstack.common.rpc.impl_qpid', + } + end + + it { should contain_nova_config('DEFAULT/qpid_sasl_mechanisms').with_value('DIGEST-MD5 GSSAPI PLAIN') } + end + describe "When platform is RedHat" do let :facts do {:osfamily => 'RedHat'}