Add class to manage vitrage-collector service

New service vitrage-collector has been added to vitrage
in https://review.openstack.org/#/c/474560.

This patch adds support for this new service.

Change-Id: I1d18f6c0d38bb66e03ab2977570310cb2357015c
This commit is contained in:
Alfredo Moralejo 2017-06-22 14:53:26 -04:00
parent 1dae737e39
commit c5365cee79
4 changed files with 163 additions and 18 deletions

46
manifests/collector.pp Normal file
View File

@ -0,0 +1,46 @@
# Installs the vitrage collector 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 vitrage::collector (
$manage_service = true,
$enabled = true,
$package_ensure = 'present',
) {
include ::vitrage::deps
include ::vitrage::params
ensure_resource( 'package', [$::vitrage::params::collector_package_name],
{ ensure => $package_ensure,
tag => ['openstack', 'vitrage-package'] }
)
if $manage_service {
if $enabled {
$service_ensure = 'running'
} else {
$service_ensure = 'stopped'
}
}
service { 'vitrage-collector':
ensure => $service_ensure,
name => $::vitrage::params::collector_service_name,
enable => $enabled,
hasstatus => true,
hasrestart => true,
tag => 'vitrage-service',
}
}

View File

@ -9,26 +9,30 @@ class vitrage::params {
case $::osfamily {
'RedHat': {
$common_package_name = 'openstack-vitrage-common'
$api_package_name = 'openstack-vitrage-api'
$api_service_name = 'openstack-vitrage-api'
$notifier_package_name = 'openstack-vitrage-notifier'
$notifier_service_name = 'openstack-vitrage-notifier'
$graph_package_name = 'openstack-vitrage-graph'
$graph_service_name = 'openstack-vitrage-graph'
$vitrage_wsgi_script_path = '/var/www/cgi-bin/vitrage'
$vitrage_wsgi_script_source = '/usr/lib/python2.7/site-packages/vitrage/api/app.wsgi'
$common_package_name = 'openstack-vitrage-common'
$api_package_name = 'openstack-vitrage-api'
$api_service_name = 'openstack-vitrage-api'
$notifier_package_name = 'openstack-vitrage-notifier'
$notifier_service_name = 'openstack-vitrage-notifier'
$graph_package_name = 'openstack-vitrage-graph'
$graph_service_name = 'openstack-vitrage-graph'
$collector_package_name = 'openstack-vitrage-collector'
$collector_service_name = 'openstack-vitrage-collector'
$vitrage_wsgi_script_path = '/var/www/cgi-bin/vitrage'
$vitrage_wsgi_script_source = '/usr/lib/python2.7/site-packages/vitrage/api/app.wsgi'
}
'Debian': {
$common_package_name = 'vitrage-common'
$api_package_name = 'vitrage-api'
$api_service_name = 'vitrage-api'
$notifier_package_name = 'vitrage-notifier'
$notifier_service_name = 'vitrage-notifier'
$graph_package_name = 'vitrage-graph'
$graph_service_name = 'vitrage-graph'
$vitrage_wsgi_script_path = '/usr/lib/cgi-bin/vitrage'
$vitrage_wsgi_script_source = '/usr/share/vitrage-common/app.wsgi'
$common_package_name = 'vitrage-common'
$api_package_name = 'vitrage-api'
$api_service_name = 'vitrage-api'
$notifier_package_name = 'vitrage-notifier'
$notifier_service_name = 'vitrage-notifier'
$graph_package_name = 'vitrage-graph'
$graph_service_name = 'vitrage-graph'
$collector_package_name = 'vitrage-collector'
$collector_service_name = 'vitrage-collector'
$vitrage_wsgi_script_path = '/usr/lib/cgi-bin/vitrage'
$vitrage_wsgi_script_source = '/usr/share/vitrage-common/app.wsgi'
}
default: {
fail("Unsupported osfamily: ${::osfamily} operatingsystem")

View File

@ -58,6 +58,7 @@ describe 'basic vitrage' do
class { '::vitrage::client': }
class { '::vitrage::notifier': }
class { '::vitrage::graph': }
class { '::vitrage::collector': }
}
default: {
fail("Unsupported osfamily (${::osfamily})")

View File

@ -0,0 +1,94 @@
require 'spec_helper'
describe 'vitrage::collector' do
let :pre_condition do
"class { '::vitrage': }"
end
shared_examples_for 'vitrage-collector' do
context 'when enabled' do
it { is_expected.to contain_class('vitrage::deps') }
it { is_expected.to contain_class('vitrage::params') }
it 'installs vitrage-collector package' do
is_expected.to contain_package(platform_params[:collector_package_name]).with(
:ensure => 'present',
:tag => ['openstack', 'vitrage-package']
)
end
it 'configures vitrage-collector service' do
is_expected.to contain_service('vitrage-collector').with(
:ensure => 'running',
:name => platform_params[:collector_service_name],
:enable => true,
:hasstatus => true,
:hasrestart => true,
:tag => 'vitrage-service',
)
end
end
context 'when disabled' do
let :params do
{ :enabled => false }
end
it { is_expected.to compile }
it 'configures vitrage-collector service' do
is_expected.to contain_service('vitrage-collector').with(
:ensure => 'stopped',
:name => platform_params[:collector_service_name],
:enable => false,
:hasstatus => true,
:hasrestart => true,
:tag => 'vitrage-service',
)
end
end
context 'when service management is disabled' do
let :params do
{ :enabled => false,
:manage_service => false }
end
it 'configures vitrage-collector service' do
is_expected.to contain_service('vitrage-collector').with(
:ensure => nil,
:name => platform_params[:collector_service_name],
:enable => false,
:hasstatus => true,
:hasrestart => true,
:tag => 'vitrage-service',
)
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'
{ :collector_package_name => 'vitrage-collector',
:collector_service_name => 'vitrage-collector' }
when 'RedHat'
{ :collector_package_name => 'openstack-vitrage-collector',
:collector_service_name => 'openstack-vitrage-collector' }
end
end
it_configures 'vitrage-collector'
end
end
end