From e9b736c8eb5d6949a26e8c4b9061df86b35a9566 Mon Sep 17 00:00:00 2001 From: Dan Prince Date: Thu, 11 Feb 2016 19:56:01 -0500 Subject: [PATCH] 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 --- manifests/server_instance.pp | 43 ++++++++++++++++++++++ spec/classes/zaqar_server_instance_spec.rb | 26 +++++++++++++ templates/zaqar.conf.erb | 2 + 3 files changed, 71 insertions(+) create mode 100644 manifests/server_instance.pp create mode 100644 spec/classes/zaqar_server_instance_spec.rb create mode 100644 templates/zaqar.conf.erb diff --git a/manifests/server_instance.pp b/manifests/server_instance.pp new file mode 100644 index 0000000..4ec6c6f --- /dev/null +++ b/manifests/server_instance.pp @@ -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}"] + +} diff --git a/spec/classes/zaqar_server_instance_spec.rb b/spec/classes/zaqar_server_instance_spec.rb new file mode 100644 index 0000000..b833304 --- /dev/null +++ b/spec/classes/zaqar_server_instance_spec.rb @@ -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 diff --git a/templates/zaqar.conf.erb b/templates/zaqar.conf.erb new file mode 100644 index 0000000..8462006 --- /dev/null +++ b/templates/zaqar.conf.erb @@ -0,0 +1,2 @@ +[drivers] +transport=<%= @transport %>