Make pipeline config more flexible
This patch:
- moves Ceilometer notification agent to correct class
- adds posibility to configure query parameters
- avoid setting gnocchi publishers by default
Change-Id: I5cd0b6e99f5ffcc495225c61f0773240d90e7930
(cherry picked from commit 4443ae7037
)
This commit is contained in:
parent
71ff36d35e
commit
78a97af362
@ -71,22 +71,6 @@
|
|||||||
# Enable ssl oslo messaging services
|
# Enable ssl oslo messaging services
|
||||||
# Defaults to hiera('oslo_messaging_notify_use_ssl', '0')
|
# Defaults to hiera('oslo_messaging_notify_use_ssl', '0')
|
||||||
#
|
#
|
||||||
# [*notifier_host_addr*]
|
|
||||||
# (optional) Ip address of ceilometer notifier (edge qdr Endpoint)
|
|
||||||
# Defaults to false
|
|
||||||
#
|
|
||||||
# [*notifier_host_port*]
|
|
||||||
# (optional) Ceilometer notifier port
|
|
||||||
# Defaults to undef
|
|
||||||
#
|
|
||||||
# [*event_pipeline_publishers*]
|
|
||||||
# (Optional) A list of event pipeline publishers
|
|
||||||
# Defaults to undef
|
|
||||||
#
|
|
||||||
# [*pipeline_publishers*]
|
|
||||||
# (Optional) A list of pipeline publishers
|
|
||||||
# Defaults to undef
|
|
||||||
|
|
||||||
class tripleo::profile::base::ceilometer (
|
class tripleo::profile::base::ceilometer (
|
||||||
$step = Integer(hiera('step')),
|
$step = Integer(hiera('step')),
|
||||||
$oslomsg_rpc_proto = hiera('oslo_messaging_rpc_scheme', 'rabbit'),
|
$oslomsg_rpc_proto = hiera('oslo_messaging_rpc_scheme', 'rabbit'),
|
||||||
@ -101,10 +85,6 @@ class tripleo::profile::base::ceilometer (
|
|||||||
$oslomsg_notify_port = hiera('oslo_messaging_notify_port', '5672'),
|
$oslomsg_notify_port = hiera('oslo_messaging_notify_port', '5672'),
|
||||||
$oslomsg_notify_username = hiera('oslo_messaging_notify_user_name', 'guest'),
|
$oslomsg_notify_username = hiera('oslo_messaging_notify_user_name', 'guest'),
|
||||||
$oslomsg_notify_use_ssl = hiera('oslo_messaging_notify_use_ssl', '0'),
|
$oslomsg_notify_use_ssl = hiera('oslo_messaging_notify_use_ssl', '0'),
|
||||||
$notifier_host_addr = false,
|
|
||||||
$notifier_host_port = undef,
|
|
||||||
$event_pipeline_publishers = undef,
|
|
||||||
$pipeline_publishers = undef,
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
if $step >= 3 {
|
if $step >= 3 {
|
||||||
@ -131,28 +111,6 @@ class tripleo::profile::base::ceilometer (
|
|||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
|
|
||||||
if $notifier_host_addr {
|
|
||||||
class {'::ceilometer::agent::notification' :
|
|
||||||
event_pipeline_publishers => concat(any2array(os_transport_url({
|
|
||||||
'transport' => 'notifier',
|
|
||||||
'host' => $notifier_host_addr,
|
|
||||||
'port' => $notifier_host_port,
|
|
||||||
'query' => { 'driver' => 'amqp' },
|
|
||||||
})), $event_pipeline_publishers),
|
|
||||||
pipeline_publishers => concat(any2array(os_transport_url({
|
|
||||||
'transport' => 'notifier',
|
|
||||||
'host' => $notifier_host_addr,
|
|
||||||
'port' => $notifier_host_port,
|
|
||||||
'query' => { 'driver' => 'amqp' },
|
|
||||||
})), $pipeline_publishers),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
class {'::ceilometer::agent::notification' :
|
|
||||||
event_pipeline_publishers => $event_pipeline_publishers,
|
|
||||||
pipeline_publishers => $pipeline_publishers,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
include ::ceilometer::config
|
include ::ceilometer::config
|
||||||
include ::ceilometer::logging
|
include ::ceilometer::logging
|
||||||
}
|
}
|
||||||
|
@ -23,15 +23,89 @@
|
|||||||
# for more details.
|
# for more details.
|
||||||
# Defaults to hiera('step')
|
# Defaults to hiera('step')
|
||||||
#
|
#
|
||||||
|
# [*notifier_enabled*]
|
||||||
|
# (optional) Enable configuration of notifier as pipeline publisher.
|
||||||
|
# Defaults to false
|
||||||
|
#
|
||||||
|
# [*notifier_events_enabled*]
|
||||||
|
# (optional) Enable configuration of event notifier as pipeline publisher.
|
||||||
|
# Defaults to false
|
||||||
|
#
|
||||||
|
# [*notifier_host_addr*]
|
||||||
|
# (optional) IP address of Ceilometer notifier (edge qdr Endpoint)
|
||||||
|
# Defaults to undef
|
||||||
|
#
|
||||||
|
# [*notifier_host_port*]
|
||||||
|
# (optional) Ceilometer notifier port
|
||||||
|
# Defaults to undef
|
||||||
|
#
|
||||||
|
# [*notifier_params*]
|
||||||
|
# (optional) Query parameters for notifier URL
|
||||||
|
# Defaults to {'driver' => 'amqp', 'topic' => 'ceilometer/metering.sample'}
|
||||||
|
#
|
||||||
|
# [*notifier_event_params*]
|
||||||
|
# (optional) Query parameters for event notifier URL
|
||||||
|
# Defaults to {'driver' => 'amqp', 'topic' => 'ceilometer/event.sample'}
|
||||||
|
#
|
||||||
|
# [*event_pipeline_publishers*]
|
||||||
|
# (Optional) A list of event pipeline publishers
|
||||||
|
# Defaults to undef
|
||||||
|
#
|
||||||
|
# [*pipeline_publishers*]
|
||||||
|
# (Optional) A list of pipeline publishers
|
||||||
|
# Defaults to undef
|
||||||
class tripleo::profile::base::ceilometer::agent::notification (
|
class tripleo::profile::base::ceilometer::agent::notification (
|
||||||
$step = Integer(hiera('step')),
|
$step = Integer(hiera('step')),
|
||||||
|
$notifier_enabled = false,
|
||||||
|
$notifier_events_enabled = false,
|
||||||
|
$notifier_host_addr = undef,
|
||||||
|
$notifier_host_port = undef,
|
||||||
|
$notifier_params = {'driver' => 'amqp', 'topic' => 'ceilometer/metering.sample'},
|
||||||
|
$notifier_event_params = {'driver' => 'amqp', 'topic' => 'ceilometer/event.sample'},
|
||||||
|
$pipeline_publishers = undef,
|
||||||
|
$event_pipeline_publishers = undef,
|
||||||
) {
|
) {
|
||||||
include ::tripleo::profile::base::ceilometer
|
include ::tripleo::profile::base::ceilometer
|
||||||
include ::tripleo::profile::base::ceilometer::upgrade
|
include ::tripleo::profile::base::ceilometer::upgrade
|
||||||
|
|
||||||
if $step >= 4 {
|
if $step >= 4 {
|
||||||
include ::ceilometer::agent::auth
|
include ::ceilometer::agent::auth
|
||||||
include ::ceilometer::agent::notification
|
|
||||||
|
if $pipeline_publishers {
|
||||||
|
$other_publishers = Array($pipeline_publishers, true)
|
||||||
|
} else {
|
||||||
|
$other_publishers = []
|
||||||
|
}
|
||||||
|
if $notifier_enabled {
|
||||||
|
$real_pipeline_publishers = $other_publishers + [os_transport_url({
|
||||||
|
'transport' => 'notifier',
|
||||||
|
'host' => $notifier_host_addr,
|
||||||
|
'port' => $notifier_host_port,
|
||||||
|
'query' => $notifier_params,
|
||||||
|
})]
|
||||||
|
} else {
|
||||||
|
$real_pipeline_publishers = $other_publishers
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if $event_pipeline_publishers {
|
||||||
|
$other_event_publishers = Array($event_pipeline_publishers, true)
|
||||||
|
} else {
|
||||||
|
$other_event_publishers = []
|
||||||
|
}
|
||||||
|
if $notifier_events_enabled {
|
||||||
|
$real_event_pipeline_publishers = $other_event_publishers + [os_transport_url({
|
||||||
|
'transport' => 'notifier',
|
||||||
|
'host' => $notifier_host_addr,
|
||||||
|
'port' => $notifier_host_port,
|
||||||
|
'query' => $notifier_event_params,
|
||||||
|
})]
|
||||||
|
} else {
|
||||||
|
$real_event_pipeline_publishers = $other_event_publishers
|
||||||
|
}
|
||||||
|
|
||||||
|
class { '::ceilometer::agent::notification':
|
||||||
|
event_pipeline_publishers => $real_event_pipeline_publishers,
|
||||||
|
pipeline_publishers => $real_pipeline_publishers,
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,68 @@
|
|||||||
|
#
|
||||||
|
# Copyright (C) 2020 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::notification' do
|
||||||
|
shared_examples_for 'tripleo::profile::base::ceilometer::agent::notification' do
|
||||||
|
before :each do
|
||||||
|
facts.merge!({ :step => params[:step] })
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'with step less than 4' do
|
||||||
|
let(:params) do
|
||||||
|
{ :step => 3 }
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should do nothing' do
|
||||||
|
is_expected.to contain_class('tripleo::profile::base::ceilometer::agent::notification')
|
||||||
|
is_expected.to_not contain_class('ceilometer::agent::notification')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'with step 4 and notifier configured' do
|
||||||
|
let(:pre_condition) do
|
||||||
|
"class { 'ceilometer::agent::auth': auth_password => 'password' }"
|
||||||
|
end
|
||||||
|
|
||||||
|
let(:params) do
|
||||||
|
{ :step => 4,
|
||||||
|
:notifier_enabled => false,
|
||||||
|
:notifier_events_enabled => true,
|
||||||
|
:notifier_host_addr => '127.0.0.1',
|
||||||
|
:notifier_host_port => '5666' }
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should trigger complete configuration' do
|
||||||
|
is_expected.to contain_class('ceilometer::agent::notification').with(
|
||||||
|
:event_pipeline_publishers => ["notifier://127.0.0.1:5666/?driver=amqp&topic=ceilometer/event.sample"],
|
||||||
|
:pipeline_publishers => []
|
||||||
|
)
|
||||||
|
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::notification'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue
Block a user