From 67a052266de9417d3997485702af05c79098dff3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20Fu=C3=9Fberger?= Date: Tue, 29 Sep 2026 10:02:28 +0200 Subject: [PATCH 1/4] Extend config structure overview --- .../_assets/config_params_static.puml | 110 +++++++++++------- 1 file changed, 70 insertions(+), 40 deletions(-) diff --git a/docs/features/lifecycle/architecture/_assets/config_params_static.puml b/docs/features/lifecycle/architecture/_assets/config_params_static.puml index e1dda4bc08..b63640263e 100644 --- a/docs/features/lifecycle/architecture/_assets/config_params_static.puml +++ b/docs/features/lifecycle/architecture/_assets/config_params_static.puml @@ -20,70 +20,100 @@ class LaunchManager class LaunchConfiguration { - } -LaunchManager "1" -- "1" LaunchConfiguration - +LaunchManager "1" --> "1" LaunchConfiguration +LaunchConfiguration "1" -d-> "1..*" RunTargetConfig : initial Run Target +LaunchConfiguration "1" -d-> "1..*" RunTargetConfig : fallback Run Target class ConfigFile { } -LaunchConfiguration "1" -- "1..*" ConfigFile - - +LaunchConfiguration "1" *--> "1..*" ConfigFile class ComponentConfig { + + {field} name +} +class RunTargetConfig { + + {field} name + + {field} transition timeout + + {field} recovery action (e.g. switch run target) } -ConfigFile "1" -- "1..*" ComponentConfig +ConfigFile "1" *-d-> "1..*" ComponentConfig +ConfigFile "1" *-d-> "1..*" RunTargetConfig + +RunTargetConfig "1" -l-> "1..*" RunTargetConfig : \ndependency +RunTargetConfig "1" -r-> "1..*" ComponentConfig : dependency -class AliveMonitoring { - + alive notification interval - + Startup grace period - + failure tolerance limit +class AliveSupervision { + + {field} expected alive notification interval + + {field} expected alive notification count (min/max) + + {field} failure tolerance limit } +class ComponentRecoveryAction { + + {field} recovery action type (eg. restart, stop, ignore, DSS) + + {field} retry count (how many times to try) + + {field} wait time (before the component can be started again) +} + +class ReadyCondition {} -class RecoveryAction { - + recovery action type (eg. restart, stop, ignore, DSS) - + retry count (how many times to try) - + wait time (before the component can be started again) +class FileStateCondition { + + {field} state (exists, not exists) + + {field} polling interval } +class ProcessStateCondition { + + {field} Running/Terminated +} -class Dependency { - + depency type +FileStateCondition -up-|> ReadyCondition +ProcessStateCondition -up-|> ReadyCondition + +class ComponentProperties { + + {field} binary name + + {field} type (e.g. Reporting process, native process, supervised process) + + {field} self terminating (true/false) + + {field} process arguments +} + +ComponentProperties "1" *-d-> "1" ReadyCondition +ComponentProperties "1" *-d-> "1" AliveSupervision + +class DeploymentConfig { + + {field} binary dir + + {field} working dir + + {field} ready timeout + + {field} shutdown timeout + + {field} environment variables } +DeploymentConfig *--> "1" SandboxConfig +DeploymentConfig *--> "1..*" ComponentRecoveryAction + class SandboxConfig { -+ UID -+ GID -+ supplementary groups -+ runmask -+ priority -+ ability -+ security -+ cwd -+ environmental variables -+ command -+ arguments -+ stdin -+ stdout -+ stderr -+ aslr -+ rlimits -+ time between sigterm and sigkill + + {field} UID + + {field} GID + + {field} supplementary groups + + {field} runmask + + {field} priority + + {field} ability + + {field} security + + {field} cwd + + {field} stdin + + {field} stdout + + {field} stderr + + {field} aslr + + {field} rlimits } -ComponentConfig "1" -- "1" Dependency -ComponentConfig "1" -- "1" ProcessConfig -ComponentConfig "1" -- "1" AliveMonitoring -ComponentConfig "1" -- "1" RecoveryAction - -Dependency "1" --> "0..*" ComponentConfig: (reference to another component) +ComponentConfig "1" -l-> "1..*" ComponentConfig: (reference to other components) +ComponentConfig "1" o-d-> "1" ComponentProperties +ComponentConfig "1" o-d-> "1" DeploymentConfig @enduml From 52f21539d869e32842a9e72b8771cf46984db86c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20Fu=C3=9Fberger?= Date: Tue, 29 Sep 2026 14:55:48 +0200 Subject: [PATCH 2/4] Extend config structure --- .../_assets/config_params_static.puml | 65 ++++++++++--------- 1 file changed, 34 insertions(+), 31 deletions(-) diff --git a/docs/features/lifecycle/architecture/_assets/config_params_static.puml b/docs/features/lifecycle/architecture/_assets/config_params_static.puml index b63640263e..8fdcbbedec 100644 --- a/docs/features/lifecycle/architecture/_assets/config_params_static.puml +++ b/docs/features/lifecycle/architecture/_assets/config_params_static.puml @@ -11,7 +11,7 @@ ' SPDX-License-Identifier: Apache-2.0 ' ******************************************************************************* -@startuml +@startuml "Abstract Launch Manager Configuration Structure" class LaunchManager { @@ -34,15 +34,29 @@ class ConfigFile LaunchConfiguration "1" *--> "1..*" ConfigFile class ComponentConfig { - + {field} name +'''Component Properties''' + + {field} component name + + {field} binary name + + {field} type (e.g. Reporting process, native process, supervised process) + + {field} self terminating (true/false) + + {field} process arguments +'''Deployment Properties''' + + {field} binary dir + + {field} working dir + + {field} ready timeout + + {field} shutdown timeout + + {field} environment variables } class RunTargetConfig { - + {field} name + + {field} Run Target name + {field} transition timeout - + {field} recovery action (e.g. switch run target) } +class RunTargetRecoveryAction as "RunTarget\nRecoveryAction" {} + +RunTargetConfig "1" -d-> "1..*" RunTargetRecoveryAction + ConfigFile "1" *-d-> "1..*" ComponentConfig ConfigFile "1" *-d-> "1..*" RunTargetConfig @@ -55,11 +69,20 @@ class AliveSupervision { + {field} failure tolerance limit } -class ComponentRecoveryAction { - + {field} recovery action type (eg. restart, stop, ignore, DSS) +class ComponentRecoveryAction as "Component\nRecoveryAction" {} +class SafeStateRecoveryAction as "SafeState\nRecoveryAction" {} +class ComponentRestartRecoveryAction as "ComponentRestart\nRecoveryAction" { + {field} retry count (how many times to try) + {field} wait time (before the component can be started again) } +SafeStateRecoveryAction -u-|> ComponentRecoveryAction +ComponentRestartRecoveryAction -u-|> ComponentRecoveryAction + +class SwitchRunTargetRecoveryAction as "SwitchRunTarget\nRecoveryAction" { + + {field} next Run Target +} +SwitchRunTargetRecoveryAction -u-|> RunTargetRecoveryAction +SwitchRunTargetRecoveryAction -u-|> ComponentRecoveryAction class ReadyCondition {} @@ -75,27 +98,6 @@ class ProcessStateCondition { FileStateCondition -up-|> ReadyCondition ProcessStateCondition -up-|> ReadyCondition -class ComponentProperties { - + {field} binary name - + {field} type (e.g. Reporting process, native process, supervised process) - + {field} self terminating (true/false) - + {field} process arguments -} - -ComponentProperties "1" *-d-> "1" ReadyCondition -ComponentProperties "1" *-d-> "1" AliveSupervision - -class DeploymentConfig { - + {field} binary dir - + {field} working dir - + {field} ready timeout - + {field} shutdown timeout - + {field} environment variables -} - -DeploymentConfig *--> "1" SandboxConfig -DeploymentConfig *--> "1..*" ComponentRecoveryAction - class SandboxConfig { + {field} UID + {field} GID @@ -104,7 +106,6 @@ class SandboxConfig { + {field} priority + {field} ability + {field} security - + {field} cwd + {field} stdin + {field} stdout + {field} stderr @@ -112,8 +113,10 @@ class SandboxConfig { + {field} rlimits } -ComponentConfig "1" -l-> "1..*" ComponentConfig: (reference to other components) -ComponentConfig "1" o-d-> "1" ComponentProperties -ComponentConfig "1" o-d-> "1" DeploymentConfig +ComponentConfig "1" -l-> "1..*" ComponentConfig: dependency +ComponentConfig "1" *-d-> "1" ReadyCondition +ComponentConfig "1" *-d-> "1" AliveSupervision +ComponentConfig "1" *--> "1" SandboxConfig +ComponentConfig "1" *--> "1" ComponentRecoveryAction @enduml From d158caceda2fca5d8529a89b22d76b963a22218a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20Fu=C3=9Fberger?= Date: Tue, 29 Sep 2026 15:34:47 +0200 Subject: [PATCH 3/4] Add minimal explanation to config --- docs/features/lifecycle/architecture/index.rst | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/features/lifecycle/architecture/index.rst b/docs/features/lifecycle/architecture/index.rst index 55cc1c29a1..d7b274dab3 100644 --- a/docs/features/lifecycle/architecture/index.rst +++ b/docs/features/lifecycle/architecture/index.rst @@ -99,6 +99,16 @@ Static Architecture :scale: 50 :align: center +The Launch Manager configuration is structured into Run Target and Component configurations. +Each component configuration defines how a component is started, supervised, and recovered within the system. +Components may depend on one another, forming a dependency graph. + +Run Targets are configured through the Run Target configuration, which defines the dependencies between components and other Run Targets. +The configured Run Target dependencies are the direct dependencies within the dependency graph. + +The Launch Manager is configured with an *Initial Run Target* and *Fallback Run Target*. The *Initial Run Target* is activated when the Launch Manager is first started. +The *Fallback Run Target* specifies the Run Target that is activated if a failure occurs that cannot be recovered. + Dynamic Architecture -------------------- From cfcef0582a88002add107380238d755e6b073f3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20Fu=C3=9Fberger?= Date: Mon, 5 Oct 2026 09:47:35 +0200 Subject: [PATCH 4/4] Text improvements, correct cardinality --- .../architecture/_assets/config_params_static.puml | 4 ++-- docs/features/lifecycle/architecture/index.rst | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/features/lifecycle/architecture/_assets/config_params_static.puml b/docs/features/lifecycle/architecture/_assets/config_params_static.puml index 8fdcbbedec..fb3c04db6c 100644 --- a/docs/features/lifecycle/architecture/_assets/config_params_static.puml +++ b/docs/features/lifecycle/architecture/_assets/config_params_static.puml @@ -23,8 +23,8 @@ class LaunchConfiguration } LaunchManager "1" --> "1" LaunchConfiguration -LaunchConfiguration "1" -d-> "1..*" RunTargetConfig : initial Run Target -LaunchConfiguration "1" -d-> "1..*" RunTargetConfig : fallback Run Target +LaunchConfiguration "1" -d-> "1" RunTargetConfig : initial Run Target +LaunchConfiguration "1" -d-> "1" RunTargetConfig : fallback Run Target class ConfigFile { diff --git a/docs/features/lifecycle/architecture/index.rst b/docs/features/lifecycle/architecture/index.rst index d7b274dab3..64ba2c839c 100644 --- a/docs/features/lifecycle/architecture/index.rst +++ b/docs/features/lifecycle/architecture/index.rst @@ -99,12 +99,12 @@ Static Architecture :scale: 50 :align: center -The Launch Manager configuration is structured into Run Target and Component configurations. -Each component configuration defines how a component is started, supervised, and recovered within the system. -Components may depend on one another, forming a dependency graph. +The Launch Manager configuration is structured around Run Target and Component configurations. +Each Component configuration specifies how the Component is started, monitored, and recovered during system operation. +Components can have dependencies on other Components, collectively forming a dependency graph. -Run Targets are configured through the Run Target configuration, which defines the dependencies between components and other Run Targets. -The configured Run Target dependencies are the direct dependencies within the dependency graph. +Run Targets are configured through Run Target configurations, which define dependencies on Components and other Run Targets. +These dependencies determine which Components are activated when a Run Target is activated. The Launch Manager is configured with an *Initial Run Target* and *Fallback Run Target*. The *Initial Run Target* is activated when the Launch Manager is first started. The *Fallback Run Target* specifies the Run Target that is activated if a failure occurs that cannot be recovered.