From ee2f3cd4498b2ef3a6633991206b7185c1d32897 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 (cherry picked from commit fade72deab0c52f7ea71b2891acb3785e1682a6b) --- 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 c42d9060b..a781255fb 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 @@ 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 c634f3ba6..9a67843ae 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 @@ $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 @@ '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 0e20c0bd5..9782086d1 100644 --- a/spec/classes/ceilometer_agent_central_spec.rb +++ b/spec/classes/ceilometer_agent_central_spec.rb @@ -7,9 +7,11 @@ 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 @@ 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 b2c4c48b0..e8589a09b 100644 --- a/spec/classes/ceilometer_alarm_evaluator_spec.rb +++ b/spec/classes/ceilometer_alarm_evaluator_spec.rb @@ -38,6 +38,7 @@ 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 @@ 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