Merge "Add designate::mdns class"

This commit is contained in:
Jenkins 2016-02-01 08:27:38 +00:00 committed by Gerrit Code Review
commit c2220c928b
3 changed files with 180 additions and 0 deletions

94
manifests/mdns.pp Normal file
View File

@ -0,0 +1,94 @@
# == Class designate::mdns
#
# Configure designate Mini DNS service
#
# === Parameters:
#
# [*package_ensure*]
# (Optional) The state of the package.
# Defaults to 'present'.
#
# [*mdns_package_name*]
# (Optional) Name of the package containing mdns resources.
# Defaults to mdns_package_name from designate::params.
#
# [*enabled*]
# (Optional) Whether to enable services.
# Defaults to true.
#
# [*manage_service*]
# (Optional) Whether the designate mdns service will be running.
# Defaults to 'running'.
#
# [*workers*]
# (Optional) Number of mdns worker processes to spawn.
# Defaults to $::os_service_default.
#
# [*threads*]
# (Optional) Number of mdns greenthreads to spawn.
# Defaults to $::os_service_default.
#
# [*host*]
# (Optional) mDNS Bind Host.
# Defaults to $::os_service_default.
#
# [*port*]
# (Optional) mDNS Port Number.
# Defaults to $::os_service_default.
#
# [*tcp_backlog*]
# (Optional) mDNS TCP Backlog.
# Defaults to $::os_service_default.
#
# [*tcp_recv_timeout*]
# (Optional) mDNS TCP Receive Timeout.
# Defaults to $::os_service_default.
#
# [*query_enforce_tsig*]
# (Optional) Enforce all incoming queries (including AXFR) are TSIG signed.
# Defaults to $::os_service_default.
#
# [*storage_driver*]
# (Optional) The storage driver to use.
# Defaults to $::os_service_default.
#
# [*max_message_size*]
# (Optional) Maximum message size to emit.
# Defaults to $::os_service_default.
#
class designate::mdns (
$package_ensure = present,
$mdns_package_name = $::designate::params::mdns_package_name,
$enabled = true,
$manage_service = 'running',
$workers = $::os_service_default,
$threads = $::os_service_default,
$host = $::os_service_default,
$port = $::os_service_default,
$tcp_backlog = $::os_service_default,
$tcp_recv_timeout = $::os_service_default,
$query_enforce_tsig = $::os_service_default,
$storage_driver = $::os_service_default,
$max_message_size = $::os_service_default
) inherits designate {
designate_config {
'service:mdns/workers' : value => $workers;
'service:mdns/threads' : value => $threads;
'service:mdns/host' : value => $host;
'service:mdns/port' : value => $port;
'service:mdns/tcp_backlog' : value => $tcp_backlog;
'service:mdns/tcp_recv_timeout' : value => $tcp_recv_timeout;
'service:mdns/query_enforce_tsig' : value => $query_enforce_tsig;
'service:mdns/storage_driver' : value => $storage_driver;
'service:mdns/max_message_size' : value => $max_message_size;
}
designate::generic_service { 'mdns':
enabled => $enabled,
manage_service => $manage_service,
ensure_package => $package_ensure,
package_name => $mdns_package_name,
service_name => $::designate::params::mdns_service_name,
}
}

View File

@ -17,12 +17,14 @@ class designate::params {
$central_package_name = 'openstack-designate-central'
$agent_package_name = 'openstack-designate-agent'
$sink_package_name = 'openstack-designate-sink'
$mdns_package_name = 'openstack-designate-mdns'
# service names
$agent_service_name = 'openstack-designate-agent'
$api_service_name = 'openstack-designate-api'
$central_service_name = 'openstack-designate-central'
$sink_service_name = 'openstack-designate-sink'
$pymysql_package_name = undef
$mdns_service_name = 'openstack-designate-mdns'
}
'Debian': {
# package name
@ -31,12 +33,14 @@ class designate::params {
$central_package_name = 'designate-central'
$agent_package_name = 'designate-agent'
$sink_package_name = 'designate-sink'
$mdns_package_name = 'designate-mdns'
# service names
$agent_service_name = 'designate-agent'
$api_service_name = 'designate-api'
$central_service_name = 'designate-central'
$sink_service_name = 'designate-sink'
$pymysql_package_name = 'python-pymysql'
$mdns_service_name = 'designate-mdns'
}
default: {
fail("Unsupported osfamily: ${::osfamily} operatingsystem")

View File

@ -0,0 +1,82 @@
#
# Unit tests for designate::mdns
#
require 'spec_helper'
describe 'designate::mdns' do
let :params do
{ :enabled => true }
end
shared_examples 'designate-mdns' do
context 'with default parameters' do
it 'installs designate-mdns package and service' do
is_expected.to contain_service('designate-mdns').with(
:name => platform_params[:mdns_service_name],
:ensure => 'running',
:enable => 'true',
:tag => ['openstack', 'designate-service'],
)
is_expected.to contain_package('designate-mdns').with(
:name => platform_params[:mdns_package_name],
:ensure => 'present',
:tag => ['openstack', 'designate-package'],
)
end
it 'configures designate-mdns with default parameters' do
is_expected.to contain_designate_config('service:mdns/workers').with_value('<SERVICE DEFAULT>')
is_expected.to contain_designate_config('service:mdns/threads').with_value('<SERVICE DEFAULT>')
is_expected.to contain_designate_config('service:mdns/host').with_value('<SERVICE DEFAULT>')
is_expected.to contain_designate_config('service:mdns/port').with_value('<SERVICE DEFAULT>')
is_expected.to contain_designate_config('service:mdns/tcp_backlog').with_value('<SERVICE DEFAULT>')
is_expected.to contain_designate_config('service:mdns/tcp_recv_timeout').with_value('<SERVICE DEFAULT>')
is_expected.to contain_designate_config('service:mdns/query_enforce_tsig').with_value('<SERVICE DEFAULT>')
is_expected.to contain_designate_config('service:mdns/storage_driver').with_value('<SERVICE DEFAULT>')
is_expected.to contain_designate_config('service:mdns/max_message_size').with_value('<SERVICE DEFAULT>')
end
context 'when using custom options' do
before { params.merge!(:workers => '2',
:query_enforce_tsig => 'true',
:tcp_backlog => '200',
:max_message_size => '1000'
)}
it 'configures designate-mdns with custom options ' do
is_expected.to contain_designate_config('service:mdns/workers').with_value('2')
is_expected.to contain_designate_config('service:mdns/query_enforce_tsig').with_value(true)
is_expected.to contain_designate_config('service:mdns/tcp_backlog').with_value('200')
is_expected.to contain_designate_config('service:mdns/max_message_size').with_value('1000')
end
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'
{
:mdns_package_name => 'designate-mdns',
:mdns_service_name => 'designate-mdns'
}
when 'RedHat'
{
:mdns_package_name => 'openstack-designate-mdns',
:mdns_service_name => 'openstack-designate-mdns'
}
end
end
it_behaves_like 'designate-mdns'
end
end
end