Add zaqar::server_instance class.

This class manages N instances of zaqar-server each using an
alternate /etc/zaqar/n.conf file to control select service
settings which take priority over settings in /etc/zaqar/zaqar.conf.

The primary use case for this class would be to enable websockets
alongside of wsgi. The only way to do this with Zaqar today is
to run multiple processes.

Change-Id: Ib730206ece73efe57aca7df4a65c906e95cdd606
This commit is contained in:
Dan Prince 2016-02-11 19:56:01 -05:00
parent ecadc5930d
commit e9b736c8eb
3 changed files with 71 additions and 0 deletions

View File

@ -0,0 +1,43 @@
# = Class: zaqar::server_instance
#
# This class manages N instances of zaqar-server each using an
# alternate /etc/zaqar/n.conf file to control select service
# settings which take priority over settings in /etc/zaqar/zaqar.conf.
#
# [*transport*]
# Set to either 'wsgi' or 'websocket'. Required.
#
# [*enabled*]
# (Optional) Service enable state for zaqar-server.
# Defaults to true
#
define zaqar::server_instance(
$transport,
$enabled = true,
) {
if $enabled {
$service_ensure = 'running'
} else {
$service_ensure = 'stopped'
}
file { "/etc/zaqar/${name}.conf":
ensure => file,
content => template('zaqar/zaqar.conf.erb'),
}
include ::zaqar
include ::zaqar::params
service { "openstack-zaqar@${name}":
ensure => $service_ensure,
enable => $enabled,
}
Package[$::zaqar::params::package_name] ~> Service["${::zaqar::params::service_name}@${name}"]
Package[$::zaqar::params::package_name] ~> File["/etc/zaqar/${name}.conf"]
File["/etc/zaqar/${name}.conf"] ~> Service["${::zaqar::params::service_name}@${name}"]
Zaqar_config<||> ~> Service["${::zaqar::params::service_name}@${name}"]
}

View File

@ -0,0 +1,26 @@
require 'spec_helper'
describe 'zaqar' do
let :pre_condition do
"zaqar::server_instance{ '1': transport => 'websocket' }"
end
let :facts do
{ :osfamily => 'RedHat' }
end
let :params do
{ :admin_password => 'foo' }
end
describe 'with a websocket server instance 1' do
it { is_expected.to contain_service('openstack-zaqar@1').with(
:ensure => 'running',
:enable => true
)}
it {is_expected.to contain_file('/etc/zaqar/1.conf') }
end
end

2
templates/zaqar.conf.erb Normal file
View File

@ -0,0 +1,2 @@
[drivers]
transport=<%= @transport %>