aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--manifests/profile/base/ceilometer/agent/polling.pp64
-rw-r--r--releasenotes/notes/add-ceilo-polling-agent-53fab550a09a6196.yaml6
-rw-r--r--spec/classes/tripleo_profile_base_ceilometer_agent_polling_spec.rb72
3 files changed, 142 insertions, 0 deletions
diff --git a/manifests/profile/base/ceilometer/agent/polling.pp b/manifests/profile/base/ceilometer/agent/polling.pp
new file mode 100644
index 0000000..3706c2e
--- /dev/null
+++ b/manifests/profile/base/ceilometer/agent/polling.pp
@@ -0,0 +1,64 @@
+# Copyright 2016 Red Hat, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+# == Class: tripleo::profile::base::ceilometer::agent::polling
+#
+# Ceilometer polling Agent profile for tripleo
+#
+# === Parameters
+#
+# [*central_namespace*]
+# (Optional) Use central namespace for polling agent.
+# Defaults to false.
+#
+# [*compute_namespace*]
+# (Optional) Use compute namespace for polling agent.
+# Defaults to false.
+#
+# [*ipmi_namespace*]
+# (Optional) Use ipmi namespace for polling agent.
+# Defaults to false.
+#
+# [*ceilometer_redis_password*]
+# (Optional) redis password to configure coordination url
+#
+# [*redis_vip*]
+# (Optional) redis vip to configure coordination url
+#
+# [*step*]
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
+#
+class tripleo::profile::base::ceilometer::agent::polling (
+ $central_namespace = hiera('central_namespace', false),
+ $compute_namespace = hiera('compute_namespace', false),
+ $ipmi_namespace = hiera('ipmi_namespace', false),
+ $ceilometer_redis_password = hiera('ceilometer_redis_password', undef),
+ $redis_vip = hiera('redis_vip', undef),
+ $step = hiera('step'),
+) {
+ include ::tripleo::profile::base::ceilometer
+
+ if $step >= 4 {
+ include ::ceilometer::agent::auth
+ class { '::ceilometer::agent::polling':
+ central_namespace => $central_namespace,
+ compute_namespace => $compute_namespace,
+ ipmi_namespace => $ipmi_namespace,
+ coordination_url => join(['redis://:', $ceilometer_redis_password, '@', normalize_ip_for_uri($redis_vip), ':6379/']),
+ }
+ }
+
+}
diff --git a/releasenotes/notes/add-ceilo-polling-agent-53fab550a09a6196.yaml b/releasenotes/notes/add-ceilo-polling-agent-53fab550a09a6196.yaml
new file mode 100644
index 0000000..127991b
--- /dev/null
+++ b/releasenotes/notes/add-ceilo-polling-agent-53fab550a09a6196.yaml
@@ -0,0 +1,6 @@
+---
+features:
+ - Add support for cielometer polling agent. The central, compute and ipmi
+ agent services should use polling agent with namespace. This has been
+ done in packaging already since few releases now. Let puppet do it
+ correctly as well.
diff --git a/spec/classes/tripleo_profile_base_ceilometer_agent_polling_spec.rb b/spec/classes/tripleo_profile_base_ceilometer_agent_polling_spec.rb
new file mode 100644
index 0000000..38c94c6
--- /dev/null
+++ b/spec/classes/tripleo_profile_base_ceilometer_agent_polling_spec.rb
@@ -0,0 +1,72 @@
+#
+# Copyright (C) 2016 Red Hat, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+
+require 'spec_helper'
+
+describe 'tripleo::profile::base::ceilometer::agent::polling' do
+ shared_examples_for 'tripleo::profile::base::ceilometer::agent::polling' do
+ before :each do
+ facts.merge!({ :step => params[:step] })
+ end
+
+ let(:pre_condition) do
+ "class { '::tripleo::profile::base::ceilometer': step => #{params[:step]}, oslomsg_rpc_hosts => ['localhost.localdomain'] }"
+ end
+
+ context 'with step less than 4' do
+ let(:params) { { :step => 3 } }
+
+ it 'should do nothing' do
+ is_expected.to contain_class('tripleo::profile::base::ceilometer::agent::polling')
+ is_expected.to_not contain_class('ceilometer::agent::polling')
+ end
+ end
+
+ context 'with step 4 on polling agent' do
+
+ let(:pre_condition) do
+ "class { '::ceilometer::agent::auth': auth_password => 'password' }"
+ end
+
+ let(:params) { {
+ :step => 4,
+ :ceilometer_redis_password => 'password',
+ :redis_vip => '127.0.0.1',
+ :central_namespace => true
+ } }
+
+ it 'should trigger complete configuration' do
+ is_expected.to contain_class('ceilometer::agent::polling').with(
+ :central_namespace => true,
+ :compute_namespace => false,
+ :ipmi_namespace => false,
+ :coordination_url => 'redis://:password@127.0.0.1:6379/',
+ )
+ end
+ end
+ end
+
+
+ on_supported_os.each do |os, facts|
+ context "on #{os}" do
+ let(:facts) do
+ facts.merge({ :hostname => 'node.example.com' })
+ end
+
+ it_behaves_like 'tripleo::profile::base::ceilometer::agent::polling'
+ end
+ end
+end