Merge "Support notification/polling full config by hiera"
commit
68a44d1344
|
@ -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) {
|
||||
validate_legacy(Array, 'validate_array', $event_pipeline_publishers)
|
||||
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) {
|
||||
validate_legacy(Array, 'validate_array', $pipeline_publishers)
|
||||
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',
|
||||
|
|
|
@ -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',
|
||||
}
|
||||
|
|
|
@ -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.
|
|
@ -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
|
||||
|
|
|
@ -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 )
|
||||
|
|
Loading…
Reference in New Issue