From 2405adff7d8b08681ed0d97ca5391be5404c5fd2 Mon Sep 17 00:00:00 2001 From: Sofer Athlan-Guyot Date: Mon, 23 Mar 2015 14:42:41 -0400 Subject: [PATCH] Add udp_address/udp_port parameters for collector. Change-Id: Ib776ecda9185caca9ea5c95525f0ffe4487b6a56 Closes-Bug: rhbz/1185652 --- manifests/collector.pp | 22 +++++++++++++ spec/classes/ceilometer_collector_spec.rb | 39 ++++++++++++++++++++++- 2 files changed, 60 insertions(+), 1 deletion(-) diff --git a/manifests/collector.pp b/manifests/collector.pp index 3088fb4..c651a01 100644 --- a/manifests/collector.pp +++ b/manifests/collector.pp @@ -13,16 +13,38 @@ # (optional) ensure state for package. # Defaults to 'present' # +# [*udp_address*] +# (optional) the ceilometer collector udp bind address. +# Set it empty to disable the collector listener. +# Defaults to '0.0.0.0' +# +# [*udp_port*] +# (optional) the ceilometer collector udp bind port. +# Defaults to '4952' +# class ceilometer::collector ( $manage_service = true, $enabled = true, $package_ensure = 'present', + $udp_address = '0.0.0.0', + $udp_port = '4952', ) { include ::ceilometer::params Ceilometer_config<||> ~> Service['ceilometer-collector'] + # We accept udp_address to be set to empty instead of the usual undef to stay + # close to the "strange" upstream interface. + if (is_ip_address($udp_address) != true and $udp_address != '' ){ + fail("${udp_address} is not a valid ip and is not empty") + } + + ceilometer_config { + 'collector/udp_address' : value => $udp_address; + 'collector/udp_port' : value => $udp_port; + } + Package[$::ceilometer::params::collector_package_name] -> Service['ceilometer-collector'] ensure_resource( 'package', [$::ceilometer::params::collector_package_name], { ensure => $package_ensure } diff --git a/spec/classes/ceilometer_collector_spec.rb b/spec/classes/ceilometer_collector_spec.rb index 314c61b..7b3261e 100644 --- a/spec/classes/ceilometer_collector_spec.rb +++ b/spec/classes/ceilometer_collector_spec.rb @@ -8,6 +8,39 @@ describe 'ceilometer::collector' do shared_examples_for 'ceilometer-collector' do + context 'when invalid ip is passed' do + let :params do + { :udp_address => '300.0.0.0' } + end + it 'should fail' do + is_expected.to raise_error(Puppet::Error, /is not a valid ip and is not empty/) + end + end + + context 'when a valid ipv6 is passed' do + before do + pre_condition << "class { 'ceilometer::db': }" + end + let :params do + { :udp_address => '::1' } + end + it 'shouldn\'t fail' do + is_expected.to_not raise_error + end + end + + context 'when an empty string passed' do + before do + pre_condition << "class { 'ceilometer::db': }" + end + let :params do + { :udp_address => '' } + end + it 'should disable the listener' do + is_expected.to contain_ceilometer_config('collector/udp_address').with_value( '' ) + end + end + context 'when enabled' do before do pre_condition << "class { 'ceilometer::db': }" @@ -15,6 +48,11 @@ describe 'ceilometer::collector' do it { is_expected.to contain_class('ceilometer::params') } + it 'configures ceilometer-collector server' do + is_expected.to contain_ceilometer_config('collector/udp_address').with_value( '0.0.0.0' ) + is_expected.to contain_ceilometer_config('collector/udp_port').with_value( '4952' ) + end + it 'installs ceilometer-collector package' do is_expected.to contain_package(platform_params[:collector_package_name]).with( :ensure => 'present' @@ -44,7 +82,6 @@ describe 'ceilometer::collector' do # Catalog compilation does not crash for lack of ceilometer::db it { is_expected.to compile } - it 'configures ceilometer-collector service' do is_expected.to contain_service('ceilometer-collector').with( :ensure => 'stopped', -- 2.45.2