4 {:rabbit_password => 'guest', :database_connection => 'mysql://user:password@host/database'}
8 {:osfamily => 'Debian'}
11 describe 'with only required params' do
16 it { should contain_class('cinder::params') }
17 it { should contain_class('mysql::bindings::python') }
19 it 'should contain default config' do
20 should contain_cinder_config('DEFAULT/rpc_backend').with(
21 :value => 'cinder.openstack.common.rpc.impl_kombu'
23 should contain_cinder_config('DEFAULT/control_exchange').with(
26 should contain_cinder_config('DEFAULT/rabbit_password').with(
30 should contain_cinder_config('DEFAULT/rabbit_host').with(
33 should contain_cinder_config('DEFAULT/rabbit_port').with(
36 should contain_cinder_config('DEFAULT/rabbit_hosts').with(
37 :value => '127.0.0.1:5672'
39 should contain_cinder_config('DEFAULT/rabbit_ha_queues').with(
42 should contain_cinder_config('DEFAULT/rabbit_virtual_host').with(
45 should contain_cinder_config('DEFAULT/rabbit_userid').with(
48 should contain_cinder_config('database/connection').with(
49 :value => 'mysql://user:password@host/database',
52 should contain_cinder_config('database/idle_timeout').with(
55 should contain_cinder_config('database/min_pool_size').with(
58 should contain_cinder_config('database/max_pool_size').with_ensure('absent')
59 should contain_cinder_config('database/max_retries').with(
62 should contain_cinder_config('database/retry_interval').with(
65 should contain_cinder_config('database/max_overflow').with_ensure('absent')
66 should contain_cinder_config('DEFAULT/verbose').with(
69 should contain_cinder_config('DEFAULT/debug').with(
72 should contain_cinder_config('DEFAULT/storage_availability_zone').with(
75 should contain_cinder_config('DEFAULT/default_availability_zone').with(
78 should contain_cinder_config('DEFAULT/api_paste_config').with(
79 :value => '/etc/cinder/api-paste.ini'
81 should contain_cinder_config('DEFAULT/log_dir').with(:value => '/var/log/cinder')
84 it { should contain_file('/etc/cinder/cinder.conf').with(
88 :require => 'Package[cinder]'
91 it { should contain_file('/etc/cinder/api-paste.ini').with(
95 :require => 'Package[cinder]'
99 describe 'with modified rabbit_hosts' do
101 req_params.merge({'rabbit_hosts' => ['rabbit1:5672', 'rabbit2:5672']})
104 it 'should contain many' do
105 should contain_cinder_config('DEFAULT/rabbit_host').with(
108 should contain_cinder_config('DEFAULT/rabbit_port').with(
111 should contain_cinder_config('DEFAULT/rabbit_hosts').with(
112 :value => 'rabbit1:5672,rabbit2:5672'
114 should contain_cinder_config('DEFAULT/rabbit_ha_queues').with(
120 describe 'with a single rabbit_hosts entry' do
122 req_params.merge({'rabbit_hosts' => ['rabbit1:5672']})
125 it 'should contain many' do
126 should contain_cinder_config('DEFAULT/rabbit_host').with(
129 should contain_cinder_config('DEFAULT/rabbit_port').with(
132 should contain_cinder_config('DEFAULT/rabbit_hosts').with(
133 :value => 'rabbit1:5672'
135 should contain_cinder_config('DEFAULT/rabbit_ha_queues').with(
141 describe 'with qpid rpc supplied' do
145 :database_connection => 'mysql://user:password@host/database',
146 :qpid_password => 'guest',
147 :rpc_backend => 'cinder.openstack.common.rpc.impl_qpid'
151 it { should contain_cinder_config('database/connection').with_value('mysql://user:password@host/database') }
152 it { should contain_cinder_config('DEFAULT/rpc_backend').with_value('cinder.openstack.common.rpc.impl_qpid') }
153 it { should contain_cinder_config('DEFAULT/qpid_hostname').with_value('localhost') }
154 it { should contain_cinder_config('DEFAULT/qpid_port').with_value('5672') }
155 it { should contain_cinder_config('DEFAULT/qpid_username').with_value('guest') }
156 it { should contain_cinder_config('DEFAULT/qpid_password').with_value('guest').with_secret(true) }
157 it { should contain_cinder_config('DEFAULT/qpid_reconnect').with_value(true) }
158 it { should contain_cinder_config('DEFAULT/qpid_reconnect_timeout').with_value('0') }
159 it { should contain_cinder_config('DEFAULT/qpid_reconnect_limit').with_value('0') }
160 it { should contain_cinder_config('DEFAULT/qpid_reconnect_interval_min').with_value('0') }
161 it { should contain_cinder_config('DEFAULT/qpid_reconnect_interval_max').with_value('0') }
162 it { should contain_cinder_config('DEFAULT/qpid_reconnect_interval').with_value('0') }
163 it { should contain_cinder_config('DEFAULT/qpid_heartbeat').with_value('60') }
164 it { should contain_cinder_config('DEFAULT/qpid_protocol').with_value('tcp') }
165 it { should contain_cinder_config('DEFAULT/qpid_tcp_nodelay').with_value(true) }
168 describe 'with qpid rpc and no qpid_sasl_mechanisms' do
171 :database_connection => 'mysql://user:password@host/database',
172 :qpid_password => 'guest',
173 :rpc_backend => 'cinder.openstack.common.rpc.impl_qpid'
177 it { should contain_cinder_config('DEFAULT/qpid_sasl_mechanisms').with_ensure('absent') }
180 describe 'with qpid rpc and qpid_sasl_mechanisms string' do
183 :database_connection => 'mysql://user:password@host/database',
184 :qpid_password => 'guest',
185 :qpid_sasl_mechanisms => 'PLAIN',
186 :rpc_backend => 'cinder.openstack.common.rpc.impl_qpid'
190 it { should contain_cinder_config('DEFAULT/qpid_sasl_mechanisms').with_value('PLAIN') }
193 describe 'with qpid rpc and qpid_sasl_mechanisms array' do
196 :database_connection => 'mysql://user:password@host/database',
197 :qpid_password => 'guest',
198 :qpid_sasl_mechanisms => [ 'DIGEST-MD5', 'GSSAPI', 'PLAIN' ],
199 :rpc_backend => 'cinder.openstack.common.rpc.impl_qpid'
203 it { should contain_cinder_config('DEFAULT/qpid_sasl_mechanisms').with_value('DIGEST-MD5 GSSAPI PLAIN') }
206 describe 'with SSL enabled with kombu' do
209 :rabbit_use_ssl => true,
210 :kombu_ssl_ca_certs => '/path/to/ssl/ca/certs',
211 :kombu_ssl_certfile => '/path/to/ssl/cert/file',
212 :kombu_ssl_keyfile => '/path/to/ssl/keyfile',
213 :kombu_ssl_version => 'TLSv1'
218 should contain_cinder_config('DEFAULT/rabbit_use_ssl').with_value('true')
219 should contain_cinder_config('DEFAULT/kombu_ssl_ca_certs').with_value('/path/to/ssl/ca/certs')
220 should contain_cinder_config('DEFAULT/kombu_ssl_certfile').with_value('/path/to/ssl/cert/file')
221 should contain_cinder_config('DEFAULT/kombu_ssl_keyfile').with_value('/path/to/ssl/keyfile')
222 should contain_cinder_config('DEFAULT/kombu_ssl_version').with_value('TLSv1')
226 describe 'with SSL enabled without kombu' do
229 :rabbit_use_ssl => true,
234 should contain_cinder_config('DEFAULT/rabbit_use_ssl').with_value('true')
235 should contain_cinder_config('DEFAULT/kombu_ssl_ca_certs').with_ensure('absent')
236 should contain_cinder_config('DEFAULT/kombu_ssl_certfile').with_ensure('absent')
237 should contain_cinder_config('DEFAULT/kombu_ssl_keyfile').with_ensure('absent')
238 should contain_cinder_config('DEFAULT/kombu_ssl_version').with_value('TLSv1')
242 describe 'with SSL disabled' do
245 :rabbit_use_ssl => false,
246 :kombu_ssl_ca_certs => 'undef',
247 :kombu_ssl_certfile => 'undef',
248 :kombu_ssl_keyfile => 'undef',
249 :kombu_ssl_version => 'TLSv1'
254 should contain_cinder_config('DEFAULT/rabbit_use_ssl').with_value('false')
255 should contain_cinder_config('DEFAULT/kombu_ssl_ca_certs').with_ensure('absent')
256 should contain_cinder_config('DEFAULT/kombu_ssl_certfile').with_ensure('absent')
257 should contain_cinder_config('DEFAULT/kombu_ssl_keyfile').with_ensure('absent')
258 should contain_cinder_config('DEFAULT/kombu_ssl_version').with_ensure('absent')
262 describe 'with syslog disabled' do
267 it { should contain_cinder_config('DEFAULT/use_syslog').with_value(false) }
270 describe 'with syslog enabled' do
273 :use_syslog => 'true',
277 it { should contain_cinder_config('DEFAULT/use_syslog').with_value(true) }
278 it { should contain_cinder_config('DEFAULT/syslog_log_facility').with_value('LOG_USER') }
281 describe 'with syslog enabled and custom settings' do
284 :use_syslog => 'true',
285 :log_facility => 'LOG_LOCAL0'
289 it { should contain_cinder_config('DEFAULT/use_syslog').with_value(true) }
290 it { should contain_cinder_config('DEFAULT/syslog_log_facility').with_value('LOG_LOCAL0') }
293 describe 'with log_dir disabled' do
294 let(:params) { req_params.merge!({:log_dir => false}) }
295 it { should contain_cinder_config('DEFAULT/log_dir').with_ensure('absent') }
298 describe 'with amqp_durable_queues disabled' do
303 it { should contain_cinder_config('DEFAULT/amqp_durable_queues').with_value(false) }
306 describe 'with amqp_durable_queues enabled' do
309 :amqp_durable_queues => true,
313 it { should contain_cinder_config('DEFAULT/amqp_durable_queues').with_value(true) }
316 describe 'with postgresql' do
319 :database_connection => 'postgresql://user:drowssap@host/database',
320 :rabbit_password => 'guest',
324 it { should contain_cinder_config('database/connection').with(
325 :value => 'postgresql://user:drowssap@host/database',
328 it { should_not contain_class('mysql::python') }
329 it { should_not contain_class('mysql::bindings') }
330 it { should_not contain_class('mysql::bindings::python') }
333 describe 'with SSL socket options set' do
337 :cert_file => '/path/to/cert',
338 :ca_file => '/path/to/ca',
339 :key_file => '/path/to/key',
340 :rabbit_password => 'guest',
344 it { should contain_cinder_config('DEFAULT/ssl_ca_file').with_value('/path/to/ca') }
345 it { should contain_cinder_config('DEFAULT/ssl_cert_file').with_value('/path/to/cert') }
346 it { should contain_cinder_config('DEFAULT/ssl_key_file').with_value('/path/to/key') }
349 describe 'with SSL socket options set to false' do
356 :rabbit_password => 'guest',
360 it { should contain_cinder_config('DEFAULT/ssl_ca_file').with_ensure('absent') }
361 it { should contain_cinder_config('DEFAULT/ssl_cert_file').with_ensure('absent') }
362 it { should contain_cinder_config('DEFAULT/ssl_key_file').with_ensure('absent') }
365 describe 'with SSL socket options set wrongly configured' do
369 :ca_file => '/path/to/ca',
370 :key_file => '/path/to/key',
371 :rabbit_password => 'guest',
375 it 'should raise an error' do
378 }.to raise_error Puppet::Error, /The cert_file parameter is required when use_ssl is set to true/