From 5c53236fc2facb991b3a54a91844a94cc9efa8bc Mon Sep 17 00:00:00 2001 From: Takashi Kajinami Date: Mon, 13 Dec 2021 15:28:13 +0900 Subject: [PATCH] Add support for [producer_task:*] options This change introduces support for tunable parameters in the following sections. [producer_task:delayed_notify] [producer_task:periodic_exists] [producer_task:periodic_secondary_refresh] [producer_task:worker_periodic_recovery] [producer_task:zone_purge] Change-Id: Iad8849e77d4139e5473c66f699b5bee640e9dceb --- manifests/producer_task/delayed_notify.pp | 32 +++++++++++++ manifests/producer_task/periodic_exists.pp | 26 ++++++++++ .../periodic_secondary_refresh.pp | 26 ++++++++++ .../producer_task/worker_periodic_recovery.pp | 26 ++++++++++ manifests/producer_task/zone_purge.pp | 39 +++++++++++++++ .../notes/producer_task-cdddb5df3a459fd7.yaml | 10 ++++ ...gnate_producer_task_delayed_notify_spec.rb | 45 +++++++++++++++++ ...nate_producer_task_periodic_exists_spec.rb | 42 ++++++++++++++++ ...er_task_periodic_secondary_refresh_spec.rb | 42 ++++++++++++++++ ...ucer_task_worker_periodic_recovery_spec.rb | 42 ++++++++++++++++ ...designate_producer_task_zone_purge_spec.rb | 48 +++++++++++++++++++ 11 files changed, 378 insertions(+) create mode 100644 manifests/producer_task/delayed_notify.pp create mode 100644 manifests/producer_task/periodic_exists.pp create mode 100644 manifests/producer_task/periodic_secondary_refresh.pp create mode 100644 manifests/producer_task/worker_periodic_recovery.pp create mode 100644 manifests/producer_task/zone_purge.pp create mode 100644 releasenotes/notes/producer_task-cdddb5df3a459fd7.yaml create mode 100644 spec/classes/designate_producer_task_delayed_notify_spec.rb create mode 100644 spec/classes/designate_producer_task_periodic_exists_spec.rb create mode 100644 spec/classes/designate_producer_task_periodic_secondary_refresh_spec.rb create mode 100644 spec/classes/designate_producer_task_worker_periodic_recovery_spec.rb create mode 100644 spec/classes/designate_producer_task_zone_purge_spec.rb diff --git a/manifests/producer_task/delayed_notify.pp b/manifests/producer_task/delayed_notify.pp new file mode 100644 index 00000000..ce7ba5aa --- /dev/null +++ b/manifests/producer_task/delayed_notify.pp @@ -0,0 +1,32 @@ +# == Class designate::producer_task::delayed_notify +# +# Configure delayed_notify producer task in designate-producer +# +# == Parameters +# +# [*interval*] +# (optional) Run interval in seconds. +# Defaults to $::os_service_default +# +# [*per_page*] +# (optional) Default amount of results returned per page. +# Defaults to $::os_service_default +# +# [*batch_size*] +# (optional) How many zones to receive NOTIFY on each run. +# Defaults to $::os_service_default +# +class designate::producer_task::delayed_notify ( + $interval = $::os_service_default, + $per_page = $::os_service_default, + $batch_size = $::os_service_default, +) { + + include designate::deps + + designate_config { + 'producer_task:delayed_notify/interval': value => $interval; + 'producer_task:delayed_notify/per_page': value => $per_page; + 'producer_task:delayed_notify/batch_size': value => $batch_size; + } +} diff --git a/manifests/producer_task/periodic_exists.pp b/manifests/producer_task/periodic_exists.pp new file mode 100644 index 00000000..3ac657fc --- /dev/null +++ b/manifests/producer_task/periodic_exists.pp @@ -0,0 +1,26 @@ +# == Class designate::producer_task::periodic_exists +# +# Configure periodic_exists producer task in designate-producer +# +# == Parameters +# +# [*interval*] +# (optional) Run interval in seconds. +# Defaults to $::os_service_default +# +# [*per_page*] +# (optional) Default amount of results returned per page. +# Defaults to $::os_service_default +# +class designate::producer_task::periodic_exists ( + $interval = $::os_service_default, + $per_page = $::os_service_default, +) { + + include designate::deps + + designate_config { + 'producer_task:periodic_exists/interval': value => $interval; + 'producer_task:periodic_exists/per_page': value => $per_page; + } +} diff --git a/manifests/producer_task/periodic_secondary_refresh.pp b/manifests/producer_task/periodic_secondary_refresh.pp new file mode 100644 index 00000000..8d968baf --- /dev/null +++ b/manifests/producer_task/periodic_secondary_refresh.pp @@ -0,0 +1,26 @@ +# == Class designate::producer_task::periodic_secondary_refresh +# +# Configure periodic_secondary_refresh producer task in designate-producer +# +# == Parameters +# +# [*interval*] +# (optional) Run interval in seconds. +# Defaults to $::os_service_default +# +# [*per_page*] +# (optional) Default amount of results returned per page. +# Defaults to $::os_service_default +# +class designate::producer_task::periodic_secondary_refresh ( + $interval = $::os_service_default, + $per_page = $::os_service_default, +) { + + include designate::deps + + designate_config { + 'producer_task:periodic_secondary_refresh/interval': value => $interval; + 'producer_task:periodic_secondary_refresh/per_page': value => $per_page; + } +} diff --git a/manifests/producer_task/worker_periodic_recovery.pp b/manifests/producer_task/worker_periodic_recovery.pp new file mode 100644 index 00000000..a8d05a97 --- /dev/null +++ b/manifests/producer_task/worker_periodic_recovery.pp @@ -0,0 +1,26 @@ +# == Class designate::producer_task::worker_periodic_recovery +# +# Configure worker_periodic_recovery producer task in designate-producer +# +# == Parameters +# +# [*interval*] +# (optional) Run interval in seconds. +# Defaults to $::os_service_default +# +# [*per_page*] +# (optional) Default amount of results returned per page. +# Defaults to $::os_service_default +# +class designate::producer_task::worker_periodic_recovery ( + $interval = $::os_service_default, + $per_page = $::os_service_default, +) { + + include designate::deps + + designate_config { + 'producer_task:worker_periodic_recovery/interval': value => $interval; + 'producer_task:worker_periodic_recovery/per_page': value => $per_page; + } +} diff --git a/manifests/producer_task/zone_purge.pp b/manifests/producer_task/zone_purge.pp new file mode 100644 index 00000000..47933f37 --- /dev/null +++ b/manifests/producer_task/zone_purge.pp @@ -0,0 +1,39 @@ +# == Class designate::producer_task::zone_purge +# +# Configure zone_purge producer task in designate-producer +# +# == Parameters +# +# [*interval*] +# (optional) Run interval in seconds. +# Defaults to $::os_service_default +# +# [*per_page*] +# (optional) Default amount of results returned per page. +# Defaults to $::os_service_default +# +# [*time_threshold*] +# (optional) How old deleted zones should be (deleted_at) to be purged, in +# seconds. +# Defaults to $::os_service_default +# +# [*batch_size*] +# (optional) How many zones to receive NOTIFY on each run. +# Defaults to $::os_service_default +# +class designate::producer_task::zone_purge ( + $interval = $::os_service_default, + $per_page = $::os_service_default, + $time_threshold = $::os_service_default, + $batch_size = $::os_service_default, +) { + + include designate::deps + + designate_config { + 'producer_task:zone_purge/interval': value => $interval; + 'producer_task:zone_purge/per_page': value => $per_page; + 'producer_task:zone_purge/time_threshold': value => $time_threshold; + 'producer_task:zone_purge/batch_size': value => $batch_size; + } +} diff --git a/releasenotes/notes/producer_task-cdddb5df3a459fd7.yaml b/releasenotes/notes/producer_task-cdddb5df3a459fd7.yaml new file mode 100644 index 00000000..c7ffb405 --- /dev/null +++ b/releasenotes/notes/producer_task-cdddb5df3a459fd7.yaml @@ -0,0 +1,10 @@ +--- +features: + - | + The following classses have been added. + + - ``designate::producer_task::delayed_notify`` + - ``designate::producer_task::periodic_exists`` + - ``designate::producer_task::periodic_secondary_refresh`` + - ``designate::producer_task::worker_periodic_recovery`` + - ``designate::producer_task::zone_purge`` diff --git a/spec/classes/designate_producer_task_delayed_notify_spec.rb b/spec/classes/designate_producer_task_delayed_notify_spec.rb new file mode 100644 index 00000000..04ad525c --- /dev/null +++ b/spec/classes/designate_producer_task_delayed_notify_spec.rb @@ -0,0 +1,45 @@ +# +# Unit tests for designate::producer_task::delayed_notify +# +require 'spec_helper' + + +describe 'designate::producer_task::delayed_notify' do + + shared_examples 'designate::producer_task::delayed_notify' do + context 'with default parameters' do + it 'configures the defaut values' do + is_expected.to contain_designate_config('producer_task:delayed_notify/interval').with_value('') + is_expected.to contain_designate_config('producer_task:delayed_notify/per_page').with_value('') + is_expected.to contain_designate_config('producer_task:delayed_notify/batch_size').with_value('') + end + end + + context 'with parameters set' do + let :params do + { + :interval => 5, + :per_page => 100, + :batch_size => 101, + } + end + it 'configures the overridden values' do + is_expected.to contain_designate_config('producer_task:delayed_notify/interval').with_value(5) + is_expected.to contain_designate_config('producer_task:delayed_notify/per_page').with_value(100) + is_expected.to contain_designate_config('producer_task:delayed_notify/batch_size').with_value(101) + 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 'designate::producer_task::delayed_notify' + end + end +end diff --git a/spec/classes/designate_producer_task_periodic_exists_spec.rb b/spec/classes/designate_producer_task_periodic_exists_spec.rb new file mode 100644 index 00000000..97aeacf1 --- /dev/null +++ b/spec/classes/designate_producer_task_periodic_exists_spec.rb @@ -0,0 +1,42 @@ +# +# Unit tests for designate::producer_task::periodic_exists +# +require 'spec_helper' + + +describe 'designate::producer_task::periodic_exists' do + + shared_examples 'designate::producer_task::periodic_exists' do + context 'with default parameters' do + it 'configures the defaut values' do + is_expected.to contain_designate_config('producer_task:periodic_exists/interval').with_value('') + is_expected.to contain_designate_config('producer_task:periodic_exists/per_page').with_value('') + end + end + + context 'with parameters set' do + let :params do + { + :interval => 3600, + :per_page => 100, + } + end + it 'configures the overridden values' do + is_expected.to contain_designate_config('producer_task:periodic_exists/interval').with_value(3600) + is_expected.to contain_designate_config('producer_task:periodic_exists/per_page').with_value(100) + 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 'designate::producer_task::periodic_exists' + end + end +end diff --git a/spec/classes/designate_producer_task_periodic_secondary_refresh_spec.rb b/spec/classes/designate_producer_task_periodic_secondary_refresh_spec.rb new file mode 100644 index 00000000..a3ce5cec --- /dev/null +++ b/spec/classes/designate_producer_task_periodic_secondary_refresh_spec.rb @@ -0,0 +1,42 @@ +# +# Unit tests for designate::producer_task::periodic_secondary_refresh +# +require 'spec_helper' + + +describe 'designate::producer_task::periodic_secondary_refresh' do + + shared_examples 'designate::producer_task::periodic_secondary_refresh' do + context 'with default parameters' do + it 'configures the defaut values' do + is_expected.to contain_designate_config('producer_task:periodic_secondary_refresh/interval').with_value('') + is_expected.to contain_designate_config('producer_task:periodic_secondary_refresh/per_page').with_value('') + end + end + + context 'with parameters set' do + let :params do + { + :interval => 3600, + :per_page => 100, + } + end + it 'configures the overridden values' do + is_expected.to contain_designate_config('producer_task:periodic_secondary_refresh/interval').with_value(3600) + is_expected.to contain_designate_config('producer_task:periodic_secondary_refresh/per_page').with_value(100) + 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 'designate::producer_task::periodic_secondary_refresh' + end + end +end diff --git a/spec/classes/designate_producer_task_worker_periodic_recovery_spec.rb b/spec/classes/designate_producer_task_worker_periodic_recovery_spec.rb new file mode 100644 index 00000000..91e3592d --- /dev/null +++ b/spec/classes/designate_producer_task_worker_periodic_recovery_spec.rb @@ -0,0 +1,42 @@ +# +# Unit tests for designate::producer_task::worker_periodic_recovery +# +require 'spec_helper' + + +describe 'designate::producer_task::worker_periodic_recovery' do + + shared_examples 'designate::producer_task::worker_periodic_recovery' do + context 'with default parameters' do + it 'configures the defaut values' do + is_expected.to contain_designate_config('producer_task:worker_periodic_recovery/interval').with_value('') + is_expected.to contain_designate_config('producer_task:worker_periodic_recovery/per_page').with_value('') + end + end + + context 'with parameters set' do + let :params do + { + :interval => 100, + :per_page => 120, + } + end + it 'configures the overridden values' do + is_expected.to contain_designate_config('producer_task:worker_periodic_recovery/interval').with_value(100) + is_expected.to contain_designate_config('producer_task:worker_periodic_recovery/per_page').with_value(120) + 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 'designate::producer_task::worker_periodic_recovery' + end + end +end diff --git a/spec/classes/designate_producer_task_zone_purge_spec.rb b/spec/classes/designate_producer_task_zone_purge_spec.rb new file mode 100644 index 00000000..d734769a --- /dev/null +++ b/spec/classes/designate_producer_task_zone_purge_spec.rb @@ -0,0 +1,48 @@ +# +# Unit tests for designate::producer_task::zone_purge +# +require 'spec_helper' + + +describe 'designate::producer_task::zone_purge' do + + shared_examples 'designate::producer_task::zone_purge' do + context 'with default parameters' do + it 'configures the defaut values' do + is_expected.to contain_designate_config('producer_task:zone_purge/interval').with_value('') + is_expected.to contain_designate_config('producer_task:zone_purge/per_page').with_value('') + is_expected.to contain_designate_config('producer_task:zone_purge/time_threshold').with_value('') + is_expected.to contain_designate_config('producer_task:zone_purge/batch_size').with_value('') + end + end + + context 'with parameters set' do + let :params do + { + :interval => 3600, + :per_page => 100, + :time_threshold => 604800, + :batch_size => 101, + } + end + it 'configures the overridden values' do + is_expected.to contain_designate_config('producer_task:zone_purge/interval').with_value(3600) + is_expected.to contain_designate_config('producer_task:zone_purge/per_page').with_value(100) + is_expected.to contain_designate_config('producer_task:zone_purge/time_threshold').with_value(604800) + is_expected.to contain_designate_config('producer_task:zone_purge/batch_size').with_value(101) + 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 'designate::producer_task::zone_purge' + end + end +end