diff --git a/manifests/database/nosql.pp b/manifests/database/nosql.pp index f00e2555..2db7dc2e 100644 --- a/manifests/database/nosql.pp +++ b/manifests/database/nosql.pp @@ -30,19 +30,15 @@ # Defaults to false # # [*replset_members*] -# (optional) Ceilometer Replica set members -# Default value in params -# -# [*mongo_primary*] -# (optional) MongoDB replicaset primary hostname +# (optional) Ceilometer Replica set members hostnames +# Should be an array. Example: ['node1', 'node2', node3'] # Default value in params # class cloud::database::nosql( $bind_ip = $os_params::internal_netif_ip, $nojournal = false, - $replset_members = $os_params::mongo_nodes, - $mongo_primary = $os_params::mongo_primary + $replset_members = $os_params::mongo_nodes ) { # bind_ip should be an array @@ -70,13 +66,9 @@ class cloud::database::nosql( require => Service['mongodb'], } - if $::hostname == $mongo_primary and !empty($replset_members) { - - mongodb_replset{'ceilometer': - members => $replset_members, - before => Anchor['mongodb setup done'], - } - + mongodb_replset{'ceilometer': + members => $replset_members, + before => Anchor['mongodb setup done'], } anchor {'mongodb setup done' : diff --git a/spec/classes/cloud_database_nosql_spec.rb b/spec/classes/cloud_database_nosql_spec.rb index 0e1827a9..0bbc3e8d 100644 --- a/spec/classes/cloud_database_nosql_spec.rb +++ b/spec/classes/cloud_database_nosql_spec.rb @@ -23,8 +23,9 @@ describe 'cloud::database::nosql' do shared_examples_for 'openstack database nosql' do let :params do - { :bind_ip => '10.0.0.1', - :nojournal => false } + { :bind_ip => '10.0.0.1', + :nojournal => false, + :replset_members => ['node1', 'node2', 'node3'] } end it 'configure mongodb server' do @@ -35,6 +36,18 @@ describe 'cloud::database::nosql' do ) end + it 'configure mongodb replicasets' do + should contain_exec('check_mongodb').with( + :command => "/usr/bin/mongo 10.0.0.1:27017", + :logoutput => false, + :tries => 60, + :try_sleep => 5 + ) + should contain_mongodb_replset('ceilometer').with( + :members => ['node1', 'node2', 'node3'] + ) + should contain_anchor('mongodb setup done') + end end context 'on Debian platforms' do diff --git a/spec/classes/cloud_telemetry_server_spec.rb b/spec/classes/cloud_telemetry_server_spec.rb index 6ee574c2..31a3230b 100644 --- a/spec/classes/cloud_telemetry_server_spec.rb +++ b/spec/classes/cloud_telemetry_server_spec.rb @@ -44,7 +44,8 @@ describe 'cloud::telemetry::server' do :ks_ceilometer_internal_port => '8777', :ks_ceilometer_password => 'secrete', :api_eth => '10.0.0.1', - :ceilometer_database_connection => 'mongodb://10.0.0.2/ceilometer' } + :mongo_nodes => ['node1', 'node2', 'node3'], + :mongo_primary => 'node1' } end it 'configure ceilometer common' do @@ -65,18 +66,6 @@ describe 'cloud::telemetry::server' do ) end - it 'check mongodb is started' do - should contain_exec('check_mongodb').with({ - :command => '/usr/bin/mongo 10.0.0.2/ceilometer', - }) - end - - it 'configure ceilometer db' do - should contain_class('ceilometer::db').with( - :database_connection => 'mongodb://10.0.0.2/ceilometer' - ) - end - it 'configure ceilometer collector' do should contain_class('ceilometer::collector') end @@ -106,11 +95,32 @@ describe 'cloud::telemetry::server' do ) end + context 'configure ceilometer db on primary mongodb node' do + it 'configure ceilometer db' do + should contain_class('ceilometer::db').with( + :sync_db => true, + :database_connection => 'mongodb://node1,node2,node3/ceilometer?replicaSet=ceilometer' + ) + end + end + + context 'configure ceilometer db on secondary mongodb node' do + before :each do + facts.merge!( :hostname => 'node2' ) + end + it 'configure ceilometer db' do + should contain_class('ceilometer::db').with( + :sync_db => false, + :database_connection => 'mongodb://node1,node2,node3/ceilometer?replicaSet=ceilometer' + ) + end + end end context 'on Debian platforms' do let :facts do - { :osfamily => 'Debian' } + { :osfamily => 'Debian', + :hostname => 'node1' } end it_configures 'openstack telemetry server' @@ -118,7 +128,8 @@ describe 'cloud::telemetry::server' do context 'on RedHat platforms' do let :facts do - { :osfamily => 'RedHat' } + { :osfamily => 'RedHat', + :hostname => 'node1' } end it_configures 'openstack telemetry server'