Skip to content

Commit

Permalink
Add support for configuring coordination/backend_url
Browse files Browse the repository at this point in the history
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 fade72d)
  • Loading branch information
Chris Dent authored and xbezdick committed Dec 3, 2014
1 parent 741e89a commit ee2f3cd
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 5 deletions.
9 changes: 9 additions & 0 deletions manifests/agent/central.pp
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -47,4 +52,8 @@
hasrestart => true,
}

if $coordination_url {
ensure_resource('ceilometer_config', 'coordination/backend_url',
{'value' => $coordination_url})
}
}
12 changes: 11 additions & 1 deletion manifests/alarm/evaluator.pp
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,18 @@
# (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,
$evaluation_interval = 60,
$evaluation_service = 'ceilometer.alarm.service.SingletonAlarmService',
$partition_rpc_topic = 'alarm_partition_coordination',
$record_history = true,
$coordination_url = undef,
) {

include ceilometer::params
Expand Down Expand Up @@ -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})
}
}
12 changes: 9 additions & 3 deletions spec/classes/ceilometer_agent_central_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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!({
Expand Down
5 changes: 4 additions & 1 deletion spec/classes/ceilometer_alarm_evaluator_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -38,19 +38,22 @@
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
before 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
Expand Down

0 comments on commit ee2f3cd

Please sign in to comment.