From fade72deab0c52f7ea71b2891acb3785e1682a6b Mon Sep 17 00:00:00 2001 From: Chris Dent Date: Thu, 13 Nov 2014 20:24:33 +0000 Subject: [PATCH] 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 --- manifests/agent/central.pp | 9 +++++++++ manifests/alarm/evaluator.pp | 12 +++++++++++- spec/classes/ceilometer_agent_central_spec.rb | 12 +++++++++--- spec/classes/ceilometer_alarm_evaluator_spec.rb | 5 ++++- 4 files changed, 33 insertions(+), 5 deletions(-) diff --git a/manifests/agent/central.pp b/manifests/agent/central.pp index c42d9060..a781255f 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 c634f3ba..9a67843a 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 0e20c0bd..9782086d 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 b2c4c48b..e8589a09 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