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
|
||||
# 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 (
|
||||
$step = Integer(hiera('step')),
|
||||
$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_username = hiera('oslo_messaging_notify_user_name', 'guest'),
|
||||
$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 {
|
||||
@ -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::logging
|
||||
}
|
||||
|
@ -23,15 +23,89 @@
|
||||
# for more details.
|
||||
# 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 (
|
||||
$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::upgrade
|
||||
|
||||
if $step >= 4 {
|
||||
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