From 26d9a4e9d1042546e31cab8515032091b3383dd1 Mon Sep 17 00:00:00 2001 From: Takashi Kajinami Date: Fri, 26 Sep 2025 23:07:08 +0900 Subject: [PATCH] Refactor api service management Drop validation of service name which is not implemented for the other daemons, to simplify handling of the provided service name. This allows us to more easily offload the service name definition to hiera data in the near future. Change-Id: I6ef226cf07eae253203ea8ae4412d9530075cf3b Signed-off-by: Takashi Kajinami --- manifests/api.pp | 68 ++++++++++++++++++++++---------------------- manifests/api_cfn.pp | 67 +++++++++++++++++++++---------------------- 2 files changed, 67 insertions(+), 68 deletions(-) diff --git a/manifests/api.pp b/manifests/api.pp index 7fe8208f..53bece31 100644 --- a/manifests/api.pp +++ b/manifests/api.pp @@ -55,7 +55,7 @@ class heat::api ( Stdlib::Ensure::Package $package_ensure = 'present', Boolean $manage_service = true, Boolean $enabled = true, - $service_name = $heat::params::api_service_name, + String[1] $service_name = $heat::params::api_service_name, # DEPRECATED PARAMETERS $bind_host = undef, $bind_port = undef, @@ -85,43 +85,43 @@ class heat::api ( } if $manage_service { - if $enabled { - $service_ensure = 'running' - } else { - $service_ensure = 'stopped' - } + case $service_name { + 'httpd': { + Service <| title == 'httpd' |> { tag +> 'heat-service' } - if $service_name == $heat::params::api_service_name { - service { 'heat-api': - ensure => $service_ensure, - name => $heat::params::api_service_name, - enable => $enabled, - hasstatus => true, - hasrestart => true, - tag => 'heat-service', + service { 'heat-api': + ensure => 'stopped', + name => $heat::params::api_service_name, + enable => false, + tag => ['heat-service'], + } + + # we need to make sure heat-api/eventlet is stopped before trying to start apache + Service['heat-api'] -> Service['httpd'] + + # On any paste-api.ini config change, we must restart Heat API. + Heat_api_paste_ini<||> ~> Service['httpd'] } + default: { + $service_ensure = $enabled ? { + true => 'running', + default => 'stopped', + } - # On any paste-api.ini config change, we must restart Heat API. - Heat_api_paste_ini<||> ~> Service['heat-api'] - # On any uwsgi config change, we must restart Heat API. - Heat_api_uwsgi_config<||> ~> Service['heat-api'] - } elsif $service_name == 'httpd' { - service { 'heat-api': - ensure => 'stopped', - name => $heat::params::api_service_name, - enable => false, - tag => ['heat-service'], + service { 'heat-api': + ensure => $service_ensure, + name => $service_name, + enable => $enabled, + hasstatus => true, + hasrestart => true, + tag => 'heat-service', + } + + # On any paste-api.ini config change, we must restart Heat API. + Heat_api_paste_ini<||> ~> Service['heat-api'] + # On any uwsgi config change, we must restart Heat API. + Heat_api_uwsgi_config<||> ~> Service['heat-api'] } - Service <| title == 'httpd' |> { tag +> 'heat-service' } - - # we need to make sure heat-api/eventlet is stopped before trying to start apache - Service['heat-api'] -> Service[$service_name] - - # On any paste-api.ini config change, we must restart Heat API. - Heat_api_paste_ini<||> ~> Service[$service_name] - } else { - fail("Invalid service_name. Either heat-api/openstack-heat-api for \ -running as a standalone service, or httpd for being run by a httpd server") } } diff --git a/manifests/api_cfn.pp b/manifests/api_cfn.pp index 00f7236a..6dbf0cb8 100644 --- a/manifests/api_cfn.pp +++ b/manifests/api_cfn.pp @@ -58,7 +58,7 @@ class heat::api_cfn ( Stdlib::Ensure::Package $package_ensure = 'present', Boolean $manage_service = true, Boolean $enabled = true, - $service_name = $heat::params::api_cfn_service_name, + String[1] $service_name = $heat::params::api_cfn_service_name, # DEPRECATED PARAMETERS $bind_host = undef, $bind_port = undef, @@ -88,43 +88,42 @@ class heat::api_cfn ( } if $manage_service { - if $enabled { - $service_ensure = 'running' - } else { - $service_ensure = 'stopped' - } + case $service_name { + 'httpd': { + Service <| title == 'httpd' |> { tag +> 'heat-service' } - if $service_name == $heat::params::api_cfn_service_name { - service { 'heat-api-cfn': - ensure => $service_ensure, - name => $heat::params::api_cfn_service_name, - enable => $enabled, - hasstatus => true, - hasrestart => true, - tag => 'heat-service', + service { 'heat-api-cfn': + ensure => 'stopped', + name => $heat::params::api_cfn_service_name, + enable => false, + tag => ['heat-service'], + } + # we need to make sure heat-api-cfn/eventlet is stopped before trying to start apache + Service['heat-api-cfn'] -> Service['httpd'] + + # On any paste-api.ini config change, we must restart Heat API. + Heat_api_paste_ini<||> ~> Service['httpd'] } + default: { + $service_ensure = $enabled ? { + true => 'running', + default => 'stopped', + } - # On any paste-api.ini config change, we must restart Heat API. - Heat_api_paste_ini<||> ~> Service['heat-api-cfn'] - # On any uwsgi config change, we must restart Heat API. - Heat_api_cfn_uwsgi_config<||> ~> Service['heat-api-cfn'] - } elsif $service_name == 'httpd' { - service { 'heat-api-cfn': - ensure => 'stopped', - name => $heat::params::api_cfn_service_name, - enable => false, - tag => ['heat-service'], + service { 'heat-api-cfn': + ensure => $service_ensure, + name => $service_name, + enable => $enabled, + hasstatus => true, + hasrestart => true, + tag => 'heat-service', + } + + # On any paste-api.ini config change, we must restart Heat API. + Heat_api_paste_ini<||> ~> Service['heat-api-cfn'] + # On any uwsgi config change, we must restart Heat API. + Heat_api_cfn_uwsgi_config<||> ~> Service['heat-api-cfn'] } - Service <| title == 'httpd' |> { tag +> 'heat-service' } - - # we need to make sure heat-api-cfn/eventlet is stopped before trying to start apache - Service['heat-api-cfn'] -> Service[$service_name] - - # On any paste-api.ini config change, we must restart Heat API. - Heat_api_paste_ini<||> ~> Service[$service_name] - } else { - fail("Invalid service_name. Either heat-api-cfn/openstack-heat-api-cfn for \ -running as a standalone service, or httpd for being run by a httpd server") } }