diff --git a/manifests/storage/filter/backend_ratelimit.pp b/manifests/storage/filter/backend_ratelimit.pp new file mode 100644 index 00000000..a6afca9d --- /dev/null +++ b/manifests/storage/filter/backend_ratelimit.pp @@ -0,0 +1,49 @@ +# +# Configure swift backend limit +# +# == Parameters +# +# [*requests_per_device_per_second*] +# (optional) Set the maximum rate of requests per second per device per +# worker. +# Defaults to $::os_service_default +# +# [*requests_per_device_rate_buffer*] +# (optional) Set the number of seconds of unused rate-limiting allowance that +# can accumulate and be used to allow a subsequent burst of requests. +# Defaults to $::os_service_default +# +# == Dependencies +# +# == Examples +# +# == Authors +# +# Takashi Kajinami tkajinam@redhat.com +# +# == Copyright +# +# Copyright 2022 Red Hat, unless otherwise noted. +# +define swift::storage::filter::backend_ratelimit( + $requests_per_device_per_second = $::os_service_default, + $requests_per_device_rate_buffer = $::os_service_default, +) { + + include swift::deps + + $config_type = "swift_${name}_config" + + create_resources($config_type, { + 'filter:backend_ratelimit/use' => { + 'value' => 'egg:swift#backend_ratelimit' + }, + 'filter:backend_ratelimit/requests_per_device_per_second' => { + 'value' => $requests_per_device_per_second + }, + 'filter:backend_ratelimit/requests_per_device_rate_buffer' => { + 'value' => $requests_per_device_rate_buffer + } + }) + +} diff --git a/releasenotes/notes/backend_ratelimit-d10d25bbce1b0242.yaml b/releasenotes/notes/backend_ratelimit-d10d25bbce1b0242.yaml new file mode 100644 index 00000000..094afe66 --- /dev/null +++ b/releasenotes/notes/backend_ratelimit-d10d25bbce1b0242.yaml @@ -0,0 +1,6 @@ +--- +features: + - | + The new ``swift::storage::filter::backend_ratelimit`` defined resource type + has been added. This defined type configures the backend ratelimit + middleware. diff --git a/spec/defines/swift_storage_filter_backend_ratelimit_spec.rb b/spec/defines/swift_storage_filter_backend_ratelimit_spec.rb new file mode 100644 index 00000000..816d0506 --- /dev/null +++ b/spec/defines/swift_storage_filter_backend_ratelimit_spec.rb @@ -0,0 +1,48 @@ +require 'spec_helper' + +describe 'swift::storage::filter::backend_ratelimit' do + let :title do + 'account' + end + + shared_examples 'swift::storage::filter::backend_ratelimit' do + describe 'when passing default parameters' do + it 'should configure the backend_ratelimit middleware' do + is_expected.to contain_swift_account_config('filter:backend_ratelimit/use').\ + with_value('egg:swift#backend_ratelimit') + is_expected.to contain_swift_account_config('filter:backend_ratelimit/requests_per_device_per_second').\ + with_value('') + is_expected.to contain_swift_account_config('filter:backend_ratelimit/requests_per_device_rate_buffer').\ + with_value('') + end + end + + describe 'when overriding default parameters' do + let :params do + { + :requests_per_device_per_second => 0.0, + :requests_per_device_rate_buffer => 1.0 + } + end + + it 'should configure the backend_ratelimit middleware' do + is_expected.to contain_swift_account_config('filter:backend_ratelimit/requests_per_device_per_second').\ + with_value(0.0) + is_expected.to contain_swift_account_config('filter:backend_ratelimit/requests_per_device_rate_buffer').\ + with_value(1.0) + 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 'swift::storage::filter::backend_ratelimit' + end + end +end