Add ceilometer polling agent profile
authorPradeep Kilambi <pkilambi@redhat.com>
Tue, 7 Feb 2017 20:47:49 +0000 (15:47 -0500)
committerPradeep Kilambi <pkilambi@redhat.com>
Sat, 25 Feb 2017 17:19:31 +0000 (12:19 -0500)
Ceilometer central, compute and ipmi agent classes are
deprecated. Instead we should be using polling agent
with relevant namespace.

Closes-bug: #1662685

Change-Id: I1ee50124bf8936e12414f984e1bcd4545d92e953

manifests/profile/base/ceilometer/agent/polling.pp [new file with mode: 0644]
releasenotes/notes/add-ceilo-polling-agent-53fab550a09a6196.yaml [new file with mode: 0644]
spec/classes/tripleo_profile_base_ceilometer_agent_polling_spec.rb [new file with mode: 0644]

diff --git a/manifests/profile/base/ceilometer/agent/polling.pp b/manifests/profile/base/ceilometer/agent/polling.pp
new file mode 100644 (file)
index 0000000..3706c2e
--- /dev/null
@@ -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 (file)
index 0000000..127991b
--- /dev/null
@@ -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 (file)
index 0000000..38c94c6
--- /dev/null
@@ -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