Use generic_service to manage services

This patch introduces designate::generic_service which is already
exists in other modules to manage designate packages and services.

Change-Id: Ic05539fbbcfb88ed95f35d5eb5ca95b7f7141ed1
Close-Bug: #1486860
This commit is contained in:
Xingchao Yu 2015-08-20 15:38:36 +08:00
parent d5a1c3acab
commit 2dd7a9a0ee
8 changed files with 160 additions and 64 deletions

View File

@ -30,25 +30,18 @@ class designate::agent (
$enabled = true,
$service_ensure = 'running',
$backend_driver = 'bind9',
) {
) inherits designate {
include ::designate::params
package { 'designate-agent':
ensure => $package_ensure,
name => pick($agent_package_name, $::designate::params::agent_package_name),
tag => ['openstack', 'designate-package'],
}
service { 'designate-agent':
ensure => $service_ensure,
name => $::designate::params::agent_service_name,
enable => $enabled,
hasstatus => true,
hasrestart => true,
tag => ['openstack', 'designate-service'],
}
designate_config {
'service:agent/backend_driver' : value => $backend_driver;
}
designate::generic_service { 'agent':
enabled => $enabled,
manage_service => $service_ensure,
ensure_package => $package_ensure,
package_name => pick($agent_package_name, $::designate::params::agent_package_name),
service_name => $::designate::params::agent_service_name,
}
}

View File

@ -70,25 +70,9 @@ class designate::api (
$keystone_password = false,
$enable_api_v1 = true,
$enable_api_v2 = false,
){
) inherits designate {
include ::designate::params
package { 'designate-api':
ensure => $package_ensure,
name => pick($api_package_name, $::designate::params::api_package_name),
tag => ['openstack', 'designate-package'],
}
service { 'designate-api':
ensure => $service_ensure,
name => $::designate::params::api_service_name,
enable => $enabled,
hasstatus => true,
hasrestart => true,
require => Class['::designate::db'],
tag => ['openstack', 'designate-service'],
}
# API Service
designate_config {
'service:api/auth_strategy' : value => $auth_strategy;
@ -106,4 +90,12 @@ class designate::api (
'keystone_authtoken/admin_password' : value => $keystone_password, secret => true;
}
designate::generic_service { 'api':
enabled => $enabled,
manage_service => $service_ensure,
ensure_package => $package_ensure,
package_name => pick($api_package_name, $::designate::params::api_package_name),
service_name => $::designate::params::api_service_name,
}
}

View File

@ -40,28 +40,20 @@ class designate::central (
$backend_driver = 'bind9',
$managed_resource_email = 'hostmaster@example.com',
$managed_resource_tenant_id = '123456',
) {
) inherits designate {
include ::designate::params
package { 'designate-central':
ensure => $package_ensure,
name => pick($central_package_name, $::designate::params::central_package_name),
tag => ['openstack', 'designate-package'],
}
service { 'designate-central':
ensure => $service_ensure,
name => $::designate::params::central_service_name,
enable => $enabled,
hasstatus => true,
hasrestart => true,
require => Class['::designate::db'],
tag => ['openstack', 'designate-service'],
}
designate_config {
'service:central/backend_driver' : value => $backend_driver;
'service:central/managed_resource_email' : value => $managed_resource_email;
'service:central/managed_resource_tenant_id' : value => $managed_resource_tenant_id;
}
designate::generic_service { 'central':
enabled => $enabled,
manage_service => $service_ensure,
ensure_package => $package_ensure,
package_name => pick($central_package_name, $::designate::params::central_package_name),
service_name => $::designate::params::central_service_name,
}
}

View File

@ -0,0 +1,77 @@
#
# == Define: designate::generic_service
#
# This defined type implements basic designate services.
# It is introduced to attempt to consolidate
# common code.
#
# It also allows users to specify ad-hoc services
# as needed
#
# This define creates a service resource with title designate-${name} and
# conditionally creates a package resource with title designate-${name}
#
# === Parameters:
#
# [*package_name*]
# (mandatory) The package name (for the generic_service)
#
# [*service_name*]
# (mandatory) The service name (for the generic_service)
#
# [*enabled*]
# (optional) Define if the service must be enabled or not
# Defaults to false.
#
# [*manage_service*]
# (optional) Manage or not the service (if a service_name is provided).
# Defaults to true.
#
# [*ensure_package*]
# (optional) Control the ensure parameter for the package ressource.
# Defaults to 'present'.
#
define designate::generic_service(
$package_name,
$service_name,
$enabled = false,
$manage_service = true,
$ensure_package = 'present'
) {
include ::designate::params
include ::designate::db
$designate_title = "designate-${name}"
Exec['post-designate_config'] ~> Service<| title == $designate_title |>
Exec<| title == 'designate-db-sync' |> ~> Service<| title == $designate_title |>
if ($package_name) {
if !defined(Package[$package_name]) {
package { $designate_title:
ensure => $ensure_package,
name => $package_name,
notify => Service[$designate_title],
tag => ['openstack', 'designate-package'],
}
}
}
if $service_name {
if $manage_service {
if $enabled {
$service_ensure = 'running'
} else {
$service_ensure = 'stopped'
}
}
service { $designate_title:
ensure => $service_ensure,
name => $service_name,
enable => $enabled,
hasstatus => true,
tag => ['openstack','designate-service'],
}
}
}

View File

@ -79,6 +79,14 @@ class designate(
) {
include ::designate::params
exec { 'post-designate_config':
command => '/bin/echo "designate config has changed"',
refreshonly => true,
}
Designate_config<| |> ~> Exec['post-designate_config']
package { 'designate-common':
ensure => $package_ensure,
name => pick($common_package_name, $::designate::params::common_package_name),

View File

@ -32,13 +32,15 @@ class designate::sink (
$enabled = true,
$service_ensure = 'running',
$enabled_notification_handlers = undef,
) {
) inherits designate {
include ::designate::params
package { 'designate-sink':
ensure => $package_ensure,
name => pick($sink_package_name, $::designate::params::sink_service_name),
tag => ['openstack', 'designate-package'],
designate::generic_service { 'sink':
enabled => $enabled,
manage_service => $service_ensure,
ensure_package => $package_ensure,
package_name => pick($sink_package_name, $::designate::params::sink_package_name),
service_name => $::designate::params::sink_service_name,
}
if $enabled_notification_handlers {
@ -51,12 +53,4 @@ class designate::sink (
}
}
service { 'designate-sink':
ensure => $service_ensure,
name => $::designate::params::sink_service_name,
enable => $enabled,
hasstatus => true,
hasrestart => true,
tag => ['openstack', 'designate-service'],
}
}

View File

@ -21,7 +21,6 @@ describe 'designate::api' do
is_expected.to contain_service('designate-api').with(
:name => platform_params[:api_service_name],
:ensure => 'running',
:require => 'Class[Designate::Db]',
:enable => 'true',
:tag => ['openstack', 'designate-service'],
)

View File

@ -0,0 +1,41 @@
require 'spec_helper'
describe 'designate::generic_service' do
describe 'should configure related package and service' do
let :pre_condition do
'include designate'
end
let :params do
{
:package_name => 'foo',
:service_name => 'food',
:enabled => true,
:manage_service => true,
:ensure_package => 'latest',
}
end
let :facts do
{ :osfamily => 'Debian' }
end
let :title do
'foo'
end
it { is_expected.to contain_package('designate-foo').with(
:name => 'foo',
:ensure => 'latest',
:tag => ['openstack','designate-package'],
)}
it { is_expected.to contain_service('designate-foo').with(
:name => 'food',
:ensure => 'running',
:enable => true,
:hasstatus => true,
:tag => ['openstack','designate-service'],
)}
end
end