Merge "Add support for worker service"

This commit is contained in:
Zuul 2017-11-27 18:53:14 +00:00 committed by Gerrit Code Review
commit 71a4c5cc89
3 changed files with 245 additions and 0 deletions

View File

@ -16,6 +16,7 @@ class designate::params {
$pool_manager_service_name = 'designate-pool-manager'
$zone_manager_service_name = 'designate-zone-manager'
$producer_service_name = 'designate-producer'
$worker_service_name = 'designate-worker'
case $::osfamily {
'RedHat': {
@ -30,6 +31,7 @@ class designate::params {
$pool_manager_package_name = 'openstack-designate-pool-manager'
$zone_manager_package_name = 'openstack-designate-zone-manager'
$producer_package_name = 'openstack-designate-producer'
$worker_package_name = 'openstack-designate-worker'
}
'Debian': {
# package name
@ -43,6 +45,7 @@ class designate::params {
$mdns_package_name = 'designate-mdns'
$zone_manager_package_name = 'designate-zone-manager'
$producer_package_name = 'designate-producer'
$worker_package_name = 'designate-worker'
}
default: {
fail("Unsupported osfamily: ${::osfamily} operatingsystem")

118
manifests/worker.pp Normal file
View File

@ -0,0 +1,118 @@
# == Class: designate::worker
#
# Configure designate worker service
#
# == Parameters
#
# [*package_ensure*]
# (optional) The state of the package
# Defaults to 'present'
#
# [*manage_package*]
# Whether Puppet should manage the package. Default is true.
#
# [*worker_package_name*]
# (optional) Name of the package containing worker
# resources. Defaults to worker_package_name from
# designate::params
#
# [*enabled*]
# (optional) Whether to enable services.
# Defaults to true
#
# [*service_ensure*]
# (optional) Whether the designate worker service will
# be running.
# Defaults to 'running'
#
# [*workers*]
# (optional) Number of worker processes.
# Defaults to $::os_service_default
#
# [*threads*]
# (optional) Number of Pool Manager greenthreads to spawn
# Defaults to $::os_service_default
#
# [*threshold_percentage*]
# (optional) Threshold percentage.
# Defaults to $::os_service_default
#
# [*poll_timeout*]
# (optional) Poll timeout.
# Defaults to $::os_service_default
#
# [*poll_retry_interval*]
# (optional) Poll retry interval.
# Defaults to $::os_service_default
#
# [*poll_max_retries*]
# (optional) Poll max retries.
# Defaults to $::os_service_default
#
# [*poll_delay*]
# (optional) Poll delay.
# Defaults to $::os_service_default
#
# [*worker_notify*]
# (optional) Whether to allow worker to send NOTIFYs.
# Defaults to $::os_service_default
#
# [*export_synchronous*]
# (optional) Whether to allow synchronous zone exports.
# Defaults to $::os_service_default
#
# [*worker_topic*]
# (optional) RPC topic for worker component.
# Defaults to $::os_service_default
#
class designate::worker(
$manage_package = true,
$package_ensure = present,
$worker_package_name = undef,
$enabled = true,
$service_ensure = 'running',
$workers = $::os_service_default,
$threads = $::os_service_default,
$threshold_percentage = $::os_service_default,
$poll_timeout = $::os_service_default,
$poll_retry_interval = $::os_service_default,
$poll_max_retries = $::os_service_default,
$poll_delay = $::os_service_default,
$worker_notify = $::os_service_default,
$export_synchronous = $::os_service_default,
$worker_topic = $::os_service_default,
) {
include ::designate::deps
include ::designate::params
if $manage_package {
package { 'designate-worker':
ensure => $package_ensure,
name => pick($worker_package_name, $::designate::params::worker_package_name),
tag => ['openstack', 'designate-package'],
}
}
service { 'designate-worker':
ensure => $service_ensure,
name => $::designate::params::worker_service_name,
enable => $enabled,
hasstatus => true,
hasrestart => true,
tag => ['openstack', 'designate-service'],
}
designate_config {
'service:worker/workers': value => $workers;
'service:worker/threads': value => $threads;
'service:worker/threshold_percentage': value => $threshold_percentage;
'service:worker/poll_timeout': value => $poll_timeout;
'service:worker/poll_retry_interval': value => $poll_retry_interval;
'service:worker/poll_max_retries': value => $poll_max_retries;
'service:worker/poll_delay': value => $poll_delay;
'service:worker/notify': value => $worker_notify;
'service:worker/export_synchronous': value => $export_synchronous;
'service:worker/worker_topic': value => $worker_topic;
}
}

View File

@ -0,0 +1,124 @@
#
# Unit tests for designate::worker
#
require 'spec_helper'
describe 'designate::worker' do
let :params do
{
}
end
let :params_all do
{
:manage_package => true,
:package_ensure => 'present',
:worker_package_name => nil,
:enabled => true,
:service_ensure => 'running',
:workers => 10,
:threads => 900,
:threshold_percentage => 90,
:poll_timeout => 15,
:poll_retry_interval => 10,
:poll_max_retries => 5,
:poll_delay => 1,
:worker_notify => true,
:export_synchronous => true,
:worker_topic => 'topic',
}
end
shared_examples 'designate-worker' do
context 'with default parameters' do
it { is_expected.to contain_class('designate::worker') }
it 'installs designate-worker package and service' do
is_expected.to contain_service('designate-worker').with(
:name => platform_params[:worker_service_name],
:ensure => 'running',
:enable => 'true',
:tag => ['openstack', 'designate-service'],
)
is_expected.to contain_package('designate-worker').with(
:name => platform_params[:worker_package_name],
:ensure => 'present',
:tag => ['openstack', 'designate-package'],
)
end
it 'configures designate-worker with default parameters' do
is_expected.to contain_designate_config('service:worker/workers').with_value( '<SERVICE DEFAULT>' )
is_expected.to contain_designate_config('service:worker/threads').with_value( '<SERVICE DEFAULT>' )
is_expected.to contain_designate_config('service:worker/threshold_percentage').with_value( '<SERVICE DEFAULT>' )
is_expected.to contain_designate_config('service:worker/poll_timeout').with_value( '<SERVICE DEFAULT>' )
is_expected.to contain_designate_config('service:worker/poll_retry_interval').with_value( '<SERVICE DEFAULT>' )
is_expected.to contain_designate_config('service:worker/poll_max_retries').with_value( '<SERVICE DEFAULT>' )
is_expected.to contain_designate_config('service:worker/poll_delay').with_value( '<SERVICE DEFAULT>' )
is_expected.to contain_designate_config('service:worker/notify').with_value( '<SERVICE DEFAULT>' )
is_expected.to contain_designate_config('service:worker/export_synchronous').with_value( '<SERVICE DEFAULT>' )
is_expected.to contain_designate_config('service:worker/worker_topic').with_value( '<SERVICE DEFAULT>' )
end
end
context 'with custom package name' do
before do
params.merge!({ :worker_package_name => 'designate-worker-custom-name' })
end
it 'configures using custom name' do
is_expected.to contain_package('designate-worker').with(
:name => 'designate-worker-custom-name',
:ensure => 'present',
:tag => ['openstack', 'designate-package'],
)
end
end
context 'with all params' do
before do
params.merge!( params_all )
end
it 'configures designate-worker with all parameters' do
is_expected.to contain_designate_config('service:worker/workers').with_value( params[:workers] )
is_expected.to contain_designate_config('service:worker/threads').with_value( params[:threads] )
is_expected.to contain_designate_config('service:worker/threshold_percentage').with_value( params[:threshold_percentage] )
is_expected.to contain_designate_config('service:worker/poll_timeout').with_value( params[:poll_timeout] )
is_expected.to contain_designate_config('service:worker/poll_retry_interval').with_value( params[:poll_retry_interval] )
is_expected.to contain_designate_config('service:worker/poll_max_retries').with_value( params[:poll_max_retries] )
is_expected.to contain_designate_config('service:worker/poll_delay').with_value( params[:poll_delay] )
is_expected.to contain_designate_config('service:worker/notify').with_value( params[:worker_notify] )
is_expected.to contain_designate_config('service:worker/export_synchronous').with_value( params[:export_synchronous] )
is_expected.to contain_designate_config('service:worker/worker_topic').with_value( params[:worker_topic] )
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
let(:platform_params) do
case facts[:osfamily]
when 'Debian'
{
:worker_package_name => 'designate-worker',
:worker_service_name => 'designate-worker'
}
when 'RedHat'
{
:worker_package_name => 'openstack-designate-worker',
:worker_service_name => 'designate-worker'
}
end
end
it_behaves_like 'designate-worker'
end
end
end