Merge "Support notification/polling full config by hiera"
This commit is contained in:
commit
68a44d1344
|
@ -57,6 +57,11 @@
|
||||||
# (Optional) Whether to manage event_pipeline.yaml
|
# (Optional) Whether to manage event_pipeline.yaml
|
||||||
# Defaults to false
|
# 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*]
|
# [*event_pipeline_publishers*]
|
||||||
# (Optional) A list of publishers to put in event_pipeline.yaml
|
# (Optional) A list of publishers to put in event_pipeline.yaml
|
||||||
# Add 'notifier://?topic=alarm.all' to the list if you are using Aodh
|
# Add 'notifier://?topic=alarm.all' to the list if you are using Aodh
|
||||||
|
@ -67,6 +72,11 @@
|
||||||
# (Optional) Whether to manage pipeline.yaml
|
# (Optional) Whether to manage pipeline.yaml
|
||||||
# Defaults to false
|
# 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*]
|
# [*pipeline_publishers*]
|
||||||
# (Optional) A list of publishers to put in pipeline.yaml.
|
# (Optional) A list of publishers to put in pipeline.yaml.
|
||||||
# By default all the data is dispatched to gnocchi
|
# By default all the data is dispatched to gnocchi
|
||||||
|
@ -83,8 +93,10 @@ class ceilometer::agent::notification (
|
||||||
$package_ensure = 'present',
|
$package_ensure = 'present',
|
||||||
$manage_event_pipeline = false,
|
$manage_event_pipeline = false,
|
||||||
$event_pipeline_publishers = ['gnocchi://'],
|
$event_pipeline_publishers = ['gnocchi://'],
|
||||||
|
$event_pipeline_config = undef,
|
||||||
$manage_pipeline = false,
|
$manage_pipeline = false,
|
||||||
$pipeline_publishers = ['gnocchi://'],
|
$pipeline_publishers = ['gnocchi://'],
|
||||||
|
$pipeline_config = undef,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
include ceilometer::deps
|
include ceilometer::deps
|
||||||
|
@ -114,13 +126,19 @@ class ceilometer::agent::notification (
|
||||||
tag => 'ceilometer-service'
|
tag => 'ceilometer-service'
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($manage_event_pipeline) {
|
if $manage_event_pipeline {
|
||||||
validate_legacy(Array, 'validate_array', $event_pipeline_publishers)
|
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':
|
file { 'event_pipeline':
|
||||||
ensure => present,
|
ensure => present,
|
||||||
path => $::ceilometer::params::event_pipeline,
|
path => $::ceilometer::params::event_pipeline,
|
||||||
content => template('ceilometer/event_pipeline.yaml.erb'),
|
content => $event_pipeline_content,
|
||||||
selinux_ignore_defaults => true,
|
selinux_ignore_defaults => true,
|
||||||
mode => '0640',
|
mode => '0640',
|
||||||
owner => 'root',
|
owner => 'root',
|
||||||
|
@ -129,13 +147,19 @@ class ceilometer::agent::notification (
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($manage_pipeline) {
|
if $manage_pipeline {
|
||||||
validate_legacy(Array, 'validate_array', $pipeline_publishers)
|
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':
|
file { 'pipeline':
|
||||||
ensure => present,
|
ensure => present,
|
||||||
path => $::ceilometer::params::pipeline,
|
path => $::ceilometer::params::pipeline,
|
||||||
content => template('ceilometer/pipeline.yaml.erb'),
|
content => $pipeline_content,
|
||||||
selinux_ignore_defaults => true,
|
selinux_ignore_defaults => true,
|
||||||
mode => '0640',
|
mode => '0640',
|
||||||
owner => 'root',
|
owner => 'root',
|
||||||
|
|
|
@ -53,6 +53,11 @@
|
||||||
# the polling.yaml file, used only if manage_polling is true.
|
# the polling.yaml file, used only if manage_polling is true.
|
||||||
# Defaults to $::ceilometer::params::polling_meters
|
# 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 (
|
class ceilometer::agent::polling (
|
||||||
$manage_service = true,
|
$manage_service = true,
|
||||||
$enabled = true,
|
$enabled = true,
|
||||||
|
@ -65,6 +70,7 @@ class ceilometer::agent::polling (
|
||||||
$manage_polling = false,
|
$manage_polling = false,
|
||||||
$polling_interval = 600,
|
$polling_interval = 600,
|
||||||
$polling_meters = $::ceilometer::params::polling_meters,
|
$polling_meters = $::ceilometer::params::polling_meters,
|
||||||
|
$polling_config = undef,
|
||||||
) inherits ceilometer {
|
) inherits ceilometer {
|
||||||
|
|
||||||
include ceilometer::deps
|
include ceilometer::deps
|
||||||
|
@ -145,10 +151,17 @@ class ceilometer::agent::polling (
|
||||||
}
|
}
|
||||||
|
|
||||||
if $manage_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':
|
file { 'polling':
|
||||||
ensure => present,
|
ensure => present,
|
||||||
path => $::ceilometer::params::polling,
|
path => $::ceilometer::params::polling,
|
||||||
content => template('ceilometer/polling.yaml.erb'),
|
content => $polling_content,
|
||||||
selinux_ignore_defaults => true,
|
selinux_ignore_defaults => true,
|
||||||
tag => 'ceilometer-yamls',
|
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
|
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
|
context "with event_pipeline management disabled" do
|
||||||
before { params.merge!(
|
before { params.merge!(
|
||||||
:manage_event_pipeline => false
|
:manage_event_pipeline => false
|
||||||
|
@ -185,6 +221,40 @@ describe 'ceilometer::agent::notification' do
|
||||||
) }
|
) }
|
||||||
end
|
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
|
context "with pipeline management disabled" do
|
||||||
before { params.merge!(
|
before { params.merge!(
|
||||||
:manage_pipeline => false
|
:manage_pipeline => false
|
||||||
|
|
|
@ -139,7 +139,7 @@ sources:
|
||||||
)}
|
)}
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'with polling and custom config' do
|
context 'with polling and basic custom settings' do
|
||||||
before do
|
before do
|
||||||
params.merge!( :manage_polling => true,
|
params.merge!( :manage_polling => true,
|
||||||
:polling_interval => 30,
|
:polling_interval => 30,
|
||||||
|
@ -162,6 +162,35 @@ sources:
|
||||||
)}
|
)}
|
||||||
end
|
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
|
context 'with polling management disabled' do
|
||||||
before do
|
before do
|
||||||
params.merge!( :manage_polling => false )
|
params.merge!( :manage_polling => false )
|
||||||
|
|
Loading…
Reference in New Issue