diff --git a/manifests/quota.pp b/manifests/quota.pp new file mode 100644 index 00000000..2074b739 --- /dev/null +++ b/manifests/quota.pp @@ -0,0 +1,32 @@ +# The aodh::quota class helps configure quota settings +# +# == Params +# +# [*user_alarm_quota*] +# (optional) Maximum number of alarms defined for a user. +# Defaults to $:os_service_default. +# +# [*project_alarm_quota*] +# (optional) Maximum number of alarms defined for a project. +# Defaults to $:os_service_default. +# +# [*alarm_max_actions*] +# (optional) Maximum count of actions for each state of an alarm. +# Defaults to $:os_service_default. +# +class aodh::quota ( + $user_alarm_quota = $::os_service_default, + $project_alarm_quota = $::os_service_default, + $alarm_max_actions = $::os_service_default, +) { + + include aodh::deps + include aodh::params + + aodh_config { + 'api/user_alarm_quota': value => $user_alarm_quota; + 'api/project_alarm_quota': value => $project_alarm_quota; + 'api/alarm_max_actions': value => $alarm_max_actions; + } + +} diff --git a/releasenotes/notes/quota-2c8473e178a2f566.yaml b/releasenotes/notes/quota-2c8473e178a2f566.yaml new file mode 100644 index 00000000..1e146ef2 --- /dev/null +++ b/releasenotes/notes/quota-2c8473e178a2f566.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + The ``aodh::quota`` class has been added to support parameters to define + quota. diff --git a/spec/classes/aodh_quota_spec.rb b/spec/classes/aodh_quota_spec.rb new file mode 100644 index 00000000..c50f9489 --- /dev/null +++ b/spec/classes/aodh_quota_spec.rb @@ -0,0 +1,48 @@ +require 'spec_helper' + +describe 'aodh::quota' do + + shared_examples_for 'aodh::quota' do + + context 'with default parameters' do + let :params do + {} + end + + it 'configures default values' do + is_expected.to contain_aodh_config('api/user_alarm_quota').with_value('') + is_expected.to contain_aodh_config('api/project_alarm_quota').with_value('') + is_expected.to contain_aodh_config('api/alarm_max_actions').with_value('') + end + end + + context 'when specific parameters' do + let :params do + { + :user_alarm_quota => 10, + :project_alarm_quota => 20, + :alarm_max_actions => 5, + } + end + + it 'configures specified values' do + is_expected.to contain_aodh_config('api/user_alarm_quota').with_value(10) + is_expected.to contain_aodh_config('api/project_alarm_quota').with_value(20) + is_expected.to contain_aodh_config('api/alarm_max_actions').with_value(5) + end + 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_configures 'aodh::quota' + end + end + +end