diff --git a/manifests/reports.pp b/manifests/reports.pp new file mode 100644 index 00000000..9413e3d8 --- /dev/null +++ b/manifests/reports.pp @@ -0,0 +1,48 @@ +# == Class: ironic::reports +# +# Configure oslo_reports options +# +# === Parameters +# +# [*log_dir*] +# (Optional) Path to a log directory where to create a file +# Defaults to $facts['os_service_default'] +# +# [*file_event_handler*] +# (Optional) The path to a file to watch for changes to trigger the reports. +# Defaults to $facts['os_service_default'] +# +# [*file_event_handler_interval*] +# (Optional) How many seconds to wait between pools when file_event_handler +# is set. +# Defaults to $facts['os_service_default'] +# +# [*package_ensure*] +# (Optional) ensure state for package. +# Defaults to 'present' +# +# [*manage_package*] +# (Optional) Manage oslo.reports package. +# Defaults to true +# +class ironic::reports( + $log_dir = $facts['os_service_default'], + $file_event_handler = $facts['os_service_default'], + $file_event_handler_interval = $facts['os_service_default'], + $package_ensure = 'present', + Boolean $manage_package = true, +) { + + include ironic::deps + + oslo::reports { 'ironic_config': + log_dir => $log_dir, + file_event_handler => $file_event_handler, + file_event_handler_interval => $file_event_handler_interval, + package_ensure => $package_ensure, + manage_package => $manage_package, + } + + # Install the oslo.reports library before starting the ironic service + Oslo::Reports['ironic_config'] -> Anchor['ironic::service::begin'] +} diff --git a/releasenotes/notes/oslo-reports-5d3a111ce191107f.yaml b/releasenotes/notes/oslo-reports-5d3a111ce191107f.yaml new file mode 100644 index 00000000..324af6a0 --- /dev/null +++ b/releasenotes/notes/oslo-reports-5d3a111ce191107f.yaml @@ -0,0 +1,4 @@ +--- +features: + - | + The new ``ironic::reports`` class has been added. diff --git a/spec/classes/ironic_reports_spec.rb b/spec/classes/ironic_reports_spec.rb new file mode 100644 index 00000000..f7ecdf76 --- /dev/null +++ b/spec/classes/ironic_reports_spec.rb @@ -0,0 +1,47 @@ +require 'spec_helper' + +describe 'ironic::reports' do + shared_examples 'ironic::reports' do + context 'with default parameters' do + it { + is_expected.to contain_oslo__reports('ironic_config').with( + :log_dir => '', + :file_event_handler => '', + :file_event_handler_interval => '', + :package_ensure => 'present', + :manage_package => true, + ) + } + end + + context 'with specified parameters' do + let :params do + { + :log_dir => '/var/log/ironic', + :file_event_handler => '/var/tmp/ironic/reports', + :file_event_handler_interval => 1, + } + end + + it { + is_expected.to contain_oslo__reports('ironic_config').with( + :log_dir => '/var/log/ironic', + :file_event_handler => '/var/tmp/ironic/reports', + :file_event_handler_interval => 1, + ) + } + end + end + + on_supported_os({ + :supported_os => OSDefaults.get_supported_os + }).each do |os,facts| + context "on #{os}" do + let (:facts) do + facts.merge(OSDefaults.get_facts()) + end + + it_behaves_like 'ironic::reports' + end + end +end