Update router_worker_threads to os_workers

This patch:
* re-factors install
* configures params based on osfamily
* Adds tests to ensure config updates
* Updates template for change in conf schema
* Adds ssl profile to the configuration

Change-Id: I92f466b46da11d8e087e6d6d9532326fce33e47c
This commit is contained in:
Andrew Smith 2016-12-20 12:09:11 -05:00
parent 68a0e44e80
commit df0e57b4d6
7 changed files with 224 additions and 117 deletions

View File

@ -5,9 +5,9 @@
class qdr::config inherits qdr {
$service_config_path = $::qdr::params::service_config_path
$service_config_template = $::qdr::params::service_config_template
$service_home = $::qdr::params::service_home
$log_output = $::qdr::log_output
$service_config_template = 'qdr/qdrouterd.conf.erb'
file { $service_home :
ensure => directory,
@ -23,6 +23,13 @@ class qdr::config inherits qdr {
mode => '0644',
}
file { '/etc/qpid-dispatch/ssl' :
ensure => directory,
owner => '0',
group => '0',
mode => '0644',
}
file { 'qdrouterd.conf' :
ensure => file,
path => $service_config_path,
@ -40,5 +47,4 @@ class qdr::config inherits qdr {
mode => '0666',
}
# TODO(ansmith) - is there need for service conf files, etc.
}

View File

@ -160,10 +160,9 @@ class qdr(
$router_remote_ls_max_age = '60',
$router_sasl_name = 'qdrouterd',
$router_sasl_path = '/etc/sasl2',
$router_worker_threads = $::processorcount ,
$router_worker_threads = $::os_workers,
) inherits qdr::params {
validate_string($router_worker_threads)
validate_absolute_path($router_debug_dump)
validate_absolute_path($router_sasl_path)
validate_string($router_sasl_name)
@ -174,8 +173,21 @@ class qdr(
validate_re($listener_auth_peer,'^(yes$|no$)')
validate_string($listener_sasl_mech)
class { '::qdr::install': } ->
class { '::qdr::config': } ~>
class { '::qdr::service': }
# TODO (ansmith) - manage repo via openstack-extras
# if $::operatingsystem == 'Ubuntu' {
# include ::apt
#
# Class['apt::update'] -> Package<| provider == 'apt' |>
#
# apt::ppa { 'ppa:qpid/testing' : }
# }
include ::qdr::install
include ::qdr::config
include ::qdr::service
Class['::qdr::install'] ->
Class['::qdr::config'] ->
Class['::qdr::service']
}

View File

@ -1,21 +1,36 @@
# == Class qdr::install
#
# This class is called from qdr for qdrouterd service installation
class qdr::install inherits qdr {
$ensure_package = $::qdr::ensure_package
$service_package_name = $::qdr::params::service_package_name
$package_provider = $::qdr::params::package_provider
$sasl_package_list = $::qdr::params::sasl_package_list
$tools_package_list = $::qdr::params::tools_package_list
if $::osfamily == 'Debian' {
include ::apt
Class['apt::update'] -> Package<| provider == 'apt' |>
apt::ppa { 'ppa:qpid/testing' : }
}
#
# === Parameters
#
# [*ensure_package*]
# (optional) The state of the qdr packages
# Defaults to $::qdr::ensure_package
#
# [*service_package_name*]
# (optional) The service package name for osfamily
# Defaults to $::qdr::params::service_package_name
#
# [*package_provider*]
# (optional) The package repo application for osfamily
# Defaults to $::qdr::params::package_provider
#
# [*sasl_package_list*]
# (optional) The sasl package enumeration for osfamily
# Defaults to $::qdr::params::sasl_package_list
#
# [*tools_package_list*]
# (optional) The qdr tools package enumeration for osfamily
# Defaults to $::qdr::params::tools_package_list
#
class qdr::install (
$ensure_package = $::qdr::ensure_package,
$service_package_name = $::qdr::params::service_package_name,
$package_provider = $::qdr::params::package_provider,
$sasl_package_list = $::qdr::params::sasl_package_list,
$tools_package_list = $::qdr::params::tools_package_list,
) inherits qdr {
package { $sasl_package_list :
ensure => $ensure_package,

View File

@ -3,25 +3,35 @@
# The Qpid Dispatch Router Module configuration settings
#
class qdr::params {
$service_package_name = 'qpid-dispatch-router'
$service_name = 'qdrouterd'
$package_provider = 'yum'
$service_user = 'qdrouterd'
$service_group = 'qdrouterd'
$service_home = '/var/lib/qdrouterd'
$service_version = '0.6.0'
$sasl_package_list = [ 'cyrus-sasl-lib', 'cyrus-sasl-plain' ]
$tools_package_list = [ 'qpid-dispatch-tools' ]
if $::osfamily == 'Debian' {
case $::osfamily {
'Debian': {
$service_package_name = 'qdrouterd'
$service_name = 'qdrouterd'
$service_config_path = '/etc/qpid-dispatch/qdrouterd.conf'
$package_provider = 'apt'
$service_user = 'qdrouterd'
$service_group = 'qdrouterd'
$service_home = '/var/lib/qdrouterd'
$service_version = '0.6.0'
$sasl_package_list = 'sasl2-bin'
$tools_package_list = [ 'qdmanage' , 'qdstat' ]
}
'RedHat': {
$service_package_name = 'qpid-dispatch-router'
$service_name = 'qdrouterd'
$service_config_path = '/etc/qpid-dispatch/qdrouterd.conf'
$package_provider = 'yum'
$service_user = 'qdrouterd'
$service_group = 'qdrouterd'
$service_home = '/var/lib/qdrouterd'
$service_version = '0.6.0'
$sasl_package_list = [ 'cyrus-sasl-lib', 'cyrus-sasl-plain' ]
$tools_package_list = [ 'qpid-dispatch-tools' ]
}
default: {
fail("Unsupported osfamily: ${::osfamily} operatingsystem")
}
}
#service and config attributes
$service_config_path = '/etc/qpid-dispatch/qdrouterd.conf'
$service_config_template = 'qdr/qdrouterd.conf.erb'
}

View File

@ -1,6 +1,6 @@
{
"name": "openstack-qdr",
"version": "0.1.0",
"version": "0.2.0",
"author": "OpenStack Contributors",
"summary": "Puppet OpenStack Extras Module",
"license": "Apache-2.0",

View File

@ -3,92 +3,151 @@ require 'spec_helper'
describe 'qdr' do
shared_examples 'qdr' do
it 'contains the install class' do
is_expected.to contain_class('qdr::install')
end
it 'contains the config class' do
is_expected.to contain_class('qdr::config')
end
it { is_expected.to contain_class('qdr') }
it { is_expected.to contain_class('qdr::params') }
it { is_expected.to contain_class('qdr::install') }
it { is_expected.to contain_class('qdr::config') }
it { is_expected.to contain_class('qdr::service') }
it 'contains the service class' do
is_expected.to contain_class('qdr::service')
end
it 'installs packages' do
is_expected.to contain_package(platform_params[:qdr_package_name]).with({ :ensure => :installed })
is_expected.to contain_package('cyrus-sasl-lib').with({ :ensure => :installed })
is_expected.to contain_package('cyrus-sasl-plain').with({ :ensure => :installed })
platform_params[:sasl_package_list].each do |p|
is_expected.to contain_package(p).with({ :ensure => :installed })
end
end
it do
should contain_file(platform_params[:service_home]).with({
:ensure => :directory,
:owner => '0',
:group => '0',
:mode => '0644',
})
end
it do
should contain_file('/etc/qpid-dispatch').with({
:ensure => :directory,
:owner => '0',
:group => '0',
:mode => '0644',
})
context 'with default parameters' do
it do
should contain_file(platform_params[:service_home]).with({
:ensure => :directory,
:owner => '0',
:group => '0',
:mode => '0644',
})
end
it do
should contain_file('/etc/qpid-dispatch').with({
:ensure => :directory,
:owner => '0',
:group => '0',
:mode => '0644',
})
end
it do
should contain_file('/etc/qpid-dispatch/ssl').with({
:ensure => :directory,
:owner => '0',
:group => '0',
:mode => '0644',
})
end
it do
should contain_file('qdrouterd.conf').with({
:ensure => :file,
:owner => '0',
:group => '0',
:mode => '0644',
})
end
it do
should contain_service(platform_params[:service_name]).with({
:ensure => 'running',
:enable => 'true',
})
end
it do
should contain_file('qdrouterd.conf').with_content(/mode: standalone/)
should contain_file('qdrouterd.conf').with_content(/workerThreads: 8/)
should contain_file('qdrouterd.conf').with_content(/host: 127.0.0.1/)
should contain_file('qdrouterd.conf').with_content(/port: 5672/)
should contain_file('qdrouterd.conf').with_content(/authenticatePeer: no/)
should contain_file('qdrouterd.conf').with_content(/saslMechanisms: ANONYMOUS/)
should contain_file('qdrouterd.conf').without_content(/sslProfile {/)
end
end
it do
should contain_file('qdrouterd.conf').with({
:ensure => :file,
:owner => '0',
:group => '0',
:mode => '0644',
})
context 'with overridden paramters' do
let :params do
{
:router_worker_threads => '4',
:listener_addr => '10.1.1.1',
:listener_port => '5671',
:listener_auth_peer => 'yes',
:listener_sasl_mech => 'ANONYMOUS DIGEST-MD5 EXTERNAL PLAIN'
}
end
it do
should contain_file('qdrouterd.conf').with_content(/workerThreads: 4/)
should contain_file('qdrouterd.conf').with_content(/host: 10.1.1.1/)
should contain_file('qdrouterd.conf').with_content(/port: 5671/)
should contain_file('qdrouterd.conf').with_content(/authenticatePeer: yes/)
should contain_file('qdrouterd.conf').with_content(/saslMechanisms: ANONYMOUS DIGEST-MD5 EXTERNAL PLAIN/)
end
end
it do
should contain_service(platform_params[:service_name]).with({
:ensure => 'running',
:enable => 'true',
})
context 'with qdr ssl enabled' do
let :params do
{
:listener_require_ssl => 'yes',
:listener_ssl_cert_db => '/etc/ssl/certs/ca-bundle.crt',
:listener_ssl_cert_file => '/etc/pki/ca-trust/source/anchors/puppet_qdr.pem',
:listener_ssl_key_file => '/etc/qpid-dispatch/ssl/puppet_qdr.pem',
}
end
it do
should contain_file('qdrouterd.conf').with_content(/sslProfile {/)
should contain_file('qdrouterd.conf').with_content(/certDb: \/etc\/ssl\/certs\/ca-bundle.crt/)
should contain_file('qdrouterd.conf').with_content(/certFile: \/etc\/pki\/ca-trust\/source\/anchors\/puppet_qdr.pem/)
should contain_file('qdrouterd.conf').with_content(/keyFile: \/etc\/qpid-dispatch\/ssl\/puppet_qdr.pem/)
should contain_file('qdrouterd.conf').with_content(/requireSsl: yes/)
end
end
end
# context 'on Debian platforms' do
#
# let :platform_params do
# { :qdr_package_name => 'qdrouterd',
# :sasl_package_list => [ 'sasl2-bin' ] }
# end
# it_behaves_like 'qdr'
# 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
# context 'on Ubuntu platforms' do
case facts[:osfamily]
when 'Debian'
let (:platform_params) do
{ :qdr_package_name => 'qdrouterd',
:service_name => 'qdrouterd',
:sasl_package_list => ['sasl2-bin'],
:service_home => '/var/lib/qdrouterd'}
end
when 'RedHat'
let (:platform_params) do
{ :qdr_package_name => 'qpid-dispatch-router',
:service_name => 'qdrouterd',
:sasl_package_list => ['cyrus-sasl-lib','cyrus-sasl-plain'],
:service_home => '/var/lib/qdrouterd'}
end
end
# let :platform_params do
# { :qdr_package_name => 'qdrouterd',
# :service_name =>
# :sasl_package_list => [ 'sasl2-bin' ] }
# :service_home =>
# end
# it_behaves_like 'qdr'
# end
it_behaves_like 'qdr'
context 'on RedHat platforms' do
let :platform_params do
{ :qdr_package_name => 'qpid-dispatch-router',
:service_name => 'qdrouterd',
:sasl_package_list => ['cyrus-sasl-lib','cyrus-sasl-plain'],
:service_home => '/var/lib/qdrouterd'}
end
it_behaves_like 'qdr'
end
end

View File

@ -29,17 +29,22 @@ router {
saslConfigName: <%= @router_sasl_name %>
}
# sslProfile {
# name: <%= @container_name %>
# certDb: <%= @listener_ssl_cert_db %>
# certFile: <%= @listener_ssl_cert_file %>
# keyFile: <%= @listener_ssl_key_file %>
#}
<%- if @listener_require_ssl == 'yes' -%>
sslProfile {
name: <%= @router_id %>
certDb: <%= @listener_ssl_cert_db %>
certFile: <%= @listener_ssl_cert_file %>
keyFile: <%= @listener_ssl_key_file %>
}
<%- end -%>
listener {
addr: <%= @listener_addr %>
host: <%= @listener_addr %>
port: <%= @listener_port %>
# sslProfile: <%= @container_name %>
<%- if @listener_require_ssl == 'yes' -%>
requireSsl: <%= @listener_require_ssl %>
sslProfile: <%= @router_id %>
<%- end -%>
authenticatePeer: <%= @listener_auth_peer %>
saslMechanisms: <%= @listener_sasl_mech %>
}