# (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
# (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
$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
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',
}
}
- 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',
# 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,
$manage_polling = false,
$polling_interval = 600,
$polling_meters = $::ceilometer::params::polling_meters,
+ $polling_config = undef,
) inherits ceilometer {
include ceilometer::deps
}
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',
}
])}
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
) }
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
)}
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,
)}
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 )