diff --git a/manifests/agent/notification.pp b/manifests/agent/notification.pp index 3b896cc5..e13e676c 100644 --- a/manifests/agent/notification.pp +++ b/manifests/agent/notification.pp @@ -57,6 +57,16 @@ # (Optional) ensure state for package. # Defaults to 'present'. # +# [*manage_event_pipeline*] +# (Optional) Whether to manage event_pipeline.yaml +# Defaults to false +# +# [*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 +# for alarms. +# Defaults to ['notifier://'], +# class ceilometer::agent::notification ( $manage_service = true, $enabled = true, @@ -66,6 +76,8 @@ class ceilometer::agent::notification ( $notification_workers = $::os_service_default, $messaging_urls = $::os_service_default, $package_ensure = 'present', + $manage_event_pipeline = false, + $event_pipeline_publishers = ['notifier://'], ) { include ::ceilometer::params @@ -100,6 +112,20 @@ class ceilometer::agent::notification ( tag => 'ceilometer-service' } + if ($manage_event_pipeline) { + validate_array($event_pipeline_publishers) + + file { 'event_pipeline': + ensure => present, + path => $::ceilometer::params::event_pipeline, + content => template('ceilometer/event_pipeline.yaml.erb'), + selinux_ignore_defaults => true + } + + Package<| tag == 'ceilometer-package' |> -> File['event_pipeline'] + File['event_pipeline'] ~> Service['ceilometer-agent-notification'] + } + ceilometer_config { 'notification/ack_on_event_error' : value => $ack_on_event_error; 'notification/store_events' : value => $store_events; diff --git a/manifests/params.pp b/manifests/params.pp index d6daa526..645196d1 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -9,6 +9,7 @@ class ceilometer::params { $dbsync_command = 'ceilometer-dbsync --config-file=/etc/ceilometer/ceilometer.conf' $expirer_command = 'ceilometer-expirer' $user = 'ceilometer' + $event_pipeline = '/etc/ceilometer/event_pipeline.yaml' case $::osfamily { 'RedHat': { diff --git a/releasenotes/notes/event-pipeline-d49e4bb90fddbb0b.yaml b/releasenotes/notes/event-pipeline-d49e4bb90fddbb0b.yaml new file mode 100644 index 00000000..25195d2c --- /dev/null +++ b/releasenotes/notes/event-pipeline-d49e4bb90fddbb0b.yaml @@ -0,0 +1,3 @@ +--- +features: + - Add the ability to manage publishers in event_pipeline.yaml diff --git a/spec/classes/ceilometer_agent_notification_spec.rb b/spec/classes/ceilometer_agent_notification_spec.rb index da8fd01c..c172234e 100644 --- a/spec/classes/ceilometer_agent_notification_spec.rb +++ b/spec/classes/ceilometer_agent_notification_spec.rb @@ -111,6 +111,65 @@ describe 'ceilometer::agent::notification' do ) end end + + context "with event_pipeline management enabled" do + before { params.merge!( + :manage_event_pipeline => true + ) } + + it { is_expected.to contain_file('event_pipeline').with( + 'path' => '/etc/ceilometer/event_pipeline.yaml', + ) } + + it { 'configures event_pipeline with the default notifier' + verify_contents(catalogue, 'event_pipeline', [ + "---", + "sources:", + " - name: event_source", + " events:", + " - \"*\"", + " sinks:", + " - event_sink", + "sinks:", + " - name: event_sink", + " transformers:", + " triggers:", + " publishers:", + " - notifier://", + ])} + end + + context "with multiple event_pipeline publishers specified" do + before { params.merge!( + :manage_event_pipeline => true, + :event_pipeline_publishers => ['notifier://', 'notifier://?topic=alarm.all'] + ) } + + it { 'configures event_pipeline with multiple publishers' + verify_contents(catalogue, 'event_pipeline', [ + "---", + "sources:", + " - name: event_source", + " events:", + " - \"*\"", + " sinks:", + " - event_sink", + "sinks:", + " - name: event_sink", + " transformers:", + " triggers:", + " publishers:", + " - notifier://", + " - notifier://?topic=alarm.all", + ])} + end + + context "with event_pipeline management disabled" do + before { params.merge!( + :manage_event_pipeline => false + ) } + it { is_expected.not_to contain_file('event_pipeline') } + end end context 'on Debian platforms' do diff --git a/templates/event_pipeline.yaml.erb b/templates/event_pipeline.yaml.erb new file mode 100644 index 00000000..fecdd602 --- /dev/null +++ b/templates/event_pipeline.yaml.erb @@ -0,0 +1,15 @@ +--- +sources: + - name: event_source + events: + - "*" + sinks: + - event_sink +sinks: + - name: event_sink + transformers: + triggers: + publishers: +<% @event_pipeline_publishers.each do |publisher| -%> + - <%= publisher %> +<% end -%>