From 8fad53f97408fb39081755729b5d4390fc284b9f Mon Sep 17 00:00:00 2001 From: Thomas Herve Date: Wed, 8 Nov 2017 10:32:36 +0100 Subject: [PATCH] Add support for producer service Designate now uses a service called producer in the more recent architecture. Change-Id: I1c9ed575b70611209299ed50c6ec80ed6d11da7e --- manifests/params.pp | 3 ++ manifests/producer.pp | 58 ++++++++++++++++++++ spec/classes/designate_producer_spec.rb | 72 +++++++++++++++++++++++++ 3 files changed, 133 insertions(+) create mode 100644 manifests/producer.pp create mode 100644 spec/classes/designate_producer_spec.rb diff --git a/manifests/params.pp b/manifests/params.pp index 2e9ddc7d..ec0a14f7 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -15,6 +15,7 @@ class designate::params { $mdns_service_name = 'designate-mdns' $pool_manager_service_name = 'designate-pool-manager' $zone_manager_service_name = 'designate-zone-manager' + $producer_service_name = 'designate-producer' case $::osfamily { 'RedHat': { @@ -28,6 +29,7 @@ class designate::params { $mdns_package_name = 'openstack-designate-mdns' $pool_manager_package_name = 'openstack-designate-pool-manager' $zone_manager_package_name = 'openstack-designate-zone-manager' + $producer_package_name = 'openstack-designate-producer' } 'Debian': { # package name @@ -40,6 +42,7 @@ class designate::params { $pool_manager_package_name = 'designate-pool-manager' $mdns_package_name = 'designate-mdns' $zone_manager_package_name = 'designate-zone-manager' + $producer_package_name = 'designate-producer' } default: { fail("Unsupported osfamily: ${::osfamily} operatingsystem") diff --git a/manifests/producer.pp b/manifests/producer.pp new file mode 100644 index 00000000..591bb545 --- /dev/null +++ b/manifests/producer.pp @@ -0,0 +1,58 @@ +# == Class designate::producer +# +# Configure designate producer service +# +# == Parameters +# +# [*package_ensure*] +# (optional) The state of the package +# Defaults to 'present' +# +# [*package_name*] +# (optional) Name of the package +# Defaults to producer_package_name from ::designate::params +# +# [*enabled*] +# (optional) Whether to enable the service. +# Defaults to true +# +# [*service_ensure*] +# (optional) Whether the designate producer service will be running. +# Defaults to 'running' +# +# [*workers*] +# (optional) Number of workers to spawn. +# Defaults to $::os_workers. +# +# [*threads*] +# (optional) Number of greenthreads to spawn +# Defaults to $::os_service_default. +# +# [*enabled_tasks*] +# (optional) List of tasks to enable, the default enables all tasks. +# Defaults to $::os_service_default. +# +class designate::producer ( + $package_ensure = 'present', + $package_name = $::designate::params::producer_package_name, + $enabled = true, + $service_ensure = running, + $workers = $::os_workers, + $threads = $::os_service_default, + $enabled_tasks = $::os_service_default, + ) inherits designate { + + designate_config { + 'service:producer/workers' : value => $workers; + 'service:producer/threads' : value => $threads; + 'service:producer/enabled_tasks' : value => $enabled_tasks; + } + + designate::generic_service { 'producer': + package_ensure => $package_ensure, + enabled => $enabled, + package_name => $package_name, + manage_service => $service_ensure, + service_name => $::designate::params::producer_service_name, + } +} diff --git a/spec/classes/designate_producer_spec.rb b/spec/classes/designate_producer_spec.rb new file mode 100644 index 00000000..e9682fd7 --- /dev/null +++ b/spec/classes/designate_producer_spec.rb @@ -0,0 +1,72 @@ +# +# Unit tests for designate::producer +# +require 'spec_helper' + + +describe 'designate::producer' do + let :params do + { + } + end + let :designate_producer_params do + { + :workers => '3', + :threads => '3000', + :enabled_tasks => ['domain_purge','periodic_secondary_refresh'], + } + end + + + shared_examples 'designate-producer' do + context 'with default parameters' do + it 'installs designate-producer package and service' do + is_expected.to contain_package('designate-producer').with( + :name => platform_params[:producer_package_name], + :ensure => 'present', + :tag => ['openstack','designate-package'], + ) + is_expected.to contain_service('designate-producer').with( + :name => 'designate-producer', + :ensure => 'running', + :tag => ['openstack','designate-service'], + ) + end + + it 'configures designate producer with default config options' do + is_expected.to contain_designate_config("service:producer/workers").with(:value => 8) + is_expected.to contain_designate_config("service:producer/threads").with(:value => '') + is_expected.to contain_designate_config("service:producer/enabled_tasks").with(:value => '') + end + end + + context 'with non default parameters' do + before { params.merge!( designate_producer_params ) } + it 'configures desginate produce with non default parameters' do + is_expected.to contain_designate_config("service:producer/workers").with(:value => '3') + is_expected.to contain_designate_config("service:producer/threads").with(:value => '3000') + is_expected.to contain_designate_config("service:producer/enabled_tasks").with(:value => ['domain_purge','periodic_secondary_refresh']) + 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({ :os_workers => 8 })) + end + + let(:platform_params) do + case facts[:osfamily] + when 'Debian' + { :producer_package_name => 'designate-producer' } + when 'RedHat' + { :producer_package_name => 'openstack-designate-producer' } + end + end + it_configures 'designate-producer' + end + end +end