From da507fc631f09bfb1c8c8ae8983c98f98ee240e9 Mon Sep 17 00:00:00 2001 From: Takashi Kajinami Date: Fri, 1 Mar 2024 12:38:47 +0900 Subject: [PATCH] Refactor resource dependencies This refactors resource dependencies to improve the following points. - Avoid unnecessary dependencies across services. For example aodh service does not require cinder db. - Restart only api service when config files like paste.ini, which are used only be api service is changed. Change-Id: If2cbbc392bd54d906c7a4f51f1c7cfca69463aaf --- manifests/api.pp | 9 +++++++++ manifests/coordination.pp | 4 ++++ manifests/db.pp | 3 +++ manifests/deps.pp | 13 +------------ manifests/keystone/authtoken.pp | 2 ++ manifests/policy.pp | 5 +++++ 6 files changed, 24 insertions(+), 12 deletions(-) diff --git a/manifests/api.pp b/manifests/api.pp index 22dd24d2..95f19e30 100644 --- a/manifests/api.pp +++ b/manifests/api.pp @@ -176,8 +176,17 @@ class designate::api ( Service['designate-api'] -> Service[$service_name] $service_name_real = false Service <| title == 'httpd' |> { tag +> 'designate-service' } + + # On any paste-api.ini config change, we must restart Designate API. + Designate_api_paste_ini<||> ~> Service[$service_name] + } else { $service_name_real = $service_name + + # On any paste-api.ini config change, we must restart Designate API. + Designate_api_paste_ini<||> ~> Service['designate-api'] + # On any uwsgi config change, we must restart Designate API. + Designate_api_uwsgi_config<||> ~> Service['designate-api'] } } else { $service_name_real = $service_name diff --git a/manifests/coordination.pp b/manifests/coordination.pp index 08b38d78..15774c08 100644 --- a/manifests/coordination.pp +++ b/manifests/coordination.pp @@ -34,4 +34,8 @@ class designate::coordination ( 'coordination/heartbeat_interval': value => $heartbeat_interval; 'coordination/run_watchers_interval': value => $run_watchers_interval; } + + # all coordination settings should be applied and all packages should be + # installed before service startup + Oslo::Coordination['designate_config'] -> Anchor['designate::service::begin'] } diff --git a/manifests/db.pp b/manifests/db.pp index f9629a94..9e7e0726 100644 --- a/manifests/db.pp +++ b/manifests/db.pp @@ -82,4 +82,7 @@ class designate::db ( include designate::db::sync } + # all db settings should be applied and all packages should be installed + # before dbsync starts + Oslo::Db['designate_config'] -> Anchor['designate::dbsync::begin'] } diff --git a/manifests/deps.pp b/manifests/deps.pp index 95d00dad..7ca4cc21 100644 --- a/manifests/deps.pp +++ b/manifests/deps.pp @@ -24,24 +24,13 @@ class designate::deps { ~> Service<| tag == 'designate-service' |> ~> anchor { 'designate::service::end': } - # all coordination settings should be applied and all packages should be - # installed before service startup - Oslo::Coordination<||> -> Anchor['designate::service::begin'] - - # paste-api.ini config should occur in the config block also. Anchor['designate::config::begin'] -> Designate_api_paste_ini<||> - ~> Anchor['designate::config::end'] - - # policy config should occur in the config block also. - Anchor['designate::config::begin'] - -> Openstacklib::Policy<| tag == 'designate' |> -> Anchor['designate::config::end'] - # On any uwsgi config change, we must restart Designate APIs. Anchor['designate::config::begin'] -> Designate_api_uwsgi_config<||> - ~> Anchor['designate::config::end'] + -> Anchor['designate::config::end'] # Installation or config changes will always restart services. Anchor['designate::install::end'] ~> Anchor['designate::service::begin'] diff --git a/manifests/keystone/authtoken.pp b/manifests/keystone/authtoken.pp index 401c0cfe..e5feb2b5 100644 --- a/manifests/keystone/authtoken.pp +++ b/manifests/keystone/authtoken.pp @@ -284,4 +284,6 @@ class designate::keystone::authtoken( service_type => $service_type, interface => $interface; } + + Keystone::Resource::Authtoken['designate_config'] -> Anchor['designate::config::end'] } diff --git a/manifests/policy.pp b/manifests/policy.pp index 41edaec1..455f1a99 100644 --- a/manifests/policy.pp +++ b/manifests/policy.pp @@ -70,6 +70,11 @@ class designate::policy ( create_resources('openstacklib::policy', { $policy_path => $policy_parameters }) + # policy config should occur in the config block also. + Anchor['designate::config::begin'] + -> Openstacklib::Policy[$policy_path] + -> Anchor['designate::config::end'] + oslo::policy { 'designate_config': enforce_scope => $enforce_scope, enforce_new_defaults => $enforce_new_defaults,