Implement Listener service

* Manifest
* Unit tests
* Acceptance tests
* Example manifest

Change-Id: Ib4a65547fee27f1d7dedf0c508ef544a5347b2e6
This commit is contained in:
Emilien Macchi 2015-10-20 13:45:17 -04:00
parent 6e30e9f410
commit 42c34763bb
4 changed files with 148 additions and 0 deletions

View File

@ -14,4 +14,5 @@ class { '::aodh::auth':
}
class { '::aodh::evaluator': }
class { '::aodh::notifier': }
class { '::aodh::listener': }
class { '::aodh::client': }

48
manifests/listener.pp Normal file
View File

@ -0,0 +1,48 @@
# Installs the aodh listener service
#
# == Params
# [*enabled*]
# (optional) Should the service be enabled.
# Defaults to true.
#
# [*manage_service*]
# (optional) Whether the service should be managed by Puppet.
# Defaults to true.
#
# [*package_ensure*]
# (optional) ensure state for package.
# Defaults to 'present'
#
class aodh::listener (
$manage_service = true,
$enabled = true,
$package_ensure = 'present',
) {
include ::aodh::params
Aodh_config<||> ~> Service['aodh-listener']
Package[$::aodh::params::listener_package_name] -> Service['aodh-listener']
ensure_resource( 'package', [$::aodh::params::listener_package_name],
{ ensure => $package_ensure }
)
if $manage_service {
if $enabled {
$service_ensure = 'running'
} else {
$service_ensure = 'stopped'
}
}
Package['aodh'] -> Service['aodh-listener']
service { 'aodh-listener':
ensure => $service_ensure,
name => $::aodh::params::listener_service_name,
enable => $enabled,
hasstatus => true,
hasrestart => true,
tag => 'aodh-service',
}
}

View File

@ -125,6 +125,7 @@ describe 'basic aodh' do
}
class { '::aodh::client': }
class { '::aodh::notifier': }
class { '::aodh::listener': }
case $::osfamily {
'Debian': {
warning('aodh-evaluator cannot be run on ubuntu system, package is broken. See LP#1508463')

View File

@ -0,0 +1,98 @@
require 'spec_helper'
# LP1492636 - Cohabitation of compile matcher and webmock
WebMock.disable_net_connect!(:allow => "169.254.169.254")
describe 'aodh::listener' do
let :pre_condition do
"class { '::aodh': }"
end
shared_examples_for 'aodh-listener' do
context 'when enabled' do
it { is_expected.to contain_class('aodh::params') }
it 'installs aodh-listener package' do
is_expected.to contain_package(platform_params[:listener_package_name]).with(
:ensure => 'present'
)
end
it 'configures aodh-listener service' do
is_expected.to contain_service('aodh-listener').with(
:ensure => 'running',
:name => platform_params[:listener_service_name],
:enable => true,
:hasstatus => true,
:hasrestart => true,
:tag => 'aodh-service',
)
end
end
context 'when disabled' do
let :params do
{ :enabled => false }
end
# Catalog compilation does not crash for lack of aodh::db
it { is_expected.to compile }
it 'configures aodh-listener service' do
is_expected.to contain_service('aodh-listener').with(
:ensure => 'stopped',
:name => platform_params[:listener_service_name],
:enable => false,
:hasstatus => true,
:hasrestart => true,
:tag => 'aodh-service',
)
end
end
context 'when service management is disabled' do
let :params do
{ :enabled => false,
:manage_service => false }
end
it 'configures aodh-listener service' do
is_expected.to contain_service('aodh-listener').with(
:ensure => nil,
:name => platform_params[:listener_service_name],
:enable => false,
:hasstatus => true,
:hasrestart => true,
:tag => 'aodh-service',
)
end
end
end
context 'on Debian platforms' do
let :facts do
{ :osfamily => 'Debian' }
end
let :platform_params do
{ :listener_package_name => 'aodh-listener',
:listener_service_name => 'aodh-listener' }
end
it_configures 'aodh-listener'
end
context 'on RedHat platforms' do
let :facts do
{ :osfamily => 'RedHat' }
end
let :platform_params do
{ :listener_package_name => 'openstack-aodh-listener',
:listener_service_name => 'openstack-aodh-listener' }
end
it_configures 'aodh-listener'
end
end