From: Chris Dent Date: Thu, 13 Nov 2014 20:24:33 +0000 (+0000) Subject: Add support for configuring coordination/backend_url X-Git-Tag: 5.1.0~13 X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=ee2f3cd4498b2ef3a6633991206b7185c1d32897;p=puppet-modules%2Fpuppet-ceilometer.git Add support for configuring coordination/backend_url If 'coordination_url' argument and value is provided to the central agent or alarm evaluator classes, they will try to set 'backend_url' in the '[coordination]' section of the ceilometer_config. This allows group membership handling coordinated by tooz. ensure_resource is used to avoid duplicate resources while still allowing the central agent and alarm evaluator to be configured separately if on different machines. Note that this change does not include support for enabling coordination of the compute agent. Change-Id: I707a8b70ad742cc9f8fdc62c196d0e75574a50b2 (cherry picked from commit fade72deab0c52f7ea71b2891acb3785e1682a6b) --- diff --git a/manifests/agent/central.pp b/manifests/agent/central.pp index c42d906..a781255 100644 --- a/manifests/agent/central.pp +++ b/manifests/agent/central.pp @@ -13,11 +13,16 @@ # (optional) ensure state for package. # Defaults to 'present' # +# [*coordination_url*] +# (optional) The url to use for distributed group membership coordination. +# Defaults to undef. +# class ceilometer::agent::central ( $manage_service = true, $enabled = true, $package_ensure = 'present', + $coordination_url = undef, ) { include ceilometer::params @@ -47,4 +52,8 @@ class ceilometer::agent::central ( hasrestart => true, } + if $coordination_url { + ensure_resource('ceilometer_config', 'coordination/backend_url', + {'value' => $coordination_url}) + } } diff --git a/manifests/alarm/evaluator.pp b/manifests/alarm/evaluator.pp index c634f3b..9a67843 100644 --- a/manifests/alarm/evaluator.pp +++ b/manifests/alarm/evaluator.pp @@ -25,6 +25,10 @@ # (optional) Record alarm change events # Defaults to true. # +# [*coordination_url*] +# (optional) The url to use for distributed group membership coordination. +# Defaults to undef. +# class ceilometer::alarm::evaluator ( $manage_service = true, $enabled = true, @@ -32,6 +36,7 @@ class ceilometer::alarm::evaluator ( $evaluation_service = 'ceilometer.alarm.service.SingletonAlarmService', $partition_rpc_topic = 'alarm_partition_coordination', $record_history = true, + $coordination_url = undef, ) { include ceilometer::params @@ -67,5 +72,10 @@ class ceilometer::alarm::evaluator ( 'alarm/evaluation_service' : value => $evaluation_service; 'alarm/partition_rpc_topic' : value => $partition_rpc_topic; 'alarm/record_history' : value => $record_history; - } + } + + if $coordination_url { + ensure_resource('ceilometer_config', 'coordination/backend_url', + {'value' => $coordination_url}) + } } diff --git a/spec/classes/ceilometer_agent_central_spec.rb b/spec/classes/ceilometer_agent_central_spec.rb index 0e20c0b..9782086 100644 --- a/spec/classes/ceilometer_agent_central_spec.rb +++ b/spec/classes/ceilometer_agent_central_spec.rb @@ -7,9 +7,11 @@ describe 'ceilometer::agent::central' do end let :params do - { :enabled => true, - :manage_service => true, - :package_ensure => 'latest' } + { :enabled => true, + :manage_service => true, + :package_ensure => 'latest', + :coordination_url => 'redis://localhost:6379' + } end shared_examples_for 'ceilometer-agent-central' do @@ -48,6 +50,10 @@ describe 'ceilometer::agent::central' do end end + it 'configures central agent' do + should contain_ceilometer_config('coordination/backend_url').with_value( params[:coordination_url] ) + end + context 'with disabled service managing' do before do params.merge!({ diff --git a/spec/classes/ceilometer_alarm_evaluator_spec.rb b/spec/classes/ceilometer_alarm_evaluator_spec.rb index b2c4c48..e8589a0 100644 --- a/spec/classes/ceilometer_alarm_evaluator_spec.rb +++ b/spec/classes/ceilometer_alarm_evaluator_spec.rb @@ -38,6 +38,7 @@ describe 'ceilometer::alarm::evaluator' do should contain_ceilometer_config('alarm/evaluation_service').with_value( params[:evaluation_service] ) should contain_ceilometer_config('alarm/partition_rpc_topic').with_value( params[:partition_rpc_topic] ) should contain_ceilometer_config('alarm/record_history').with_value( params[:record_history] ) + should_not contain_ceilometer_config('coordination/backend_url') end context 'when overriding parameters' do @@ -45,12 +46,14 @@ describe 'ceilometer::alarm::evaluator' do params.merge!(:evaluation_interval => 80, :partition_rpc_topic => 'alarm_partition_coordination', :record_history => false, - :evaluation_service => 'ceilometer.alarm.service.SingletonTestAlarmService') + :evaluation_service => 'ceilometer.alarm.service.SingletonTestAlarmService', + :coordination_url => 'redis://localhost:6379') end it { should contain_ceilometer_config('alarm/evaluation_interval').with_value(params[:evaluation_interval]) } it { should contain_ceilometer_config('alarm/evaluation_service').with_value(params[:evaluation_service]) } it { should contain_ceilometer_config('alarm/record_history').with_value(params[:record_history]) } it { should contain_ceilometer_config('alarm/partition_rpc_topic').with_value(params[:partition_rpc_topic]) } + it { should contain_ceilometer_config('coordination/backend_url').with_value( params[:coordination_url]) } end context 'when override the evaluation interval with a non numeric value' do