# (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,
$notification_workers = $::os_service_default,
$messaging_urls = $::os_service_default,
$package_ensure = 'present',
+ $manage_event_pipeline = false,
+ $event_pipeline_publishers = ['notifier://'],
) {
include ::ceilometer::params
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;
)
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