Merge "Support notification/polling full config by hiera"

This commit is contained in:
Zuul 2020-05-11 23:07:24 +00:00 committed by Gerrit Code Review
commit 68a44d1344
5 changed files with 149 additions and 8 deletions

View File

@ -57,6 +57,11 @@
# (Optional) Whether to manage event_pipeline.yaml
# Defaults to false
#
# [*event_pipeline_config*]
# (Optional) A hash of the event_pipeline.yaml configuration.
# This is used only if manage_event_pipeline is true.
# Defaults to undef
#
# [*event_pipeline_publishers*]
# (Optional) A list of publishers to put in event_pipeline.yaml
# Add 'notifier://?topic=alarm.all' to the list if you are using Aodh
@ -67,6 +72,11 @@
# (Optional) Whether to manage pipeline.yaml
# Defaults to false
#
# [*pipeline_config*]
# (Optional) A hash of the pipeline.yaml configuration.
# This is used only if manage_pipeline is true.
# Defaults to undef
#
# [*pipeline_publishers*]
# (Optional) A list of publishers to put in pipeline.yaml.
# By default all the data is dispatched to gnocchi
@ -83,8 +93,10 @@ class ceilometer::agent::notification (
$package_ensure = 'present',
$manage_event_pipeline = false,
$event_pipeline_publishers = ['gnocchi://'],
$event_pipeline_config = undef,
$manage_pipeline = false,
$pipeline_publishers = ['gnocchi://'],
$pipeline_config = undef,
) {
include ceilometer::deps
@ -114,13 +126,19 @@ class ceilometer::agent::notification (
tag => 'ceilometer-service'
}
if ($manage_event_pipeline) {
if $manage_event_pipeline {
if $event_pipeline_config {
validate_legacy(Hash, 'validate_hash', $event_pipeline_config)
$event_pipeline_content = to_yaml($event_pipeline_config)
} else {
validate_legacy(Array, 'validate_array', $event_pipeline_publishers)
$event_pipeline_content = template('ceilometer/event_pipeline.yaml.erb')
}
file { 'event_pipeline':
ensure => present,
path => $::ceilometer::params::event_pipeline,
content => template('ceilometer/event_pipeline.yaml.erb'),
content => $event_pipeline_content,
selinux_ignore_defaults => true,
mode => '0640',
owner => 'root',
@ -129,13 +147,19 @@ class ceilometer::agent::notification (
}
}
if ($manage_pipeline) {
if $manage_pipeline {
if $pipeline_config {
validate_legacy(Hash, 'validate_hash', $pipeline_config)
$pipeline_content = to_yaml($pipeline_config)
} else {
validate_legacy(Array, 'validate_array', $pipeline_publishers)
$pipeline_content = template('ceilometer/pipeline.yaml.erb')
}
file { 'pipeline':
ensure => present,
path => $::ceilometer::params::pipeline,
content => template('ceilometer/pipeline.yaml.erb'),
content => $pipeline_content,
selinux_ignore_defaults => true,
mode => '0640',
owner => 'root',

View File

@ -53,6 +53,11 @@
# the polling.yaml file, used only if manage_polling is true.
# Defaults to $::ceilometer::params::polling_meters
#
# [*polling_config*]
# (Optional) A hash of the polling.yaml configuration.
# This is used only if manage_polling is true.
# Defaults to undef
#
class ceilometer::agent::polling (
$manage_service = true,
$enabled = true,
@ -65,6 +70,7 @@ class ceilometer::agent::polling (
$manage_polling = false,
$polling_interval = 600,
$polling_meters = $::ceilometer::params::polling_meters,
$polling_config = undef,
) inherits ceilometer {
include ceilometer::deps
@ -145,10 +151,17 @@ class ceilometer::agent::polling (
}
if $manage_polling {
if $polling_config {
validate_legacy(Hash, 'validate_hash', $polling_config)
$polling_content = to_yaml($polling_config)
} else {
$polling_content = template('ceilometer/polling.yaml.erb')
}
file { 'polling':
ensure => present,
path => $::ceilometer::params::polling,
content => template('ceilometer/polling.yaml.erb'),
content => $polling_content,
selinux_ignore_defaults => true,
tag => 'ceilometer-yamls',
}

View File

@ -0,0 +1,5 @@
---
features:
- Add pipeline_config, event_pipeline_config and polling_config agent
parameters to support setting the whole configuration for these file
by hashes.

View File

@ -165,6 +165,42 @@ describe 'ceilometer::agent::notification' do
])}
end
context 'with event_pipeline and custom config' do
before { params.merge!(
:manage_event_pipeline => true,
:event_pipeline_config => {
'sources' => [
'name' => 'my_event_source',
'events' => ['*'],
'sinks' => ['my_event_sink'],
],
'sinks' => [
'name' => 'my_event_sink',
'transformers' => [],
'triggers' => [],
'publishers' => ['gnocchi://'],
],
}
)}
it { should contain_file('event_pipeline').with(
:content => '---
sources:
- name: my_event_source
events:
- "*"
sinks:
- my_event_sink
sinks:
- name: my_event_sink
transformers: []
triggers: []
publishers:
- gnocchi://
',
)}
end
context "with event_pipeline management disabled" do
before { params.merge!(
:manage_event_pipeline => false
@ -185,6 +221,40 @@ describe 'ceilometer::agent::notification' do
) }
end
context 'with pipeline and custom config' do
before { params.merge!(
:manage_pipeline => true,
:pipeline_config => {
'sources' => [
'name' => 'my_source',
'meters' => ['*'],
'sinks' => ['my_sink'],
],
'sinks' => [
'name' => 'my_sink',
'transformers' => [],
'publishers' => ['gnocchi://'],
],
}
)}
it { should contain_file('pipeline').with(
:content => '---
sources:
- name: my_source
meters:
- "*"
sinks:
- my_sink
sinks:
- name: my_sink
transformers: []
publishers:
- gnocchi://
',
)}
end
context "with pipeline management disabled" do
before { params.merge!(
:manage_pipeline => false

View File

@ -139,7 +139,7 @@ sources:
)}
end
context 'with polling and custom config' do
context 'with polling and basic custom settings' do
before do
params.merge!( :manage_polling => true,
:polling_interval => 30,
@ -162,6 +162,35 @@ sources:
)}
end
context 'with polling and custom config' do
before do
params.merge!( :manage_polling => true,
:polling_config => {
'sources' => [
'name' => 'my_pollsters',
'interval' => 60,
'meters' => [
'meterfoo',
'meterbar',
],
],
} )
end
it { should contain_file('polling').with(
:ensure => 'present',
:path => '/etc/ceilometer/polling.yaml',
:content => '---
sources:
- name: my_pollsters
interval: 60
meters:
- meterfoo
- meterbar
',
)}
end
context 'with polling management disabled' do
before do
params.merge!( :manage_polling => false )