From ccea09025b3d019f7809b0b03bf518a251a11e47 Mon Sep 17 00:00:00 2001 From: Emilien Macchi Date: Tue, 30 Sep 2014 16:03:14 -0400 Subject: [PATCH] MongoDB replicaset is now an option In non-HA setup, we don't want MongoDB replicaset. Let's put it as an option, enabled by default to keep backward compatibility. --- manifests/database/nosql.pp | 10 ++++++---- manifests/telemetry/collector.pp | 10 ++++++++-- spec/classes/cloud_database_nosql_spec.rb | 9 +++++++++ spec/classes/cloud_telemetry_collector_spec.rb | 13 +++++++++++++ 4 files changed, 36 insertions(+), 6 deletions(-) diff --git a/manifests/database/nosql.pp b/manifests/database/nosql.pp index d6303cbc..4c5a4307 100644 --- a/manifests/database/nosql.pp +++ b/manifests/database/nosql.pp @@ -32,6 +32,7 @@ # [*replset_members*] # (optional) Ceilometer Replica set members hostnames # Should be an array. Example: ['node1', 'node2', node3'] +# If set to false, the setup won't be HA and no replicaset will be created. # Defaults to hostname # @@ -72,13 +73,14 @@ class cloud::database::nosql( require => Service['mongodb'], } - mongodb_replset{'ceilometer': - members => $array_replset_members, - before => Anchor['mongodb setup done'], + if $replset_members { + mongodb_replset{'ceilometer': + members => $array_replset_members, + before => Anchor['mongodb setup done'], + } } anchor {'mongodb setup done' : require => Exec['check_mongodb'], } - } diff --git a/manifests/telemetry/collector.pp b/manifests/telemetry/collector.pp index 9890e62a..a28f44c8 100644 --- a/manifests/telemetry/collector.pp +++ b/manifests/telemetry/collector.pp @@ -17,13 +17,19 @@ # class cloud::telemetry::collector( - $mongo_nodes = ['127.0.0.1:27017'], + $mongo_nodes = ['127.0.0.1:27017'], + $replicaset_enabled = true, ){ include 'cloud::telemetry' $s_mongo_nodes = join($mongo_nodes, ',') - $db_conn = "mongodb://${s_mongo_nodes}/ceilometer?replicaSet=ceilometer" + + if $replicaset_enabled { + $db_conn = "mongodb://${s_mongo_nodes}/ceilometer?replicaSet=ceilometer" + } else { + $db_conn = "mongodb://${s_mongo_nodes}/ceilometer" + } class { 'ceilometer::db': database_connection => $db_conn, diff --git a/spec/classes/cloud_database_nosql_spec.rb b/spec/classes/cloud_database_nosql_spec.rb index cf6dcac4..38342af9 100644 --- a/spec/classes/cloud_database_nosql_spec.rb +++ b/spec/classes/cloud_database_nosql_spec.rb @@ -50,6 +50,15 @@ describe 'cloud::database::nosql' do ) is_expected.to contain_anchor('mongodb setup done') end + + context 'without replica set' do + before :each do + params.merge!( :replset_members => false) + end + it 'do not configure mongodb replicasets' do + is_expected.not_to contain_mongodb_replset('ceilometer') + end + end end context 'on Debian platforms' do diff --git a/spec/classes/cloud_telemetry_collector_spec.rb b/spec/classes/cloud_telemetry_collector_spec.rb index 65ef826a..bb101f9e 100644 --- a/spec/classes/cloud_telemetry_collector_spec.rb +++ b/spec/classes/cloud_telemetry_collector_spec.rb @@ -71,6 +71,19 @@ describe 'cloud::telemetry::collector' do :database_connection => 'mongodb://node1,node2,node3/ceilometer?replicaSet=ceilometer' ) end + + context 'without replica set' do + before :each do + params.merge!( :replicaset_enabled => false, + :mongo_nodes => ['node1'] ) + end + it 'do not configure mongodb replicasets' do + is_expected.to contain_class('ceilometer::db').with( + :sync_db => true, + :database_connection => 'mongodb://node1/ceilometer' + ) + end + end end context 'on Debian platforms' do