From ffb9c49a7b5d7c6d11a09e18e7e322d473d16791 Mon Sep 17 00:00:00 2001 From: SimonKozik <244535158+SimonKozik@users.noreply.github.com> Date: Tue, 10 Mar 2026 12:41:35 +0000 Subject: [PATCH 01/13] First version of of documentation --- .../docs/launch_manager_configuration.rst | 552 ++++++++++++++++++ 1 file changed, 552 insertions(+) create mode 100755 src/launch_manager_daemon/config/config_schema/docs/launch_manager_configuration.rst diff --git a/src/launch_manager_daemon/config/config_schema/docs/launch_manager_configuration.rst b/src/launch_manager_daemon/config/config_schema/docs/launch_manager_configuration.rst new file mode 100755 index 00000000..a1f5bacd --- /dev/null +++ b/src/launch_manager_daemon/config/config_schema/docs/launch_manager_configuration.rst @@ -0,0 +1,552 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + + +Launch Manager Configuration +############################ + +This document describes the configuration schema for the S-CORE **Launch Manager**, covering core concepts and providing detailed technical insights into how the **Launch Manager** configuration is structured and operates. + +Introduction to Launch Manager Configuration +******************************************** + +Before diving into the specifics of the configuration structure, it is crucial to establish a common language and grasp how the **Launch Manager** orchestrates software components. This introduction is designed to equip new users with the basic understanding necessary to navigate the subsequent detailed configuration discussions. + +The **Launch Manager** is an essential system component responsible for managing and orchestrating software units installed on a machine. This orchestration is primarily achieved through the use of **Run Targets**. To fully understand this process, we first need to define three key terms: **Components**, **Run Targets**, and the **Ready State**. + +Components: The Building Blocks of Your System +============================================== + +A **Component**, often referred to as a software component, is an independent, deployable software unit. Examples include applications, device drivers, or software containers. Components are typically developed in isolation and can then be deployed into various target systems, such as physical or virtual machines. During the deployment or integration phase, multiple components are often combined to form a complete, functioning system. + +A single component might be deployed across several different systems. To facilitate this, the specific deployment configuration (how and where a component runs) is intentionally kept separate from the inherent properties of the component itself. This separation promotes flexibility and reusability. + +Run Targets: Grouping and Components Activation +=============================================== + +A **Run Target** defines a specific collection of components. Essentially, it is a named group that lists the components intended to be active together. When a particular **Run Target** is activated, the **Launch Manager** performs the following sequence of operations to manage the components associated with it: + +* **Deactivation of Unassigned Components:** All components currently in the **Ready State** that are **not** part of the **Run Target** being activated will be deactivated. +* **Activation of Assigned Components:** All components that are not currently in the **Ready State** but **are** assigned to the **Run Target** being activated will be started and brought to their **Ready State**. +* **Maintenance of Active Assigned Components:** Any components already in the **Ready State** and also assigned to the **Run Target** being activated will remain active and unchanged. + +Ready State: Confirmation of Operational Readiness +================================================== + +Each component possesses a **Ready State**. This state signifies that the component has not only started successfully, but has also met all its configured ready conditions. The **Ready State** is crucial because it confirms that a component is fully operational and capable of performing its intended functions, allowing other dependent components, or the system as a whole, to confidently rely on its services. + +It is vital to understand that a component's lifecycle, and consequently its **Ready State**, is distinct from the lifecycle of the underlying operating system process initiated during the component's startup sequence. + +Consider an example: a script designed to mount a file system. When this component starts, the script will execute and complete its task as soon as the mount operation is finished. The component representing this script, however, will only reach its **Ready State** when the files within that file system become genuinely available for use by other processes. In this scenario, despite the script having finished its execution, the component remains in the **Ready State** because the file system is still mounted and accessible to the rest of the system. This illustrates how the **Ready State** reflects a component's functional availability, rather than merely the availability of its process. + +When the Launch Manager Starts a Component +================================================ + +With the definitions of **Components**, **Run Targets**, and **Ready State** established, let us clarify the conditions under which the **Launch Manager** will initiate a component's startup sequence. Components will be started for two primary reasons: + +* A component is directly assigned to a **Run Target** that is currently being activated. +* Another component, which is assigned to a **Run Target** being activated, explicitly depends on that component. + +Understanding Dependencies: How Components and Run Targets Relate +================================================================= + +A fundamental aspect of **Launch Manager** configuration involves understanding how components are assigned to a **Run Target** and how dependencies are declared. + +When a component is said to be assigned to a **Run Target**, it means the **Run Target**'s configuration explicitly lists the component's name within its ``depends_on`` parameter. + +Similarly, when a component depends on another component, its own ``component_properties.depends_on`` configuration parameter will list the name of the other component it requires. + +Additionally, a **Run Target** can declare a dependency on another **Run Target**. In this scenario, the name of the dependent **Run Target** is listed within the ``depends_on`` configuration parameter of the primary **Run Target**. The most effective way to conceptualize this relationship is to imagine that the list of components assigned to the dependent **Run Target** is effectively included in the list of components of the primary **Run Target**. + +Rules for Configuring Dependencies +================================== + +When configuring dependencies within the **Launch Manager**, the following rules must be observed to ensure correct system behavior: + +* A **Component** can depend on another **Component**. +* A **Run Target** can depend on a **Component**. +* A **Run Target** can depend on another **Run Target**. +* A **Component** cannot depend on a **Run Target**. + +Having discussed these basic concepts and the fundamental operation of the **Launch Manager**, we are now ready to explore the detailed configuration structure. + +Measurement units +***************** + +This section provides an overview of the measurement units used within the configuration and explains how they ensure consistent representation of values within the system. + +Time Intervals +============== + +All time values in the **Launch Manager** configuration are specified in **seconds**. When a fraction of a second is required, a **decimal point** must be used. + +For example: + +* ``0.5`` represents a time interval of 500 milliseconds. +* ``1.5`` represents a time interval of 1500 milliseconds. + +Using a consistent unit prevents ambiguity and makes the configuration values easier to compare and understand. + +Memory +====== + +All configuration values representing memory sizes are specified in **bytes**. + +For example: + +* ``1000`` represents one kilobyte (kB), following the **SI** standard. +* ``1024`` represents one kibibyte (KiB), following the **IEC** standard. + +Storing memory values in bytes ensures that all size-related settings remain precise and unambiguous. + +Configuration schema +******************** + +This section provides a detailed description of the **Launch Manager** configuration schema. This section is organized to facilitate understanding, starting with common building blocks and then proceeding to the top-level configuration properties. + +The **Launch Manager** configuration leverages reusable definitions, primarily found within the standard ``$defs`` object. These reusable types are the fundamental building blocks of the **Launch Manager** configuration. A thorough understanding of these types will simplify comprehension of the overall configuration structure and the interaction between different settings. + +Reusable Types +============== + +The following sections describe the reusable types that form the basis of the **Launch Manager** configuration. + +alive_supervision (object) +-------------------------- + +**Description:** + Defines a reusable type that contains configuration parameters for alive supervision, which helps monitor the health and responsiveness of components. + +**Properties:** + +* **evaluation_cycle** (number, optional) + * **Description:** Specifies the length, in seconds (e.g., ``0.5`` for 500 milliseconds), of the time window used by the **Launch Manager** to assess incoming alive supervision reports from components. + * **Constraint:** Must be greater than 0. + +watchdog (object) +----------------- + +**Description:** + Defines a reusable type that contains configuration parameters for the external watchdog device, used to monitor the overall system health and initiate resets if necessary. + +**Properties:** + +* **device_file_path** (string, optional) + * **Description:** Specifies the absolute path to the external watchdog device file (e.g., ``/dev/watchdog``). +* **max_timeout** (number, optional) + * **Description:** Specifies the maximum timeout value, in seconds (e.g., ``0.5`` for 500 milliseconds), that the **Launch Manager** configures on the external watchdog during startup. The external watchdog uses this timeout as the deadline for receiving periodic alive reports from the **Launch Manager**. + * **Constraint:** Must be 0 or greater. +* **deactivate_on_shutdown** (boolean, optional) + * **Description:** Specifies whether the **Launch Manager** disables the external watchdog during shutdown. When set to ``true``, the watchdog is deactivated; when ``false``, it remains active, potentially triggering a reset if the shutdown is prolonged. +* **require_magic_close** (boolean, optional) + * **Description:** Specifies whether the **Launch Manager** performs a defined shutdown sequence to inform the external watchdog that the shutdown is intentional and to prevent a watchdog-initiated reset. When ``true``, the magic close sequence is performed; when ``false``, it is not, which might lead to an unintentional reset. + +recovery_action (object) +------------------------ + +**Description:** + Defines a reusable type that specifies recovery actions to execute when an error or failure occurs. This object must contain exactly one of the defined recovery actions. + +**Properties:** + +* **restart** (object, optional) + * **Description:** Defines a recovery action that restarts the POSIX process associated with this component. + * **Properties:** + * **number_of_attempts** (integer, optional) + * **Description:** Specifies the maximum number of restart attempts before the **Launch Manager** concludes that recovery cannot succeed for the component. + * **Constraint:** Must be 0 or greater. + * **delay_before_restart** (number, optional) + * **Description:** Specifies the delay duration, in seconds (e.g., ``0.25`` for 250 milliseconds), that the **Launch Manager** waits before initiating a restart attempt. + * **Constraint:** Must be 0 or greater. +* **switch_run_target** (object, optional) + * **Description:** Defines a recovery action that switches to a different **Run Target**. This can be a new **Run Target** or the current one to retry its activation. + * **Properties:** + * **run_target** (string, optional) + * **Description:** Specifies the name of the **Run Target** that the **Launch Manager** should switch to upon failure. + +run_target (object) +------------------- + +**Description:** + Defines a reusable type that specifies configuration parameters for a **Run Target**, outlining a particular operational mode for the system. + +**Properties:** + +* **description** (string, optional) + * **Description:** Specifies a user-defined description of the **Run Target's** purpose or operational context. +* **depends_on** (array of strings, optional) + * **Description:** Specifies the names of components and other **Run Targets** that must be successfully activated when this **Run Target** is activated. This defines the dependencies for a given operational mode. + * **Items:** Each item is a string specifying the name of a component or **Run Target** on which this **Run Target** depends. +* **transition_timeout** (number, optional) + * **Description:** Specifies the time limit, in seconds (e.g., ``1.5`` for 1500 milliseconds), for the **Run Target** transition to complete. If this limit is exceeded, the transition is considered failed. + * **Constraint:** Must be greater than 0. +* **recovery_action** (object, optional) + * **Description:** Specifies the recovery action to execute when a component assigned to this **Run Target** fails. This action is limited to ``switch_run_target`` operations. + * **Reference:** This property refers to the `recovery_action` reusable type defined in this schema, specifically enforcing the ``switch_run_target`` option. + +component_properties (object) +----------------------------- + +**Description:** + Defines a reusable type that captures essential characteristics of a software component, influencing how the **Launch Manager** interacts with it. + +**Properties:** + +* **binary_name** (string, optional) + * **Description:** Specifies the relative path of the executable file within the directory defined by ``deployment_config.bin_dir``. The final executable path will be resolved as ``{deployment_config.bin_dir}/{binary_name}``. Example values include simple filenames (e.g., ``test_app1``) or paths to executables within subdirectories (e.g., ``bin/test_app1``). +* **application_profile** (object, optional) + * **Description:** Defines the application profile that specifies the runtime behavior and capabilities of this component, particularly concerning its interaction with the **Launch Manager**. + * **Properties:** + * **application_type** (string, optional) + * **Description:** Specifies the level of integration between the component and the **Launch Manager**. + * **Allowed Values:** + * ``"Native"``: Indicates no integration with the **Launch Manager**. + * ``"Reporting"``: Implies the component uses **Launch Manager** lifecycle APIs for basic reporting. + * ``"Reporting_And_Supervised"``: Implies the component uses lifecycle APIs and sends alive notifications to the **Launch Manager**. + * ``"State_Manager"``: Implies the component uses lifecycle APIs, sends alive notifications, and has permission to change the active **Run Target**. + * **is_self_terminating** (boolean, optional) + * **Description:** Indicates whether the component is designed to terminate automatically once its planned tasks are completed (``true``), or if it is expected to remain running until explicitly requested to terminate by the **Launch Manager** (``false``). + * **alive_supervision** (object, optional) + * **Description:** Defines the configuration parameters used for monitoring the "aliveness" of the component. + * **Reference:** This property refers to the ``alive_supervision`` reusable type defined in this schema. + * **Properties:** (These properties are also inherited from ``alive_supervision`` but are listed here for quick reference and clarity on the local context.) + * **reporting_cycle** (number, optional) + * **Description:** Specifies the duration, in seconds (e.g., ``0.5`` for 500 milliseconds), of the time interval used to verify that the component sends alive notifications within the expected time frame. + * **Constraint:** Must be greater than 0. + * **failed_cycles_tolerance** (integer, optional) + * **Description:** Specifies the maximum number of consecutive reporting cycle failures. Once the number of failed cycles exceeds this maximum, the **Launch Manager** will trigger the configured recovery action. + * **Constraint:** Must be 0 or greater. + * **min_indications** (integer, optional) + * **Description:** Specifies the minimum number of checkpoints that must be reported within each configured ``reporting_cycle``. + * **Constraint:** Must be 0 or greater. + * **max_indications** (integer, optional) + * **Description:** Specifies the maximum number of checkpoints that may be reported within each configured ``reporting_cycle``. + * **Constraint:** Must be 0 or greater. +* **depends_on** (array of strings, optional) + * **Description:** Specifies the names of components that this component depends on. Each specified dependency must be initialized and reach its **Ready State** before the **Launch Manager** will start this component. This ensures proper startup order. + * **Items:** Each item is a string specifying the name of a component on which this component depends. +* **process_arguments** (array of strings, optional) + * **Description:** Specifies an ordered list of command-line arguments to be passed to the component at startup. + * **Items:** Each item is a string specifying a single command-line argument token as a UTF-8 string; the order of arguments is preserved. +* **ready_condition** (object, optional) + * **Description:** Defines the set of conditions that determine when the component completes its initializing state and enters the **Ready State**. + * **Properties:** + * **process_state** (string, optional) + * **Description:** Specifies the required state of the component's POSIX process for it to be considered ready. + * **Allowed Values:** + * ``"Running"``: The process has started and reached its running state. + * ``"Terminated"``: The process has started, reached its running state, and then terminated successfully. + +deployment_config (object) +-------------------------- + +**Description:** + Defines a reusable type that contains configuration parameters specific to a particular deployment environment or system setup. + +**Properties:** + +* **ready_timeout** (number, optional) + * **Description:** Specifies the maximum time, in seconds (e.g., ``0.25`` for 250 milliseconds), allowed for the component to reach its **Ready State**. The timeout is measured from when the component's process is created until the ready conditions specified in ``component_properties.ready_condition`` are met. + * **Constraint:** Must be greater than 0. +* **shutdown_timeout** (number, optional) + * **Description:** Specifies the maximum time, in seconds (e.g., ``0.75`` for 750 milliseconds), allowed for the component to terminate after it receives a SIGTERM signal from the **Launch Manager**. The timeout is measured from when the **Launch Manager** sends the SIGTERM signal until the operating system notifies the **Launch Manager** that the child process has terminated. + * **Constraint:** Must be greater than 0. +* **environmental_variables** (object, optional) + * **Description:** Defines the set of environment variables passed to the component at startup. + * **Additional Properties:** Each key represents an environment variable name, and its value (a string) specifies the environment variable's value. An empty string is allowed and represents an intentionally empty environment variable. +* **bin_dir** (string, optional) + * **Description:** Specifies the absolute filesystem path to the directory where the component's executable is installed. +* **working_dir** (string, optional) + * **Description:** Specifies the directory to be used as the working directory for the component during execution. +* **ready_recovery_action** (object, optional) + * **Description:** Specifies the recovery action to execute when the component fails to reach its **Ready State** within the configured ``ready_timeout``. This action is limited to ``restart`` operations. + * **Reference:** This property refers to the ``recovery_action`` reusable type defined in this schema, specifically enforcing the ``restart`` option. +* **recovery_action** (object, optional) + * **Description:** Specifies the recovery action to execute when the component malfunctions after successfully reaching its **Ready State**. This action is limited to ``switch_run_target`` operations. + * **Reference:** This property refers to the ``recovery_action`` reusable type defined in this schema, specifically enforcing the ``switch_run_target`` option. +* **sandbox** (object, optional) + * **Description:** Defines the sandbox configuration parameters that isolate and constrain the component's runtime execution, enhancing system security and stability. + * **Properties:** + * **uid** (integer, optional) + * **Description:** Specifies the POSIX user ID (UID) under which this component executes. + * **Constraint:** Must be 0 or greater. + * **gid** (integer, optional) + * **Description:** Specifies the primary POSIX group ID (GID) under which this component executes. + * **Constraint:** Must be 0 or greater. + * **supplementary_group_ids** (array of integers, optional) + * **Description:** Specifies the list of supplementary POSIX group IDs (GIDs) assigned to this component. These provide additional access permissions. + * **Items:** Each item is an integer specifying a single supplementary POSIX group ID (GID). + * **Constraint:** Each item must be 0 or greater. + * **security_policy** (string, optional) + * **Description:** Specifies the security policy or confinement profile name (such as an SELinux or AppArmor profile) assigned to the component, dictating its operating privileges. + * **scheduling_policy** (string, optional) + * **Description:** Specifies the scheduling policy applied to the component's initial thread. Supported values correspond to OS-defined policies (e.g., ``SCHED_FIFO``, ``SCHED_RR``, ``SCHED_OTHER``). Custom string values may also be supported depending on the operating system. + * **scheduling_priority** (integer, optional) + * **Description:** Specifies the scheduling priority applied to the component's initial thread, influencing its allocation of CPU time. + * **max_memory_usage** (integer, optional) + * **Description:** Specifies the maximum amount of memory, in bytes, that the component is permitted to use during runtime. + * **Constraint:** Must be greater than 0. + * **max_cpu_usage** (integer, optional) + * **Description:** Specifies the maximum CPU usage limit for the component, expressed as a percentage (%) of total CPU capacity. + * **Constraint:** Must be greater than 0. + +Launch Manager Root Properties +============================== + +The top-level configuration of the **Launch Manager** is structured into several distinct sections, each serving a specific purpose in defining the system's behavior and managed components. While reusable types provide the foundational building blocks, these root properties orchestrate their application to form a complete and functional configuration. + +A significant portion of the configuration is dedicated to defining default behaviors and managing the primary entities: +The ``defaults`` section allows users to establish system-wide default configuration parameters that can be inherited by components and **Run Targets**, thereby reducing repetitive configurations. +The ``components`` section defines the specific software components managed by the **Launch Manager**, with each component leveraging the ``component_properties`` and ``deployment_config`` reusable types to detail its characteristics and operational environment. +The ``run_targets`` section specifies all available **Run Targets**, where each **Run Target** is an instantiation of the ``run_target`` reusable type, grouping components into operational modes. + +Beyond these core sections, several other crucial properties govern the overall operation of the **Launch Manager**: +The ``schema_version`` property ensures compatibility by indicating the schema version used for the configuration file. +The ``initial_run_target`` explicitly defines which **Run Target** the **Launch Manager** must activate upon startup. +The ``fallback_run_target`` provides a specialized **Run Target** to be activated when all other recovery attempts for normal **Run Targets** have been exhausted. This particular **Run Target** does not include a ``recovery_action`` property, as it represents the ultimate state of system recovery; if its activation also fails, an external watchdog mechanism will be triggered. +The ``watchdog`` property configures the external watchdog device used for monitoring the **Launch Manager** itself. +The ``alive_supervision`` property defines the global evaluation cycle parameters for monitoring processes launched by the **Launch Manager**. + +With this overview in mind, let us now examine each root configuration property in detail. + +schema_version (integer, required) +---------------------------------- + +**Description:** + Specifies the schema version number that the **Launch Manager** uses to determine how to parse and validate this configuration file. +**Allowed Value:** + ``1`` + +defaults (object, optional) +--------------------------- + +**Description:** + Defines default configuration values that components and **Run Targets** inherit unless they provide their own overriding values. Settings specified here apply globally to all components and **Run Targets**, reducing redundant configurations. + +**Properties:** + +* **component_properties** (object, optional) + * **Description:** Defines default component property values applied to all components unless overridden in individual component definitions. + * **Reference:** This property refers to the ``component_properties`` reusable type defined in this schema. +* **deployment_config** (object, optional) + * **Description:** Defines default deployment configuration values applied to all components unless overridden in individual component definitions. + * **Reference:** This property refers to the ``deployment_config`` reusable type defined in this schema. +* **run_target** (object, optional) + * **Description:** Defines default **Run Target** configuration values applied to all **Run Targets** unless overridden in individual **Run Target** definitions. + * **Reference:** This property refers to the ``run_target`` reusable type defined in this schema. +* **alive_supervision** (object, optional) + * **Description:** Defines default alive supervision configuration values. These values are used unless a global ``alive_supervision`` configuration is explicitly specified at the root level of the configuration file. + * **Reference:** This property refers to the ``alive_supervision`` reusable type defined in this schema. +* **watchdog** (object, optional) + * **Description:** Defines default watchdog configuration values. These values are applied to all watchdogs unless overridden in individual watchdog definitions. + * **Reference:** This property refers to the ``watchdog`` reusable type defined in this schema. + +components (object, optional) +----------------------------- + +**Description:** + Defines the software components managed by the **Launch Manager**. Each property name within this object serves as a unique identifier for a component, and its corresponding value contains the component's specific configuration. + +**Pattern Properties:** Keys must be valid identifiers (alphanumeric characters, underscores, and hyphens). + +* **Component Definition** (object) + * **Description:** Defines an individual component's configuration properties and deployment settings. + * **Properties:** + * **description** (string, optional) + * **Description:** Specifies a human-readable description of the component's purpose. + * **component_properties** (object, optional) + * **Description:** Defines specific component properties for this component. Any properties not explicitly specified here will be inherited from ``defaults.component_properties``. + * **Reference:** This property refers to the ``component_properties`` reusable type defined in this schema. + * **deployment_config** (object, optional) + * **Description:** Defines deployment configuration for this component. Any properties not explicitly specified here will be inherited from ``defaults.deployment_config``. + * **Reference:** This property refers to the ``deployment_config`` reusable type defined in this schema. + +run_targets (object, optional) +------------------------------ + +**Description:** + Defines the **Run Targets** that represent different operational modes of the system. Each property name within this object serves as a unique identifier for a **Run Target**, and its corresponding value contains the **Run Target's** specific configuration. + +**Pattern Properties:** Keys must be valid identifiers (alphanumeric characters, underscores, and hyphens). + +* **Run Target Definition** (object) + * **Description:** Defines an individual **Run Target's** configuration, specifying the components and dependencies that constitute a particular operational mode. + * **Reference:** This property refers to the ``run_target`` reusable type defined in this schema. + +initial_run_target (string, required) +------------------------------------- + +**Description:** + Specifies the name of the **Run Target** that the **Launch Manager** activates during its startup sequence. This name must precisely match a **Run Target** defined within the ``run_targets`` section. + +fallback_run_target (object, optional) +-------------------------------------- + +**Description:** + Defines the fallback **Run Target** configuration. The **Launch Manager** activates this **Run Target** when all recovery attempts for other **Run Targets** have been exhausted. This specific **Run Target** does not include a ``recovery_action`` property, as it represents the final state; if its activation also fails, the external watchdog will be triggered. + +**Properties:** + +* **description** (string, optional) + * **Description:** Specifies a human-readable description of the fallback **Run Target**. +* **depends_on** (array of strings, required) + * **Description:** Specifies the names of components and **Run Targets** that must be activated when this fallback **Run Target** is activated. + * **Items:** Each item is a string specifying the name of a component or **Run Target** upon which this **Run Target** depends. +* **transition_timeout** (number, optional) + * **Description:** Specifies the time limit, in seconds (e.g., ``1.5`` for 1500 milliseconds), for the **Run Target** transition. If this limit is exceeded, the transition is considered failed. + * **Constraint:** Must be greater than 0. + +alive_supervision (object, optional) +------------------------------------ + +**Description:** + Defines the global alive supervision configuration parameters used to monitor component health. If specified, this configuration will override any default values set in ``defaults.alive_supervision``. +**Reference:** This property refers to the ``alive_supervision`` reusable type defined in this schema. + +watchdog (object, optional) +--------------------------- + +**Description:** + Defines the global external watchdog device configuration used by the **Launch Manager**. If specified, this configuration will override any default values set in ``defaults.watchdog``. +**Reference:** This property refers to the ``watchdog`` reusable type defined in this schema. + +Default Values +************** + +The **Launch Manager** configuration extensively utilizes the concept of default values to streamline the configuration process and simplify initial setup. The fundamental principle is that even if a specific configuration value is not explicitly provided by the user, a default value will always be applied, ensuring a complete and valid configuration. + +To achieve this robust defaulting mechanism, the **Launch Manager** employs two distinct levels of default values: + +1. **User-Defined Defaults:** These are specified within the ``defaults`` section of the **Launch Manager** configuration. Users can define a set of configuration options here, which will be applied if those options are not provided at a more specific level within the configuration (e.g., within an individual component, a **Run Target**, or at the root level for properties like ``alive_supervision`` or ``watchdog``). +2. **S-CORE Standard Defaults:** These represent a second tier of default values, provided by the S-CORE standard itself. The purpose of these defaults is to ensure a valid configuration value is available even if an option is entirely absent from both its specific definition and the user-defined ``defaults`` section. + +The S-CORE standard defaults are particularly beneficial during the development phase. They allow developers to concentrate on core tasks without needing to meticulously define every configuration option, as a functional default is guaranteed. + +S-CORE Standard Defaults +======================== + +The **Launch Manager** guarantees the availability of these specific default values, which are applied when no corresponding configuration is found in the explicit definition of a property (e.g., within a component's ``deployment_config``, a **Run Target**'s settings, or a root-level property) or within the user-defined ``defaults`` section. + +alive_supervision +----------------- + +The S-CORE standard provides the following default values for ``alive_supervision`` properties if they are not explicitly defined elsewhere: + +.. code-block:: json + + { + "evaluation_cycle": 0.5 + } + +watchdog +-------- + +The S-CORE standard provides the following default values for ``watchdog`` properties if they are not explicitly defined elsewhere: + +.. code-block:: json + + { + "device_file_path": "/dev/watchdog", + "max_timeout": 2.0, + "deactivate_on_shutdown": true, + "require_magic_close": false + } + +run_target +---------- + +The S-CORE standard provides the following default values for ``run_target`` properties if they are not explicitly defined elsewhere: + +.. code-block:: json + + { + "description": "", + "depends_on": [], + "transition_timeout": 3, + "recovery_action": { + "switch_run_target": { + "run_target": "Off" + } + } + } + +component_properties +-------------------- + +The S-CORE standard provides the following default values for ``component_properties`` if they are not explicitly defined elsewhere: + +.. code-block:: json + + { + "binary_name": "", + "application_profile": { + "application_type": "Reporting_And_Supervised", + "is_self_terminating": false, + "alive_supervision": { + "reporting_cycle": 0.5, + "failed_cycles_tolerance": 2, + "min_indications": 1, + "max_indications": 3 + } + }, + "depends_on": [], + "process_arguments": [], + "ready_condition": { + "process_state": "Running" + } + } + +deployment_config +----------------- + +The S-CORE standard provides the following default values for ``deployment_config`` if they are not explicitly defined elsewhere: + +.. code-block:: json + + { + "ready_timeout": 0.5, + "shutdown_timeout": 0.5, + "environmental_variables": {}, + "bin_dir": "/opt", + "working_dir": "/tmp", + "ready_recovery_action": { + "restart": { + "number_of_attempts": 0, + "delay_before_restart": 0 + } + }, + "recovery_action": { + "switch_run_target": { + "run_target": "Off" + } + }, + "sandbox": { + "uid": 1000, + "gid": 1000, + "supplementary_group_ids": [], + "security_policy": "", + "scheduling_policy": "SCHED_OTHER", + "scheduling_priority": 0, + "max_memory_usage": 0, + "max_cpu_usage": 0 + } + } + +Inheritance Of Default Values +============================= + +Given that the **Launch Manager** supports multiple levels of default values, specific rules govern their inheritance and application. The inheritance order is straightforward: + +1. If a configuration value is not explicitly specified at a specific location (e.g., within an individual component's definition, a **Run Target**'s definition, or a root-level property like ``alive_supervision``), the **Launch Manager** will first attempt to use the corresponding value from the user-defined ``defaults`` section. +2. If the value is also not specified within the user-defined ``defaults`` section, then the **Launch Manager** will apply the S-CORE standard default value for that option. From 574d018c2200ca1423d3ee5290d5a543045cb958 Mon Sep 17 00:00:00 2001 From: SimonKozik <244535158+SimonKozik@users.noreply.github.com> Date: Tue, 10 Mar 2026 14:51:30 +0000 Subject: [PATCH 02/13] Fixing lists rendering --- .../docs/launch_manager_configuration.rst | 358 +++++++++--------- 1 file changed, 179 insertions(+), 179 deletions(-) diff --git a/src/launch_manager_daemon/config/config_schema/docs/launch_manager_configuration.rst b/src/launch_manager_daemon/config/config_schema/docs/launch_manager_configuration.rst index a1f5bacd..9223feb0 100755 --- a/src/launch_manager_daemon/config/config_schema/docs/launch_manager_configuration.rst +++ b/src/launch_manager_daemon/config/config_schema/docs/launch_manager_configuration.rst @@ -37,9 +37,9 @@ Run Targets: Grouping and Components Activation A **Run Target** defines a specific collection of components. Essentially, it is a named group that lists the components intended to be active together. When a particular **Run Target** is activated, the **Launch Manager** performs the following sequence of operations to manage the components associated with it: -* **Deactivation of Unassigned Components:** All components currently in the **Ready State** that are **not** part of the **Run Target** being activated will be deactivated. -* **Activation of Assigned Components:** All components that are not currently in the **Ready State** but **are** assigned to the **Run Target** being activated will be started and brought to their **Ready State**. -* **Maintenance of Active Assigned Components:** Any components already in the **Ready State** and also assigned to the **Run Target** being activated will remain active and unchanged. +* **Deactivation of Unassigned Components:** All components currently in the **Ready State** that are **not** part of the **Run Target** being activated will be deactivated. +* **Activation of Assigned Components:** All components that are not currently in the **Ready State** but **are** assigned to the **Run Target** being activated will be started and brought to their **Ready State**. +* **Maintenance of Active Assigned Components:** Any components already in the **Ready State** and also assigned to the **Run Target** being activated will remain active and unchanged. Ready State: Confirmation of Operational Readiness ================================================== @@ -55,8 +55,8 @@ When the Launch Manager Starts a Component With the definitions of **Components**, **Run Targets**, and **Ready State** established, let us clarify the conditions under which the **Launch Manager** will initiate a component's startup sequence. Components will be started for two primary reasons: -* A component is directly assigned to a **Run Target** that is currently being activated. -* Another component, which is assigned to a **Run Target** being activated, explicitly depends on that component. +* A component is directly assigned to a **Run Target** that is currently being activated. +* Another component, which is assigned to a **Run Target** being activated, explicitly depends on that component. Understanding Dependencies: How Components and Run Targets Relate ================================================================= @@ -74,10 +74,10 @@ Rules for Configuring Dependencies When configuring dependencies within the **Launch Manager**, the following rules must be observed to ensure correct system behavior: -* A **Component** can depend on another **Component**. -* A **Run Target** can depend on a **Component**. -* A **Run Target** can depend on another **Run Target**. -* A **Component** cannot depend on a **Run Target**. +* A **Component** can depend on another **Component**. +* A **Run Target** can depend on a **Component**. +* A **Run Target** can depend on another **Run Target**. +* A **Component** cannot depend on a **Run Target**. Having discussed these basic concepts and the fundamental operation of the **Launch Manager**, we are now ready to explore the detailed configuration structure. @@ -93,8 +93,8 @@ All time values in the **Launch Manager** configuration are specified in **secon For example: -* ``0.5`` represents a time interval of 500 milliseconds. -* ``1.5`` represents a time interval of 1500 milliseconds. +* ``0.5`` represents a time interval of 500 milliseconds. +* ``1.5`` represents a time interval of 1500 milliseconds. Using a consistent unit prevents ambiguity and makes the configuration values easier to compare and understand. @@ -105,8 +105,8 @@ All configuration values representing memory sizes are specified in **bytes**. For example: -* ``1000`` represents one kilobyte (kB), following the **SI** standard. -* ``1024`` represents one kibibyte (KiB), following the **IEC** standard. +* ``1000`` represents one kilobyte (kB), following the **SI** standard. +* ``1024`` represents one kibibyte (KiB), following the **IEC** standard. Storing memory values in bytes ensures that all size-related settings remain precise and unambiguous. @@ -130,9 +130,9 @@ alive_supervision (object) **Properties:** -* **evaluation_cycle** (number, optional) - * **Description:** Specifies the length, in seconds (e.g., ``0.5`` for 500 milliseconds), of the time window used by the **Launch Manager** to assess incoming alive supervision reports from components. - * **Constraint:** Must be greater than 0. +* **evaluation_cycle** (number, optional) + * **Description:** Specifies the length, in seconds (e.g., ``0.5`` for 500 milliseconds), of the time window used by the **Launch Manager** to assess incoming alive supervision reports from components. + * **Constraint:** Must be greater than 0. watchdog (object) ----------------- @@ -142,15 +142,15 @@ watchdog (object) **Properties:** -* **device_file_path** (string, optional) - * **Description:** Specifies the absolute path to the external watchdog device file (e.g., ``/dev/watchdog``). -* **max_timeout** (number, optional) - * **Description:** Specifies the maximum timeout value, in seconds (e.g., ``0.5`` for 500 milliseconds), that the **Launch Manager** configures on the external watchdog during startup. The external watchdog uses this timeout as the deadline for receiving periodic alive reports from the **Launch Manager**. - * **Constraint:** Must be 0 or greater. -* **deactivate_on_shutdown** (boolean, optional) - * **Description:** Specifies whether the **Launch Manager** disables the external watchdog during shutdown. When set to ``true``, the watchdog is deactivated; when ``false``, it remains active, potentially triggering a reset if the shutdown is prolonged. -* **require_magic_close** (boolean, optional) - * **Description:** Specifies whether the **Launch Manager** performs a defined shutdown sequence to inform the external watchdog that the shutdown is intentional and to prevent a watchdog-initiated reset. When ``true``, the magic close sequence is performed; when ``false``, it is not, which might lead to an unintentional reset. +* **device_file_path** (string, optional) + * **Description:** Specifies the absolute path to the external watchdog device file (e.g., ``/dev/watchdog``). +* **max_timeout** (number, optional) + * **Description:** Specifies the maximum timeout value, in seconds (e.g., ``0.5`` for 500 milliseconds), that the **Launch Manager** configures on the external watchdog during startup. The external watchdog uses this timeout as the deadline for receiving periodic alive reports from the **Launch Manager**. + * **Constraint:** Must be 0 or greater. +* **deactivate_on_shutdown** (boolean, optional) + * **Description:** Specifies whether the **Launch Manager** disables the external watchdog during shutdown. When set to ``true``, the watchdog is deactivated; when ``false``, it remains active, potentially triggering a reset if the shutdown is prolonged. +* **require_magic_close** (boolean, optional) + * **Description:** Specifies whether the **Launch Manager** performs a defined shutdown sequence to inform the external watchdog that the shutdown is intentional and to prevent a watchdog-initiated reset. When ``true``, the magic close sequence is performed; when ``false``, it is not, which might lead to an unintentional reset. recovery_action (object) ------------------------ @@ -160,20 +160,20 @@ recovery_action (object) **Properties:** -* **restart** (object, optional) - * **Description:** Defines a recovery action that restarts the POSIX process associated with this component. - * **Properties:** - * **number_of_attempts** (integer, optional) - * **Description:** Specifies the maximum number of restart attempts before the **Launch Manager** concludes that recovery cannot succeed for the component. - * **Constraint:** Must be 0 or greater. - * **delay_before_restart** (number, optional) - * **Description:** Specifies the delay duration, in seconds (e.g., ``0.25`` for 250 milliseconds), that the **Launch Manager** waits before initiating a restart attempt. - * **Constraint:** Must be 0 or greater. -* **switch_run_target** (object, optional) - * **Description:** Defines a recovery action that switches to a different **Run Target**. This can be a new **Run Target** or the current one to retry its activation. - * **Properties:** - * **run_target** (string, optional) - * **Description:** Specifies the name of the **Run Target** that the **Launch Manager** should switch to upon failure. +* **restart** (object, optional) + * **Description:** Defines a recovery action that restarts the POSIX process associated with this component. + * **Properties:** + * **number_of_attempts** (integer, optional) + * **Description:** Specifies the maximum number of restart attempts before the **Launch Manager** concludes that recovery cannot succeed for the component. + * **Constraint:** Must be 0 or greater. + * **delay_before_restart** (number, optional) + * **Description:** Specifies the delay duration, in seconds (e.g., ``0.25`` for 250 milliseconds), that the **Launch Manager** waits before initiating a restart attempt. + * **Constraint:** Must be 0 or greater. +* **switch_run_target** (object, optional) + * **Description:** Defines a recovery action that switches to a different **Run Target**. This can be a new **Run Target** or the current one to retry its activation. + * **Properties:** + * **run_target** (string, optional) + * **Description:** Specifies the name of the **Run Target** that the **Launch Manager** should switch to upon failure. run_target (object) ------------------- @@ -183,17 +183,17 @@ run_target (object) **Properties:** -* **description** (string, optional) - * **Description:** Specifies a user-defined description of the **Run Target's** purpose or operational context. -* **depends_on** (array of strings, optional) - * **Description:** Specifies the names of components and other **Run Targets** that must be successfully activated when this **Run Target** is activated. This defines the dependencies for a given operational mode. - * **Items:** Each item is a string specifying the name of a component or **Run Target** on which this **Run Target** depends. -* **transition_timeout** (number, optional) - * **Description:** Specifies the time limit, in seconds (e.g., ``1.5`` for 1500 milliseconds), for the **Run Target** transition to complete. If this limit is exceeded, the transition is considered failed. - * **Constraint:** Must be greater than 0. -* **recovery_action** (object, optional) - * **Description:** Specifies the recovery action to execute when a component assigned to this **Run Target** fails. This action is limited to ``switch_run_target`` operations. - * **Reference:** This property refers to the `recovery_action` reusable type defined in this schema, specifically enforcing the ``switch_run_target`` option. +* **description** (string, optional) + * **Description:** Specifies a user-defined description of the **Run Target's** purpose or operational context. +* **depends_on** (array of strings, optional) + * **Description:** Specifies the names of components and other **Run Targets** that must be successfully activated when this **Run Target** is activated. This defines the dependencies for a given operational mode. + * **Items:** Each item is a string specifying the name of a component or **Run Target** on which this **Run Target** depends. +* **transition_timeout** (number, optional) + * **Description:** Specifies the time limit, in seconds (e.g., ``1.5`` for 1500 milliseconds), for the **Run Target** transition to complete. If this limit is exceeded, the transition is considered failed. + * **Constraint:** Must be greater than 0. +* **recovery_action** (object, optional) + * **Description:** Specifies the recovery action to execute when a component assigned to this **Run Target** fails. This action is limited to ``switch_run_target`` operations. + * **Reference:** This property refers to the `recovery_action` reusable type defined in this schema, specifically enforcing the ``switch_run_target`` option. component_properties (object) ----------------------------- @@ -203,50 +203,50 @@ component_properties (object) **Properties:** -* **binary_name** (string, optional) - * **Description:** Specifies the relative path of the executable file within the directory defined by ``deployment_config.bin_dir``. The final executable path will be resolved as ``{deployment_config.bin_dir}/{binary_name}``. Example values include simple filenames (e.g., ``test_app1``) or paths to executables within subdirectories (e.g., ``bin/test_app1``). -* **application_profile** (object, optional) - * **Description:** Defines the application profile that specifies the runtime behavior and capabilities of this component, particularly concerning its interaction with the **Launch Manager**. - * **Properties:** - * **application_type** (string, optional) - * **Description:** Specifies the level of integration between the component and the **Launch Manager**. - * **Allowed Values:** - * ``"Native"``: Indicates no integration with the **Launch Manager**. - * ``"Reporting"``: Implies the component uses **Launch Manager** lifecycle APIs for basic reporting. - * ``"Reporting_And_Supervised"``: Implies the component uses lifecycle APIs and sends alive notifications to the **Launch Manager**. - * ``"State_Manager"``: Implies the component uses lifecycle APIs, sends alive notifications, and has permission to change the active **Run Target**. - * **is_self_terminating** (boolean, optional) - * **Description:** Indicates whether the component is designed to terminate automatically once its planned tasks are completed (``true``), or if it is expected to remain running until explicitly requested to terminate by the **Launch Manager** (``false``). - * **alive_supervision** (object, optional) - * **Description:** Defines the configuration parameters used for monitoring the "aliveness" of the component. - * **Reference:** This property refers to the ``alive_supervision`` reusable type defined in this schema. - * **Properties:** (These properties are also inherited from ``alive_supervision`` but are listed here for quick reference and clarity on the local context.) - * **reporting_cycle** (number, optional) - * **Description:** Specifies the duration, in seconds (e.g., ``0.5`` for 500 milliseconds), of the time interval used to verify that the component sends alive notifications within the expected time frame. - * **Constraint:** Must be greater than 0. - * **failed_cycles_tolerance** (integer, optional) - * **Description:** Specifies the maximum number of consecutive reporting cycle failures. Once the number of failed cycles exceeds this maximum, the **Launch Manager** will trigger the configured recovery action. - * **Constraint:** Must be 0 or greater. - * **min_indications** (integer, optional) - * **Description:** Specifies the minimum number of checkpoints that must be reported within each configured ``reporting_cycle``. - * **Constraint:** Must be 0 or greater. - * **max_indications** (integer, optional) - * **Description:** Specifies the maximum number of checkpoints that may be reported within each configured ``reporting_cycle``. - * **Constraint:** Must be 0 or greater. -* **depends_on** (array of strings, optional) - * **Description:** Specifies the names of components that this component depends on. Each specified dependency must be initialized and reach its **Ready State** before the **Launch Manager** will start this component. This ensures proper startup order. - * **Items:** Each item is a string specifying the name of a component on which this component depends. -* **process_arguments** (array of strings, optional) - * **Description:** Specifies an ordered list of command-line arguments to be passed to the component at startup. - * **Items:** Each item is a string specifying a single command-line argument token as a UTF-8 string; the order of arguments is preserved. -* **ready_condition** (object, optional) - * **Description:** Defines the set of conditions that determine when the component completes its initializing state and enters the **Ready State**. - * **Properties:** - * **process_state** (string, optional) - * **Description:** Specifies the required state of the component's POSIX process for it to be considered ready. - * **Allowed Values:** - * ``"Running"``: The process has started and reached its running state. - * ``"Terminated"``: The process has started, reached its running state, and then terminated successfully. +* **binary_name** (string, optional) + * **Description:** Specifies the relative path of the executable file within the directory defined by ``deployment_config.bin_dir``. The final executable path will be resolved as ``{deployment_config.bin_dir}/{binary_name}``. Example values include simple filenames (e.g., ``test_app1``) or paths to executables within subdirectories (e.g., ``bin/test_app1``). +* **application_profile** (object, optional) + * **Description:** Defines the application profile that specifies the runtime behavior and capabilities of this component, particularly concerning its interaction with the **Launch Manager**. + * **Properties:** + * **application_type** (string, optional) + * **Description:** Specifies the level of integration between the component and the **Launch Manager**. + * **Allowed Values:** + * ``"Native"``: Indicates no integration with the **Launch Manager**. + * ``"Reporting"``: Implies the component uses **Launch Manager** lifecycle APIs for basic reporting. + * ``"Reporting_And_Supervised"``: Implies the component uses lifecycle APIs and sends alive notifications to the **Launch Manager**. + * ``"State_Manager"``: Implies the component uses lifecycle APIs, sends alive notifications, and has permission to change the active **Run Target**. + * **is_self_terminating** (boolean, optional) + * **Description:** Indicates whether the component is designed to terminate automatically once its planned tasks are completed (``true``), or if it is expected to remain running until explicitly requested to terminate by the **Launch Manager** (``false``). + * **alive_supervision** (object, optional) + * **Description:** Defines the configuration parameters used for monitoring the "aliveness" of the component. + * **Reference:** This property refers to the ``alive_supervision`` reusable type defined in this schema. + * **Properties:** (These properties are also inherited from ``alive_supervision`` but are listed here for quick reference and clarity on the local context.) + * **reporting_cycle** (number, optional) + * **Description:** Specifies the duration, in seconds (e.g., ``0.5`` for 500 milliseconds), of the time interval used to verify that the component sends alive notifications within the expected time frame. + * **Constraint:** Must be greater than 0. + * **failed_cycles_tolerance** (integer, optional) + * **Description:** Specifies the maximum number of consecutive reporting cycle failures. Once the number of failed cycles exceeds this maximum, the **Launch Manager** will trigger the configured recovery action. + * **Constraint:** Must be 0 or greater. + * **min_indications** (integer, optional) + * **Description:** Specifies the minimum number of checkpoints that must be reported within each configured ``reporting_cycle``. + * **Constraint:** Must be 0 or greater. + * **max_indications** (integer, optional) + * **Description:** Specifies the maximum number of checkpoints that may be reported within each configured ``reporting_cycle``. + * **Constraint:** Must be 0 or greater. +* **depends_on** (array of strings, optional) + * **Description:** Specifies the names of components that this component depends on. Each specified dependency must be initialized and reach its **Ready State** before the **Launch Manager** will start this component. This ensures proper startup order. + * **Items:** Each item is a string specifying the name of a component on which this component depends. +* **process_arguments** (array of strings, optional) + * **Description:** Specifies an ordered list of command-line arguments to be passed to the component at startup. + * **Items:** Each item is a string specifying a single command-line argument token as a UTF-8 string; the order of arguments is preserved. +* **ready_condition** (object, optional) + * **Description:** Defines the set of conditions that determine when the component completes its initializing state and enters the **Ready State**. + * **Properties:** + * **process_state** (string, optional) + * **Description:** Specifies the required state of the component's POSIX process for it to be considered ready. + * **Allowed Values:** + * ``"Running"``: The process has started and reached its running state. + * ``"Terminated"``: The process has started, reached its running state, and then terminated successfully. deployment_config (object) -------------------------- @@ -256,50 +256,50 @@ deployment_config (object) **Properties:** -* **ready_timeout** (number, optional) - * **Description:** Specifies the maximum time, in seconds (e.g., ``0.25`` for 250 milliseconds), allowed for the component to reach its **Ready State**. The timeout is measured from when the component's process is created until the ready conditions specified in ``component_properties.ready_condition`` are met. - * **Constraint:** Must be greater than 0. -* **shutdown_timeout** (number, optional) - * **Description:** Specifies the maximum time, in seconds (e.g., ``0.75`` for 750 milliseconds), allowed for the component to terminate after it receives a SIGTERM signal from the **Launch Manager**. The timeout is measured from when the **Launch Manager** sends the SIGTERM signal until the operating system notifies the **Launch Manager** that the child process has terminated. - * **Constraint:** Must be greater than 0. -* **environmental_variables** (object, optional) - * **Description:** Defines the set of environment variables passed to the component at startup. - * **Additional Properties:** Each key represents an environment variable name, and its value (a string) specifies the environment variable's value. An empty string is allowed and represents an intentionally empty environment variable. -* **bin_dir** (string, optional) - * **Description:** Specifies the absolute filesystem path to the directory where the component's executable is installed. -* **working_dir** (string, optional) - * **Description:** Specifies the directory to be used as the working directory for the component during execution. -* **ready_recovery_action** (object, optional) - * **Description:** Specifies the recovery action to execute when the component fails to reach its **Ready State** within the configured ``ready_timeout``. This action is limited to ``restart`` operations. - * **Reference:** This property refers to the ``recovery_action`` reusable type defined in this schema, specifically enforcing the ``restart`` option. -* **recovery_action** (object, optional) - * **Description:** Specifies the recovery action to execute when the component malfunctions after successfully reaching its **Ready State**. This action is limited to ``switch_run_target`` operations. - * **Reference:** This property refers to the ``recovery_action`` reusable type defined in this schema, specifically enforcing the ``switch_run_target`` option. -* **sandbox** (object, optional) - * **Description:** Defines the sandbox configuration parameters that isolate and constrain the component's runtime execution, enhancing system security and stability. - * **Properties:** - * **uid** (integer, optional) - * **Description:** Specifies the POSIX user ID (UID) under which this component executes. - * **Constraint:** Must be 0 or greater. - * **gid** (integer, optional) - * **Description:** Specifies the primary POSIX group ID (GID) under which this component executes. - * **Constraint:** Must be 0 or greater. - * **supplementary_group_ids** (array of integers, optional) - * **Description:** Specifies the list of supplementary POSIX group IDs (GIDs) assigned to this component. These provide additional access permissions. - * **Items:** Each item is an integer specifying a single supplementary POSIX group ID (GID). - * **Constraint:** Each item must be 0 or greater. - * **security_policy** (string, optional) - * **Description:** Specifies the security policy or confinement profile name (such as an SELinux or AppArmor profile) assigned to the component, dictating its operating privileges. - * **scheduling_policy** (string, optional) - * **Description:** Specifies the scheduling policy applied to the component's initial thread. Supported values correspond to OS-defined policies (e.g., ``SCHED_FIFO``, ``SCHED_RR``, ``SCHED_OTHER``). Custom string values may also be supported depending on the operating system. - * **scheduling_priority** (integer, optional) - * **Description:** Specifies the scheduling priority applied to the component's initial thread, influencing its allocation of CPU time. - * **max_memory_usage** (integer, optional) - * **Description:** Specifies the maximum amount of memory, in bytes, that the component is permitted to use during runtime. - * **Constraint:** Must be greater than 0. - * **max_cpu_usage** (integer, optional) - * **Description:** Specifies the maximum CPU usage limit for the component, expressed as a percentage (%) of total CPU capacity. - * **Constraint:** Must be greater than 0. +* **ready_timeout** (number, optional) + * **Description:** Specifies the maximum time, in seconds (e.g., ``0.25`` for 250 milliseconds), allowed for the component to reach its **Ready State**. The timeout is measured from when the component's process is created until the ready conditions specified in ``component_properties.ready_condition`` are met. + * **Constraint:** Must be greater than 0. +* **shutdown_timeout** (number, optional) + * **Description:** Specifies the maximum time, in seconds (e.g., ``0.75`` for 750 milliseconds), allowed for the component to terminate after it receives a SIGTERM signal from the **Launch Manager**. The timeout is measured from when the **Launch Manager** sends the SIGTERM signal until the operating system notifies the **Launch Manager** that the child process has terminated. + * **Constraint:** Must be greater than 0. +* **environmental_variables** (object, optional) + * **Description:** Defines the set of environment variables passed to the component at startup. + * **Additional Properties:** Each key represents an environment variable name, and its value (a string) specifies the environment variable's value. An empty string is allowed and represents an intentionally empty environment variable. +* **bin_dir** (string, optional) + * **Description:** Specifies the absolute filesystem path to the directory where the component's executable is installed. +* **working_dir** (string, optional) + * **Description:** Specifies the directory to be used as the working directory for the component during execution. +* **ready_recovery_action** (object, optional) + * **Description:** Specifies the recovery action to execute when the component fails to reach its **Ready State** within the configured ``ready_timeout``. This action is limited to ``restart`` operations. + * **Reference:** This property refers to the ``recovery_action`` reusable type defined in this schema, specifically enforcing the ``restart`` option. +* **recovery_action** (object, optional) + * **Description:** Specifies the recovery action to execute when the component malfunctions after successfully reaching its **Ready State**. This action is limited to ``switch_run_target`` operations. + * **Reference:** This property refers to the ``recovery_action`` reusable type defined in this schema, specifically enforcing the ``switch_run_target`` option. +* **sandbox** (object, optional) + * **Description:** Defines the sandbox configuration parameters that isolate and constrain the component's runtime execution, enhancing system security and stability. + * **Properties:** + * **uid** (integer, optional) + * **Description:** Specifies the POSIX user ID (UID) under which this component executes. + * **Constraint:** Must be 0 or greater. + * **gid** (integer, optional) + * **Description:** Specifies the primary POSIX group ID (GID) under which this component executes. + * **Constraint:** Must be 0 or greater. + * **supplementary_group_ids** (array of integers, optional) + * **Description:** Specifies the list of supplementary POSIX group IDs (GIDs) assigned to this component. These provide additional access permissions. + * **Items:** Each item is an integer specifying a single supplementary POSIX group ID (GID). + * **Constraint:** Each item must be 0 or greater. + * **security_policy** (string, optional) + * **Description:** Specifies the security policy or confinement profile name (such as an SELinux or AppArmor profile) assigned to the component, dictating its operating privileges. + * **scheduling_policy** (string, optional) + * **Description:** Specifies the scheduling policy applied to the component's initial thread. Supported values correspond to OS-defined policies (e.g., ``SCHED_FIFO``, ``SCHED_RR``, ``SCHED_OTHER``). Custom string values may also be supported depending on the operating system. + * **scheduling_priority** (integer, optional) + * **Description:** Specifies the scheduling priority applied to the component's initial thread, influencing its allocation of CPU time. + * **max_memory_usage** (integer, optional) + * **Description:** Specifies the maximum amount of memory, in bytes, that the component is permitted to use during runtime. + * **Constraint:** Must be greater than 0. + * **max_cpu_usage** (integer, optional) + * **Description:** Specifies the maximum CPU usage limit for the component, expressed as a percentage (%) of total CPU capacity. + * **Constraint:** Must be greater than 0. Launch Manager Root Properties ============================== @@ -336,21 +336,21 @@ defaults (object, optional) **Properties:** -* **component_properties** (object, optional) - * **Description:** Defines default component property values applied to all components unless overridden in individual component definitions. - * **Reference:** This property refers to the ``component_properties`` reusable type defined in this schema. -* **deployment_config** (object, optional) - * **Description:** Defines default deployment configuration values applied to all components unless overridden in individual component definitions. - * **Reference:** This property refers to the ``deployment_config`` reusable type defined in this schema. -* **run_target** (object, optional) - * **Description:** Defines default **Run Target** configuration values applied to all **Run Targets** unless overridden in individual **Run Target** definitions. - * **Reference:** This property refers to the ``run_target`` reusable type defined in this schema. -* **alive_supervision** (object, optional) - * **Description:** Defines default alive supervision configuration values. These values are used unless a global ``alive_supervision`` configuration is explicitly specified at the root level of the configuration file. - * **Reference:** This property refers to the ``alive_supervision`` reusable type defined in this schema. -* **watchdog** (object, optional) - * **Description:** Defines default watchdog configuration values. These values are applied to all watchdogs unless overridden in individual watchdog definitions. - * **Reference:** This property refers to the ``watchdog`` reusable type defined in this schema. +* **component_properties** (object, optional) + * **Description:** Defines default component property values applied to all components unless overridden in individual component definitions. + * **Reference:** This property refers to the ``component_properties`` reusable type defined in this schema. +* **deployment_config** (object, optional) + * **Description:** Defines default deployment configuration values applied to all components unless overridden in individual component definitions. + * **Reference:** This property refers to the ``deployment_config`` reusable type defined in this schema. +* **run_target** (object, optional) + * **Description:** Defines default **Run Target** configuration values applied to all **Run Targets** unless overridden in individual **Run Target** definitions. + * **Reference:** This property refers to the ``run_target`` reusable type defined in this schema. +* **alive_supervision** (object, optional) + * **Description:** Defines default alive supervision configuration values. These values are used unless a global ``alive_supervision`` configuration is explicitly specified at the root level of the configuration file. + * **Reference:** This property refers to the ``alive_supervision`` reusable type defined in this schema. +* **watchdog** (object, optional) + * **Description:** Defines default watchdog configuration values. These values are applied to all watchdogs unless overridden in individual watchdog definitions. + * **Reference:** This property refers to the ``watchdog`` reusable type defined in this schema. components (object, optional) ----------------------------- @@ -360,17 +360,17 @@ components (object, optional) **Pattern Properties:** Keys must be valid identifiers (alphanumeric characters, underscores, and hyphens). -* **Component Definition** (object) - * **Description:** Defines an individual component's configuration properties and deployment settings. - * **Properties:** - * **description** (string, optional) - * **Description:** Specifies a human-readable description of the component's purpose. - * **component_properties** (object, optional) - * **Description:** Defines specific component properties for this component. Any properties not explicitly specified here will be inherited from ``defaults.component_properties``. - * **Reference:** This property refers to the ``component_properties`` reusable type defined in this schema. - * **deployment_config** (object, optional) - * **Description:** Defines deployment configuration for this component. Any properties not explicitly specified here will be inherited from ``defaults.deployment_config``. - * **Reference:** This property refers to the ``deployment_config`` reusable type defined in this schema. +* **Component Definition** (object) + * **Description:** Defines an individual component's configuration properties and deployment settings. + * **Properties:** + * **description** (string, optional) + * **Description:** Specifies a human-readable description of the component's purpose. + * **component_properties** (object, optional) + * **Description:** Defines specific component properties for this component. Any properties not explicitly specified here will be inherited from ``defaults.component_properties``. + * **Reference:** This property refers to the ``component_properties`` reusable type defined in this schema. + * **deployment_config** (object, optional) + * **Description:** Defines deployment configuration for this component. Any properties not explicitly specified here will be inherited from ``defaults.deployment_config``. + * **Reference:** This property refers to the ``deployment_config`` reusable type defined in this schema. run_targets (object, optional) ------------------------------ @@ -380,9 +380,9 @@ run_targets (object, optional) **Pattern Properties:** Keys must be valid identifiers (alphanumeric characters, underscores, and hyphens). -* **Run Target Definition** (object) - * **Description:** Defines an individual **Run Target's** configuration, specifying the components and dependencies that constitute a particular operational mode. - * **Reference:** This property refers to the ``run_target`` reusable type defined in this schema. +* **Run Target Definition** (object) + * **Description:** Defines an individual **Run Target's** configuration, specifying the components and dependencies that constitute a particular operational mode. + * **Reference:** This property refers to the ``run_target`` reusable type defined in this schema. initial_run_target (string, required) ------------------------------------- @@ -398,14 +398,14 @@ fallback_run_target (object, optional) **Properties:** -* **description** (string, optional) - * **Description:** Specifies a human-readable description of the fallback **Run Target**. -* **depends_on** (array of strings, required) - * **Description:** Specifies the names of components and **Run Targets** that must be activated when this fallback **Run Target** is activated. - * **Items:** Each item is a string specifying the name of a component or **Run Target** upon which this **Run Target** depends. -* **transition_timeout** (number, optional) - * **Description:** Specifies the time limit, in seconds (e.g., ``1.5`` for 1500 milliseconds), for the **Run Target** transition. If this limit is exceeded, the transition is considered failed. - * **Constraint:** Must be greater than 0. +* **description** (string, optional) + * **Description:** Specifies a human-readable description of the fallback **Run Target**. +* **depends_on** (array of strings, required) + * **Description:** Specifies the names of components and **Run Targets** that must be activated when this fallback **Run Target** is activated. + * **Items:** Each item is a string specifying the name of a component or **Run Target** upon which this **Run Target** depends. +* **transition_timeout** (number, optional) + * **Description:** Specifies the time limit, in seconds (e.g., ``1.5`` for 1500 milliseconds), for the **Run Target** transition. If this limit is exceeded, the transition is considered failed. + * **Constraint:** Must be greater than 0. alive_supervision (object, optional) ------------------------------------ @@ -428,8 +428,8 @@ The **Launch Manager** configuration extensively utilizes the concept of default To achieve this robust defaulting mechanism, the **Launch Manager** employs two distinct levels of default values: -1. **User-Defined Defaults:** These are specified within the ``defaults`` section of the **Launch Manager** configuration. Users can define a set of configuration options here, which will be applied if those options are not provided at a more specific level within the configuration (e.g., within an individual component, a **Run Target**, or at the root level for properties like ``alive_supervision`` or ``watchdog``). -2. **S-CORE Standard Defaults:** These represent a second tier of default values, provided by the S-CORE standard itself. The purpose of these defaults is to ensure a valid configuration value is available even if an option is entirely absent from both its specific definition and the user-defined ``defaults`` section. +1. **User-Defined Defaults:** These are specified within the ``defaults`` section of the **Launch Manager** configuration. Users can define a set of configuration options here, which will be applied if those options are not provided at a more specific level within the configuration (e.g., within an individual component, a **Run Target**, or at the root level for properties like ``alive_supervision`` or ``watchdog``). +2. **S-CORE Standard Defaults:** These represent a second tier of default values, provided by the S-CORE standard itself. The purpose of these defaults is to ensure a valid configuration value is available even if an option is entirely absent from both its specific definition and the user-defined ``defaults`` section. The S-CORE standard defaults are particularly beneficial during the development phase. They allow developers to concentrate on core tasks without needing to meticulously define every configuration option, as a functional default is guaranteed. @@ -548,5 +548,5 @@ Inheritance Of Default Values Given that the **Launch Manager** supports multiple levels of default values, specific rules govern their inheritance and application. The inheritance order is straightforward: -1. If a configuration value is not explicitly specified at a specific location (e.g., within an individual component's definition, a **Run Target**'s definition, or a root-level property like ``alive_supervision``), the **Launch Manager** will first attempt to use the corresponding value from the user-defined ``defaults`` section. -2. If the value is also not specified within the user-defined ``defaults`` section, then the **Launch Manager** will apply the S-CORE standard default value for that option. +1. If a configuration value is not explicitly specified at a specific location (e.g., within an individual component's definition, a **Run Target**'s definition, or a root-level property like ``alive_supervision``), the **Launch Manager** will first attempt to use the corresponding value from the user-defined ``defaults`` section. +2. If the value is also not specified within the user-defined ``defaults`` section, then the **Launch Manager** will apply the S-CORE standard default value for that option. From 716c3c8181ff57ef357b7580b7f9074ec5c98eb1 Mon Sep 17 00:00:00 2001 From: SimonKozik <244535158+SimonKozik@users.noreply.github.com> Date: Tue, 10 Mar 2026 14:57:44 +0000 Subject: [PATCH 03/13] Fixing remaining problems with lists rendering --- .../config/config_schema/docs/launch_manager_configuration.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/launch_manager_daemon/config/config_schema/docs/launch_manager_configuration.rst b/src/launch_manager_daemon/config/config_schema/docs/launch_manager_configuration.rst index 9223feb0..f0d77deb 100755 --- a/src/launch_manager_daemon/config/config_schema/docs/launch_manager_configuration.rst +++ b/src/launch_manager_daemon/config/config_schema/docs/launch_manager_configuration.rst @@ -240,7 +240,7 @@ component_properties (object) * **Description:** Specifies an ordered list of command-line arguments to be passed to the component at startup. * **Items:** Each item is a string specifying a single command-line argument token as a UTF-8 string; the order of arguments is preserved. * **ready_condition** (object, optional) - * **Description:** Defines the set of conditions that determine when the component completes its initializing state and enters the **Ready State**. + * **Description:** Defines the set of conditions that determine when the component completes its initializing state and enters the **Ready State**. * **Properties:** * **process_state** (string, optional) * **Description:** Specifies the required state of the component's POSIX process for it to be considered ready. From 531666f254660f484a6ce433edd576c8955c47ed Mon Sep 17 00:00:00 2001 From: SimonKozik <244535158+SimonKozik@users.noreply.github.com> Date: Tue, 10 Mar 2026 15:44:12 +0000 Subject: [PATCH 04/13] Adding default values provided by S-CORE standard --- .../alive_supervision_defaults.json | 5 ++++ .../component_properties_defaults.json | 20 +++++++++++++ .../deployment_config_defaults.json | 28 +++++++++++++++++++ .../default_values/run_target_defaults.json | 12 ++++++++ .../default_values/watchdog_defaults.json | 8 ++++++ 5 files changed, 73 insertions(+) create mode 100755 src/launch_manager_daemon/config/config_schema/default_values/alive_supervision_defaults.json create mode 100755 src/launch_manager_daemon/config/config_schema/default_values/component_properties_defaults.json create mode 100755 src/launch_manager_daemon/config/config_schema/default_values/deployment_config_defaults.json create mode 100755 src/launch_manager_daemon/config/config_schema/default_values/run_target_defaults.json create mode 100755 src/launch_manager_daemon/config/config_schema/default_values/watchdog_defaults.json diff --git a/src/launch_manager_daemon/config/config_schema/default_values/alive_supervision_defaults.json b/src/launch_manager_daemon/config/config_schema/default_values/alive_supervision_defaults.json new file mode 100755 index 00000000..b04c8d65 --- /dev/null +++ b/src/launch_manager_daemon/config/config_schema/default_values/alive_supervision_defaults.json @@ -0,0 +1,5 @@ +{ + "alive_supervision" : { + "evaluation_cycle": 0.5 + } +} diff --git a/src/launch_manager_daemon/config/config_schema/default_values/component_properties_defaults.json b/src/launch_manager_daemon/config/config_schema/default_values/component_properties_defaults.json new file mode 100755 index 00000000..7dda9019 --- /dev/null +++ b/src/launch_manager_daemon/config/config_schema/default_values/component_properties_defaults.json @@ -0,0 +1,20 @@ +{ + "component_properties": { + "binary_name": "", + "application_profile": { + "application_type": "REPORTING_AND_SUPERVISED", + "is_self_terminating": false, + "alive_supervision": { + "reporting_cycle": 0.5, + "failed_cycles_tolerance": 2, + "min_indications": 1, + "max_indications": 3 + } + }, + "depends_on": [], + "process_arguments": [], + "ready_condition": { + "process_state": "Running" + } + } +} diff --git a/src/launch_manager_daemon/config/config_schema/default_values/deployment_config_defaults.json b/src/launch_manager_daemon/config/config_schema/default_values/deployment_config_defaults.json new file mode 100755 index 00000000..1a00f475 --- /dev/null +++ b/src/launch_manager_daemon/config/config_schema/default_values/deployment_config_defaults.json @@ -0,0 +1,28 @@ +{ + "deployment_config": { + "ready_timeout": 0.5, + "shutdown_timeout": 0.5, + "environmental_variables": {}, + "bin_dir": "/opt", + "working_dir": "/tmp", + "ready_recovery_action": { + "restart": { + "number_of_attempts": 0, + "delay_before_restart": 0 + } + }, + "recovery_action": { + "switch_run_target": { + "run_target": "Off" + } + }, + "sandbox": { + "uid": 1000, + "gid": 1000, + "supplementary_group_ids": [], + "security_policy": "", + "scheduling_policy": "SCHED_OTHER", + "scheduling_priority": 0 + } + } +} diff --git a/src/launch_manager_daemon/config/config_schema/default_values/run_target_defaults.json b/src/launch_manager_daemon/config/config_schema/default_values/run_target_defaults.json new file mode 100755 index 00000000..03407cc6 --- /dev/null +++ b/src/launch_manager_daemon/config/config_schema/default_values/run_target_defaults.json @@ -0,0 +1,12 @@ +{ + "run_target": { + "description": "", + "depends_on": [], + "transition_timeout": 3, + "recovery_action": { + "switch_run_target": { + "run_target": "Off" + } + } + } +} diff --git a/src/launch_manager_daemon/config/config_schema/default_values/watchdog_defaults.json b/src/launch_manager_daemon/config/config_schema/default_values/watchdog_defaults.json new file mode 100755 index 00000000..a93fa7cf --- /dev/null +++ b/src/launch_manager_daemon/config/config_schema/default_values/watchdog_defaults.json @@ -0,0 +1,8 @@ +{ + "watchdog": { + "device_file_path": "/dev/watchdog", + "max_timeout": 2.0, + "deactivate_on_shutdown": true, + "require_magic_close": false + } +} From b8394b5594306b7bfe5983a9b193f073cd86b67b Mon Sep 17 00:00:00 2001 From: SimonKozik <244535158+SimonKozik@users.noreply.github.com> Date: Wed, 11 Mar 2026 12:11:54 +0000 Subject: [PATCH 05/13] Adding description of examples --- .../config/config_schema/docs/examples.rst | 34 ++++++++ .../docs/images/example_conf_graph.drawio | 81 ++++++++++++++++++ .../docs/images/example_conf_graph.png | Bin 0 -> 152201 bytes 3 files changed, 115 insertions(+) create mode 100755 src/launch_manager_daemon/config/config_schema/docs/examples.rst create mode 100755 src/launch_manager_daemon/config/config_schema/docs/images/example_conf_graph.drawio create mode 100755 src/launch_manager_daemon/config/config_schema/docs/images/example_conf_graph.png diff --git a/src/launch_manager_daemon/config/config_schema/docs/examples.rst b/src/launch_manager_daemon/config/config_schema/docs/examples.rst new file mode 100755 index 00000000..23e387f1 --- /dev/null +++ b/src/launch_manager_daemon/config/config_schema/docs/examples.rst @@ -0,0 +1,34 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +Configuration Examples +###################### + +This document provides a set of configuration examples that come with the **Launch Manager** schema. These examples are designed to show common ways to use **Launch Manager** and to demonstrate how configurations should be structured. They serve as practical guides, helping users understand how to apply various features effectively. + +`example_conf.json` +******************* + +The `example_conf.json` file is a fundamental example within the **Launch Manager** system. While it presents a relatively simple setup, its main goal is to clearly show the key ideas behind defining a **Run Target**, specifying its individual **Components**, and setting up how they depend on each other. + +Users can examine this basic example to understand the core principles. These principles can then be scaled and applied to build much more elaborate **Launch Manager** configurations, effectively managing even the most complex application setups. + +A high-level overview of this configuration, which highlights its dependencies, is shown below: + +.. image:: images/example_conf_graph.png + :alt: Graphical representation of example configuration + :width: 70% + :align: center + + Dependency graph for example_conf.json diff --git a/src/launch_manager_daemon/config/config_schema/docs/images/example_conf_graph.drawio b/src/launch_manager_daemon/config/config_schema/docs/images/example_conf_graph.drawio new file mode 100755 index 00000000..ddb05028 --- /dev/null +++ b/src/launch_manager_daemon/config/config_schema/docs/images/example_conf_graph.drawio @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/launch_manager_daemon/config/config_schema/docs/images/example_conf_graph.png b/src/launch_manager_daemon/config/config_schema/docs/images/example_conf_graph.png new file mode 100755 index 0000000000000000000000000000000000000000..cb87ed296af3d82acdcec293c5390d43f7351ac0 GIT binary patch literal 152201 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%0D48ead&~4U-DS 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 s5%B!%`K2cVBDr3BHs!H}0vhe>MqT+cJ Date: Wed, 11 Mar 2026 12:22:36 +0000 Subject: [PATCH 06/13] Attempting to fix image path --- .../config/config_schema/docs/examples.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/launch_manager_daemon/config/config_schema/docs/examples.rst b/src/launch_manager_daemon/config/config_schema/docs/examples.rst index 23e387f1..44851301 100755 --- a/src/launch_manager_daemon/config/config_schema/docs/examples.rst +++ b/src/launch_manager_daemon/config/config_schema/docs/examples.rst @@ -26,7 +26,7 @@ Users can examine this basic example to understand the core principles. These pr A high-level overview of this configuration, which highlights its dependencies, is shown below: -.. image:: images/example_conf_graph.png +.. image:: ../images/example_conf_graph.png :alt: Graphical representation of example configuration :width: 70% :align: center From 2949227a4ffeb0e8d2a37b152febe510d1d278a6 Mon Sep 17 00:00:00 2001 From: SimonKozik <244535158+SimonKozik@users.noreply.github.com> Date: Wed, 11 Mar 2026 12:29:46 +0000 Subject: [PATCH 07/13] Trying to fix problem where image is not displayed --- .../config/config_schema/docs/examples.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/launch_manager_daemon/config/config_schema/docs/examples.rst b/src/launch_manager_daemon/config/config_schema/docs/examples.rst index 44851301..9fece529 100755 --- a/src/launch_manager_daemon/config/config_schema/docs/examples.rst +++ b/src/launch_manager_daemon/config/config_schema/docs/examples.rst @@ -26,7 +26,7 @@ Users can examine this basic example to understand the core principles. These pr A high-level overview of this configuration, which highlights its dependencies, is shown below: -.. image:: ../images/example_conf_graph.png +.. figure:: ../images/example_conf_graph.png :alt: Graphical representation of example configuration :width: 70% :align: center From 7d8bd21e6b563804747a0c17e1f74e8a85533a3f Mon Sep 17 00:00:00 2001 From: SimonKozik <244535158+SimonKozik@users.noreply.github.com> Date: Wed, 11 Mar 2026 14:22:36 +0000 Subject: [PATCH 08/13] Updating readme file with info about things added in this PR --- .../config/config_schema/README.rst | 61 ++++++++++++------- 1 file changed, 40 insertions(+), 21 deletions(-) diff --git a/src/launch_manager_daemon/config/config_schema/README.rst b/src/launch_manager_daemon/config/config_schema/README.rst index 52e1857b..69ad2ee5 100755 --- a/src/launch_manager_daemon/config/config_schema/README.rst +++ b/src/launch_manager_daemon/config/config_schema/README.rst @@ -16,71 +16,90 @@ Launch Manager Configuration Schema ################################### -This folder contains the Launch Manager configuration JSON Schema. The schema defines and validates the structure of Launch Manager configuration files. +This folder contains the **Launch Manager** configuration JSON Schema. The schema defines and validates the structure of **Launch Manager** configuration files, ensuring consistency and correctness across different deployments. Overview ******** -This project manages the Launch Manager configuration schema as a single, self-contained file. When you need to modify or extend the schema, you should directly edit `s-core_launch_manager.schema.json`. +This project manages the **Launch Manager** configuration schema as a single, self-contained file. When you need to modify or extend the schema, you should directly edit ``s-core_launch_manager.schema.json``. **Project Structure:** +The project is structured to provide a clear organization for the schema, default values, examples, and documentation. + :: - +-- s-core_launch_manager.schema.json # The Launch Manager schema. - +-- examples/ # Illustrative example configuration files for the schema. - +-- scripts/ # Utility scripts, including a validation tool. + . + |-- default_values/ # Default values for various configuration aspects, including Run Target. + |-- docs/ # Comprehensive documentation for Launch Manager configuration. + |-- examples/ # Illustrative example configuration files for the schema. + |-- s-core_launch_manager.schema.json # The Launch Manager schema definition. + `-- scripts/ # Utility scripts, including a validation tool. Quick Start *********** -For Users & Developers -====================== +For Users and Developers +======================== -Whether you're validating a Launch Manager configuration against the schema, or actively developing and modifying the schema itself, here's how to interact with this project: +Whether you are validating a **Launch Manager** configuration against the schema or actively developing and modifying the schema itself, here is how to interact with this project: -1. **Locate the Schema:** The complete schema definition resides in ``s-core_launch_manager.schema.json``. -2. **Explore Examples:** The ``examples/`` folder provides various sample Launch Manager configuration files. These are invaluable for understanding how the schema applies in practice and how to structure your own configurations. -3. **Validate Your Configuration:** Use the provided validation script to check if your configuration file conforms to the schema: +1. **Locate the Schema:** The complete schema definition resides in ``s-core_launch_manager.schema.json``. This file is the authoritative source for defining the structure of **Launch Manager** configurations. +2. **Explore Examples:** The ``examples/`` folder provides various sample **Launch Manager** configuration files. These examples are invaluable for understanding how the schema applies in practice and how to structure your own configurations. +3. **Validate Your Configuration:** Use the provided validation script to check if your configuration file conforms to the schema: .. code-block:: bash scripts/validate.py --schema s-core_launch_manager.schema.json --instance your_config.json +Documentation +************* + +The ``docs`` folder contains comprehensive documentation related to the **Launch Manager** configuration. It is highly recommended to consult these resources for detailed explanations and advanced usage patterns. + +* ``launch_manager_configuration.rst``: Provides in-depth information about configuring the **Launch Manager**. +* ``examples.rst``: Offers further explanations and context for the examples provided in the ``examples/`` directory. + +Default Values +************** + +The ``default_values`` folder contains JSON files specifying default settings for various components of the **Launch Manager**. These defaults are crucial for understanding the baseline behavior of the system and for configuring specific aspects like **Run Target** settings. + Examples ******** -The ``examples`` folder contains a set of sample Launch Manager configuration files. Each example demonstrates valid configurations according to the ``s-core_launch_manager.schema.json``. +The ``examples`` folder contains a set of sample **Launch Manager** configuration files. Each example demonstrates valid configurations according to the ``s-core_launch_manager.schema.json``. -**Recommendation:** If you are new to Launch Manager configurations, **start by reviewing these examples**. They offer practical insight into the expected structure, available properties, and common use cases defined by the schema. +**Recommendation:** If you are new to **Launch Manager** configurations, **start by reviewing these examples**. They offer practical insight into the expected structure, available properties, and common use cases defined by the schema. Scripts ******* -The ``scripts`` folder houses utility scripts designed to assist with schema development. +The ``scripts`` folder houses utility scripts designed to assist with schema development and validation. validate.py =========== -The ``validate.py`` script is a crucial tool for verifying that any given Launch Manager configuration instance adheres to the rules defined in `s-core_launch_manager.schema.json`. +The ``validate.py`` script is a crucial tool for verifying that any given **Launch Manager** configuration instance adheres to the rules defined in ``s-core_launch_manager.schema.json``. **Usage:** -To validate a configuration file (e.g., `example_conf.json` from the `examples` folder) against the schema: +To validate a configuration file (e.g., ``example_conf.json`` from the ``examples`` folder) against the schema: .. code-block:: bash scripts/validate.py --schema s-core_launch_manager.schema.json --instance examples/example_conf.json Success --> examples/example_conf.json: valid -**When to use:** -* **During Development:** Run this script frequently whenever you're creating or modifying a Launch Manager configuration file. It provides immediate feedback on whether your changes are valid according to the schema. -* **Schema Development:** If you are making changes to `s-core_launch_manager.schema.json` itself, always run `validate.py` against the examples to ensure your schema changes haven't inadvertently broken existing, valid configurations. +**When to Use:** + +* **During Development:** Run this script frequently whenever you are creating or modifying a **Launch Manager** configuration file. It provides immediate feedback on whether your changes are valid according to the schema. +* **Schema Development:** If you are making changes to ``s-core_launch_manager.schema.json`` itself, always run ``validate.py`` against the examples to ensure your schema changes have not inadvertently broken existing, valid configurations. This step is vital for maintaining backward compatibility and preventing regressions. Typical Workflow **************** For schema developers or those creating new configurations: -1. **Modify** the ``s-core_launch_manager.schema.json`` file (if you're updating the schema definition) or your Launch Manager configuration file. -2. **Validate** your changes using the `scripts/validate.py` script against relevant example files or your new configuration. This iterative process helps ensure compliance and catch errors early. +1. **Modify** the ``s-core_launch_manager.schema.json`` file (if you are updating the schema definition) or your **Launch Manager** configuration file. +2. **Validate** your changes using the ``scripts/validate.py`` script against relevant example files or your new configuration. This iterative process helps ensure compliance and catch errors early, contributing to a robust configuration system. From 00830d55fdfb10b1b2513bbcb30d87cb14a7c087 Mon Sep 17 00:00:00 2001 From: SimonKozik <244535158+SimonKozik@users.noreply.github.com> Date: Wed, 11 Mar 2026 14:43:43 +0000 Subject: [PATCH 09/13] Cosmetic changes --- .../config/config_schema/README.rst | 10 +++++----- .../config/config_schema/docs/examples.rst | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/launch_manager_daemon/config/config_schema/README.rst b/src/launch_manager_daemon/config/config_schema/README.rst index 69ad2ee5..60dceaee 100755 --- a/src/launch_manager_daemon/config/config_schema/README.rst +++ b/src/launch_manager_daemon/config/config_schema/README.rst @@ -30,11 +30,11 @@ The project is structured to provide a clear organization for the schema, defaul :: . - |-- default_values/ # Default values for various configuration aspects, including Run Target. - |-- docs/ # Comprehensive documentation for Launch Manager configuration. - |-- examples/ # Illustrative example configuration files for the schema. - |-- s-core_launch_manager.schema.json # The Launch Manager schema definition. - `-- scripts/ # Utility scripts, including a validation tool. + |-- default_values/ # Default values for various configuration aspects. + |-- docs/ # Comprehensive documentation for Launch Manager configuration. + |-- examples/ # Illustrative example configuration files for the schema. + |-- s-core_launch_manager.schema.json # The Launch Manager schema definition. + `-- scripts/ # Utility scripts, including a validation tool. Quick Start *********** diff --git a/src/launch_manager_daemon/config/config_schema/docs/examples.rst b/src/launch_manager_daemon/config/config_schema/docs/examples.rst index 9fece529..318eab77 100755 --- a/src/launch_manager_daemon/config/config_schema/docs/examples.rst +++ b/src/launch_manager_daemon/config/config_schema/docs/examples.rst @@ -26,7 +26,7 @@ Users can examine this basic example to understand the core principles. These pr A high-level overview of this configuration, which highlights its dependencies, is shown below: -.. figure:: ../images/example_conf_graph.png +.. figure:: images/example_conf_graph.png :alt: Graphical representation of example configuration :width: 70% :align: center From 4334d9d9fabcb3819713cc1f03d91abbe2b493e3 Mon Sep 17 00:00:00 2001 From: SimonKozik <244535158+SimonKozik@users.noreply.github.com> Date: Wed, 11 Mar 2026 15:02:15 +0000 Subject: [PATCH 10/13] Adding information about unconfigured fallback_run_target --- .../docs/launch_manager_configuration.rst | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/launch_manager_daemon/config/config_schema/docs/launch_manager_configuration.rst b/src/launch_manager_daemon/config/config_schema/docs/launch_manager_configuration.rst index f0d77deb..3fda445b 100755 --- a/src/launch_manager_daemon/config/config_schema/docs/launch_manager_configuration.rst +++ b/src/launch_manager_daemon/config/config_schema/docs/launch_manager_configuration.rst @@ -63,7 +63,7 @@ Understanding Dependencies: How Components and Run Targets Relate A fundamental aspect of **Launch Manager** configuration involves understanding how components are assigned to a **Run Target** and how dependencies are declared. -When a component is said to be assigned to a **Run Target**, it means the **Run Target**'s configuration explicitly lists the component's name within its ``depends_on`` parameter. +When a component is said to be assigned to a **Run Target**, it means the **Run Target's** configuration explicitly lists the component's name within its ``depends_on`` parameter. Similarly, when a component depends on another component, its own ``component_properties.depends_on`` configuration parameter will list the name of the other component it requires. @@ -436,7 +436,7 @@ The S-CORE standard defaults are particularly beneficial during the development S-CORE Standard Defaults ======================== -The **Launch Manager** guarantees the availability of these specific default values, which are applied when no corresponding configuration is found in the explicit definition of a property (e.g., within a component's ``deployment_config``, a **Run Target**'s settings, or a root-level property) or within the user-defined ``defaults`` section. +The **Launch Manager** guarantees the availability of these specific default values, which are applied when no corresponding configuration is found in the explicit definition of a property (e.g., within a component's ``deployment_config``, a **Run Target's** settings, or a root-level property) or within the user-defined ``defaults`` section. alive_supervision ----------------- @@ -543,10 +543,17 @@ The S-CORE standard provides the following default values for ``deployment_confi } } +fallback_run_target +------------------- + +The ``fallback_run_target`` is a critical configuration option within the **Launch Manager**. While the S-CORE standard does not currently provide official default values for the ``fallback_run_target``, its behavior when unconfigured is important to understand. + +If ``fallback_run_target`` is not explicitly configured by the user, the Bazel target responsible for generating configuration files will create a **Run Target** that does not depend on any component. In this specific scenario, the ``fallback_run_target`` will effectively cause all components to shut down, with the exception of the **Launch Manager** itself. Understanding this default behavior is crucial for ensuring the desired system state during operation. + Inheritance Of Default Values ============================= Given that the **Launch Manager** supports multiple levels of default values, specific rules govern their inheritance and application. The inheritance order is straightforward: -1. If a configuration value is not explicitly specified at a specific location (e.g., within an individual component's definition, a **Run Target**'s definition, or a root-level property like ``alive_supervision``), the **Launch Manager** will first attempt to use the corresponding value from the user-defined ``defaults`` section. +1. If a configuration value is not explicitly specified at a specific location (e.g., within an individual component's definition, a **Run Target's** definition, or a root-level property like ``alive_supervision``), the **Launch Manager** will first attempt to use the corresponding value from the user-defined ``defaults`` section. 2. If the value is also not specified within the user-defined ``defaults`` section, then the **Launch Manager** will apply the S-CORE standard default value for that option. From e6d5ec24754b4ae1747e391d401d10281c6ebe0d Mon Sep 17 00:00:00 2001 From: SimonKozik <244535158+SimonKozik@users.noreply.github.com> Date: Wed, 11 Mar 2026 15:11:50 +0000 Subject: [PATCH 11/13] Adding links between documents --- src/launch_manager_daemon/config/config_schema/README.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/launch_manager_daemon/config/config_schema/README.rst b/src/launch_manager_daemon/config/config_schema/README.rst index 60dceaee..34c52ea5 100755 --- a/src/launch_manager_daemon/config/config_schema/README.rst +++ b/src/launch_manager_daemon/config/config_schema/README.rst @@ -57,8 +57,8 @@ Documentation The ``docs`` folder contains comprehensive documentation related to the **Launch Manager** configuration. It is highly recommended to consult these resources for detailed explanations and advanced usage patterns. -* ``launch_manager_configuration.rst``: Provides in-depth information about configuring the **Launch Manager**. -* ``examples.rst``: Offers further explanations and context for the examples provided in the ``examples/`` directory. +* `launch_manager_configuration.rst `_: Provides in-depth information about configuring the **Launch Manager**. +* `examples.rst `_: Offers further explanations and context for the examples provided in the ``examples/`` directory. Default Values ************** From ad190a171afa668154fbbc2888143647f94685bd Mon Sep 17 00:00:00 2001 From: SimonKozik <244535158+SimonKozik@users.noreply.github.com> Date: Fri, 13 Mar 2026 14:23:47 +0000 Subject: [PATCH 12/13] Changing file format for pictures, as per review comment --- .../config/config_schema/docs/examples.rst | 2 +- .../docs/images/example_conf_graph.png | Bin 152201 -> 0 bytes .../docs/images/example_conf_graph.svg | 4 ++++ 3 files changed, 5 insertions(+), 1 deletion(-) delete mode 100755 src/launch_manager_daemon/config/config_schema/docs/images/example_conf_graph.png create mode 100755 src/launch_manager_daemon/config/config_schema/docs/images/example_conf_graph.svg diff --git a/src/launch_manager_daemon/config/config_schema/docs/examples.rst b/src/launch_manager_daemon/config/config_schema/docs/examples.rst index 318eab77..48f65157 100755 --- a/src/launch_manager_daemon/config/config_schema/docs/examples.rst +++ b/src/launch_manager_daemon/config/config_schema/docs/examples.rst @@ -26,7 +26,7 @@ Users can examine this basic example to understand the core principles. These pr A high-level overview of this configuration, which highlights its dependencies, is shown below: -.. figure:: images/example_conf_graph.png +.. figure:: images/example_conf_graph.svg :alt: Graphical representation of example configuration :width: 70% :align: center diff --git a/src/launch_manager_daemon/config/config_schema/docs/images/example_conf_graph.png b/src/launch_manager_daemon/config/config_schema/docs/images/example_conf_graph.png deleted file mode 100755 index cb87ed296af3d82acdcec293c5390d43f7351ac0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 152201 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%0D48ead&~4U-DS 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 s5%B!%`K2cVBDr3BHs!H}0vhe>MqT+cJ + + +
Full
Running
Running
test_app1
dlt-daemon
setup_filesystem_sh
Terminated
state_manager
Minimal
Terminated
someip-daemon
RunTarget
Component
Legend
\ No newline at end of file From aee0cdfb4c526ff0abe416f0ae13286167534f67 Mon Sep 17 00:00:00 2001 From: SimonKozik <244535158+SimonKozik@users.noreply.github.com> Date: Fri, 13 Mar 2026 14:51:17 +0000 Subject: [PATCH 13/13] Adding reference labels for each section --- .../docs/launch_manager_configuration.rst | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/launch_manager_daemon/config/config_schema/docs/launch_manager_configuration.rst b/src/launch_manager_daemon/config/config_schema/docs/launch_manager_configuration.rst index 3fda445b..3357089a 100755 --- a/src/launch_manager_daemon/config/config_schema/docs/launch_manager_configuration.rst +++ b/src/launch_manager_daemon/config/config_schema/docs/launch_manager_configuration.rst @@ -13,11 +13,13 @@ # ******************************************************************************* +.. _lm_conf_launch_manager_configuration: Launch Manager Configuration ############################ This document describes the configuration schema for the S-CORE **Launch Manager**, covering core concepts and providing detailed technical insights into how the **Launch Manager** configuration is structured and operates. +.. _lm_conf_introduction_to_launch_manager_configuration: Introduction to Launch Manager Configuration ******************************************** @@ -25,6 +27,7 @@ Before diving into the specifics of the configuration structure, it is crucial t The **Launch Manager** is an essential system component responsible for managing and orchestrating software units installed on a machine. This orchestration is primarily achieved through the use of **Run Targets**. To fully understand this process, we first need to define three key terms: **Components**, **Run Targets**, and the **Ready State**. +.. _lm_conf_components_the_building_blocks_of_your_system: Components: The Building Blocks of Your System ============================================== @@ -32,6 +35,7 @@ A **Component**, often referred to as a software component, is an independent, d A single component might be deployed across several different systems. To facilitate this, the specific deployment configuration (how and where a component runs) is intentionally kept separate from the inherent properties of the component itself. This separation promotes flexibility and reusability. +.. _lm_conf_run_targets_grouping_and_components_activation: Run Targets: Grouping and Components Activation =============================================== @@ -41,6 +45,7 @@ A **Run Target** defines a specific collection of components. Essentially, it is * **Activation of Assigned Components:** All components that are not currently in the **Ready State** but **are** assigned to the **Run Target** being activated will be started and brought to their **Ready State**. * **Maintenance of Active Assigned Components:** Any components already in the **Ready State** and also assigned to the **Run Target** being activated will remain active and unchanged. +.. _lm_conf_ready_state_confirmation_of_operational_readiness: Ready State: Confirmation of Operational Readiness ================================================== @@ -50,6 +55,7 @@ It is vital to understand that a component's lifecycle, and consequently its **R Consider an example: a script designed to mount a file system. When this component starts, the script will execute and complete its task as soon as the mount operation is finished. The component representing this script, however, will only reach its **Ready State** when the files within that file system become genuinely available for use by other processes. In this scenario, despite the script having finished its execution, the component remains in the **Ready State** because the file system is still mounted and accessible to the rest of the system. This illustrates how the **Ready State** reflects a component's functional availability, rather than merely the availability of its process. +.. _lm_conf_when_the_launch_manager_starts_a_component: When the Launch Manager Starts a Component ================================================ @@ -58,6 +64,7 @@ With the definitions of **Components**, **Run Targets**, and **Ready State** est * A component is directly assigned to a **Run Target** that is currently being activated. * Another component, which is assigned to a **Run Target** being activated, explicitly depends on that component. +.. _lm_conf_understanding_dependencies_how_components_and_run_targets_relate: Understanding Dependencies: How Components and Run Targets Relate ================================================================= @@ -69,6 +76,7 @@ Similarly, when a component depends on another component, its own ``component_pr Additionally, a **Run Target** can declare a dependency on another **Run Target**. In this scenario, the name of the dependent **Run Target** is listed within the ``depends_on`` configuration parameter of the primary **Run Target**. The most effective way to conceptualize this relationship is to imagine that the list of components assigned to the dependent **Run Target** is effectively included in the list of components of the primary **Run Target**. +.. _lm_conf_rules_for_configuring_dependencies: Rules for Configuring Dependencies ================================== @@ -81,11 +89,13 @@ When configuring dependencies within the **Launch Manager**, the following rules Having discussed these basic concepts and the fundamental operation of the **Launch Manager**, we are now ready to explore the detailed configuration structure. +.. _lm_conf_measurement_units: Measurement units ***************** This section provides an overview of the measurement units used within the configuration and explains how they ensure consistent representation of values within the system. +.. _lm_conf_time_intervals: Time Intervals ============== @@ -98,6 +108,7 @@ For example: Using a consistent unit prevents ambiguity and makes the configuration values easier to compare and understand. +.. _lm_conf_memory: Memory ====== @@ -110,6 +121,7 @@ For example: Storing memory values in bytes ensures that all size-related settings remain precise and unambiguous. +.. _lm_conf_configuration_schema: Configuration schema ******************** @@ -117,11 +129,13 @@ This section provides a detailed description of the **Launch Manager** configura The **Launch Manager** configuration leverages reusable definitions, primarily found within the standard ``$defs`` object. These reusable types are the fundamental building blocks of the **Launch Manager** configuration. A thorough understanding of these types will simplify comprehension of the overall configuration structure and the interaction between different settings. +.. _lm_conf_reusable_types: Reusable Types ============== The following sections describe the reusable types that form the basis of the **Launch Manager** configuration. +.. _lm_conf_alive_supervision_object_: alive_supervision (object) -------------------------- @@ -134,6 +148,7 @@ alive_supervision (object) * **Description:** Specifies the length, in seconds (e.g., ``0.5`` for 500 milliseconds), of the time window used by the **Launch Manager** to assess incoming alive supervision reports from components. * **Constraint:** Must be greater than 0. +.. _lm_conf_watchdog_object_: watchdog (object) ----------------- @@ -152,6 +167,7 @@ watchdog (object) * **require_magic_close** (boolean, optional) * **Description:** Specifies whether the **Launch Manager** performs a defined shutdown sequence to inform the external watchdog that the shutdown is intentional and to prevent a watchdog-initiated reset. When ``true``, the magic close sequence is performed; when ``false``, it is not, which might lead to an unintentional reset. +.. _lm_conf_recovery_action_object_: recovery_action (object) ------------------------ @@ -175,6 +191,7 @@ recovery_action (object) * **run_target** (string, optional) * **Description:** Specifies the name of the **Run Target** that the **Launch Manager** should switch to upon failure. +.. _lm_conf_run_target_object_: run_target (object) ------------------- @@ -195,6 +212,7 @@ run_target (object) * **Description:** Specifies the recovery action to execute when a component assigned to this **Run Target** fails. This action is limited to ``switch_run_target`` operations. * **Reference:** This property refers to the `recovery_action` reusable type defined in this schema, specifically enforcing the ``switch_run_target`` option. +.. _lm_conf_component_properties_object_: component_properties (object) ----------------------------- @@ -248,6 +266,7 @@ component_properties (object) * ``"Running"``: The process has started and reached its running state. * ``"Terminated"``: The process has started, reached its running state, and then terminated successfully. +.. _lm_conf_deployment_config_object_: deployment_config (object) -------------------------- @@ -301,6 +320,7 @@ deployment_config (object) * **Description:** Specifies the maximum CPU usage limit for the component, expressed as a percentage (%) of total CPU capacity. * **Constraint:** Must be greater than 0. +.. _lm_conf_launch_manager_root_properties: Launch Manager Root Properties ============================== @@ -320,6 +340,7 @@ The ``alive_supervision`` property defines the global evaluation cycle parameter With this overview in mind, let us now examine each root configuration property in detail. +.. _lm_conf_schema_version_integer_required_: schema_version (integer, required) ---------------------------------- @@ -328,6 +349,7 @@ schema_version (integer, required) **Allowed Value:** ``1`` +.. _lm_conf_defaults_object_optional_: defaults (object, optional) --------------------------- @@ -352,6 +374,7 @@ defaults (object, optional) * **Description:** Defines default watchdog configuration values. These values are applied to all watchdogs unless overridden in individual watchdog definitions. * **Reference:** This property refers to the ``watchdog`` reusable type defined in this schema. +.. _lm_conf_components_object_optional_: components (object, optional) ----------------------------- @@ -372,6 +395,7 @@ components (object, optional) * **Description:** Defines deployment configuration for this component. Any properties not explicitly specified here will be inherited from ``defaults.deployment_config``. * **Reference:** This property refers to the ``deployment_config`` reusable type defined in this schema. +.. _lm_conf_run_targets_object_optional_: run_targets (object, optional) ------------------------------ @@ -384,12 +408,14 @@ run_targets (object, optional) * **Description:** Defines an individual **Run Target's** configuration, specifying the components and dependencies that constitute a particular operational mode. * **Reference:** This property refers to the ``run_target`` reusable type defined in this schema. +.. _lm_conf_initial_run_target_string_required_: initial_run_target (string, required) ------------------------------------- **Description:** Specifies the name of the **Run Target** that the **Launch Manager** activates during its startup sequence. This name must precisely match a **Run Target** defined within the ``run_targets`` section. +.. _lm_conf_fallback_run_target_object_optional_: fallback_run_target (object, optional) -------------------------------------- @@ -407,6 +433,7 @@ fallback_run_target (object, optional) * **Description:** Specifies the time limit, in seconds (e.g., ``1.5`` for 1500 milliseconds), for the **Run Target** transition. If this limit is exceeded, the transition is considered failed. * **Constraint:** Must be greater than 0. +.. _lm_conf_alive_supervision_object_optional_: alive_supervision (object, optional) ------------------------------------ @@ -414,6 +441,7 @@ alive_supervision (object, optional) Defines the global alive supervision configuration parameters used to monitor component health. If specified, this configuration will override any default values set in ``defaults.alive_supervision``. **Reference:** This property refers to the ``alive_supervision`` reusable type defined in this schema. +.. _lm_conf_watchdog_object_optional_: watchdog (object, optional) --------------------------- @@ -421,6 +449,7 @@ watchdog (object, optional) Defines the global external watchdog device configuration used by the **Launch Manager**. If specified, this configuration will override any default values set in ``defaults.watchdog``. **Reference:** This property refers to the ``watchdog`` reusable type defined in this schema. +.. _lm_conf_default_values: Default Values ************** @@ -433,11 +462,13 @@ To achieve this robust defaulting mechanism, the **Launch Manager** employs two The S-CORE standard defaults are particularly beneficial during the development phase. They allow developers to concentrate on core tasks without needing to meticulously define every configuration option, as a functional default is guaranteed. +.. _lm_conf_s_core_standard_defaults: S-CORE Standard Defaults ======================== The **Launch Manager** guarantees the availability of these specific default values, which are applied when no corresponding configuration is found in the explicit definition of a property (e.g., within a component's ``deployment_config``, a **Run Target's** settings, or a root-level property) or within the user-defined ``defaults`` section. +.. _lm_conf_alive_supervision: alive_supervision ----------------- @@ -449,6 +480,7 @@ The S-CORE standard provides the following default values for ``alive_supervisio "evaluation_cycle": 0.5 } +.. _lm_conf_watchdog: watchdog -------- @@ -463,6 +495,7 @@ The S-CORE standard provides the following default values for ``watchdog`` prope "require_magic_close": false } +.. _lm_conf_run_target: run_target ---------- @@ -481,6 +514,7 @@ The S-CORE standard provides the following default values for ``run_target`` pro } } +.. _lm_conf_component_properties: component_properties -------------------- @@ -507,6 +541,7 @@ The S-CORE standard provides the following default values for ``component_proper } } +.. _lm_conf_deployment_config: deployment_config ----------------- @@ -543,6 +578,7 @@ The S-CORE standard provides the following default values for ``deployment_confi } } +.. _lm_conf_fallback_run_target: fallback_run_target ------------------- @@ -550,6 +586,7 @@ The ``fallback_run_target`` is a critical configuration option within the **Laun If ``fallback_run_target`` is not explicitly configured by the user, the Bazel target responsible for generating configuration files will create a **Run Target** that does not depend on any component. In this specific scenario, the ``fallback_run_target`` will effectively cause all components to shut down, with the exception of the **Launch Manager** itself. Understanding this default behavior is crucial for ensuring the desired system state during operation. +.. _lm_conf_inheritance_of_default_values: Inheritance Of Default Values =============================