diff --git a/manifests/rabbitmq.pp b/manifests/rabbitmq.pp index 3c2b48616..f2023aeb0 100644 --- a/manifests/rabbitmq.pp +++ b/manifests/rabbitmq.pp @@ -2,12 +2,19 @@ # class for installing rabbitmq server for nova # # +# ==Parameters +# +# [cluster_disk_nodes] Enables/disables RabbitMQ clustering. Specify an array of Rabbit Broker +# IP addresses to configure clustering. Optional. +# Defaults to false. +# class nova::rabbitmq( - $userid ='guest', - $password ='guest', - $port ='5672', - $virtual_host ='/', - $enabled = true + $userid ='guest', + $password ='guest', + $port ='5672', + $virtual_host ='/', + $cluster_disk_nodes = false, + $enabled = true ) { # only configure nova after the queue is up @@ -37,10 +44,21 @@ class nova::rabbitmq( $service_ensure = 'stopped' } - class { 'rabbitmq::server': - service_ensure => $service_ensure, - port => $port, - delete_guest_user => $delete_guest_user, + if $cluster_disk_nodes { + class { 'rabbitmq::server': + service_ensure => $service_ensure, + port => $port, + delete_guest_user => $delete_guest_user, + config_cluster => true, + cluster_disk_nodes => $cluster_disk_nodes, + wipe_db_on_cookie_change => true, + } + } else { + class { 'rabbitmq::server': + service_ensure => $service_ensure, + port => $port, + delete_guest_user => $delete_guest_user, + } } if ($enabled) { diff --git a/spec/classes/nova_rabbitmq_spec.rb b/spec/classes/nova_rabbitmq_spec.rb index 3f3dac46f..82af5dfa5 100644 --- a/spec/classes/nova_rabbitmq_spec.rb +++ b/spec/classes/nova_rabbitmq_spec.rb @@ -75,5 +75,28 @@ describe 'nova::rabbitmq' do end end + describe 'with clustering' do + + let :params do + { + :cluster_disk_nodes => ['rabbit01', 'rabbit02', 'rabbit03'] + } + end + + it 'should contain all the clustering resources' do + + should contain_class('rabbitmq::server').with( + :service_ensure => 'running', + :port => '5672', + :delete_guest_user => false, + :config_cluster => true, + :cluster_disk_nodes => ['rabbit01', 'rabbit02', 'rabbit03'], + :wipe_db_on_cookie_change => true + ) + + end + + end + end