Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ score::concurrency::InterruptibleFuture<void> ControlClient::ActivateRunTarget(
if (control_client_impl_ != nullptr)
{
static score::mw::lifecycle::IdentifierHash pg_name{"MainPG"};
score::mw::lifecycle::IdentifierHash pg_state{"MainPG/" + std::string(runTargetName)};
score::mw::lifecycle::IdentifierHash pg_state{runTargetName};
retVal_ = control_client_impl_->SetState(pg_name, pg_state);
}
else
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#include <sys/stat.h>
#include <cerrno>
#include <cstdint>
#include <iostream>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove

#include <map>
#include <thread>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ namespace score::mw::lifecycle::internal::alive
namespace
{

using ApplicationType = score::mw::lifecycle::internal::configuration::ApplicationType;
using configuration::ApplicationType;

bool isSupervisedType(ApplicationType app_type)
{
Expand All @@ -32,7 +32,7 @@ bool isSupervisedType(ApplicationType app_type)

} // namespace

AliveMonitorConfig aliveMonitorConfig(const score::mw::lifecycle::internal::configuration::Config& config)
AliveMonitorConfig aliveMonitorConfig(const configuration::Config& config)
{
AliveMonitorConfig result{};
result.evaluation_cycle_ms = config.aliveSupervision().evaluation_cycle_ms;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ struct SupervisedComponentConfig
/// @brief Component short name.
std::string name;
/// @brief Alive-supervision parameters.
std::optional<score::mw::lifecycle::internal::configuration::ComponentAliveSupervision> alive_supervision;
std::optional<configuration::ComponentAliveSupervision> alive_supervision;
/// @brief Uid the component runs as.
uid_t uid{};
};
Expand All @@ -51,7 +51,7 @@ struct AliveMonitorConfig

/// @brief Returns a copy of alive-monitor-relevant configuration.
/// @return AliveMonitor configuration
AliveMonitorConfig aliveMonitorConfig(const score::mw::lifecycle::internal::configuration::Config& config);
AliveMonitorConfig aliveMonitorConfig(const configuration::Config& config);

} // namespace score::mw::lifecycle::internal::alive

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ bool FlatCfgFactory::createAliveIfIpcs(std::vector<ifappl::CheckpointIpcServer>&

for (const auto& comp : supervised_components_)
{
const std::string pathInterface = score::mw::lifecycle::internal::aliveInterfacePath(comp.name);
const std::string pathInterface = aliveInterfacePath(comp.name);
f_interfaceIpcs_r.emplace_back();
const std::int32_t configuredUid = static_cast<std::int32_t>(comp.uid);
isSuccess = initIpcServerWithUidBasedAccess(f_interfaceIpcs_r.back(), pathInterface, configuredUid);
Expand Down
82 changes: 45 additions & 37 deletions score/launch_manager/src/daemon/src/configuration/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,58 @@ generate_cpp(
schema = "details/lm_flatcfg.fbs",
)

cc_library(
name = "environment_config",
srcs = ["environment_config.cpp"],
hdrs = ["environment_config.hpp"],
include_prefix = "score/mw/launch_manager/configuration",
strip_include_prefix = "/score/launch_manager/src/daemon/src/configuration",
visibility = ["//score:__subpackages__"],
deps = [
"@score_baselibs//score/language/futurecpp",
],
)

cc_library(
name = "watchdog_config",
hdrs = ["watchdog_config.hpp"],
include_prefix = "score/mw/launch_manager/configuration",
strip_include_prefix = "/score/launch_manager/src/daemon/src/configuration",
visibility = ["//score:__subpackages__"],
)

cc_library(
name = "recovery_action_config",
hdrs = ["recovery_action_config.hpp"],
include_prefix = "score/mw/launch_manager/configuration",
strip_include_prefix = "/score/launch_manager/src/daemon/src/configuration",
visibility = ["//score:__subpackages__"],
)

cc_library(
name = "component_config",
hdrs = ["component_config.hpp"],
include_prefix = "score/mw/launch_manager/configuration",
strip_include_prefix = "/score/launch_manager/src/daemon/src/configuration",
visibility = ["//score:__subpackages__"],
deps = [
":environment_config",
":recovery_action_config",
],
)

cc_library(
name = "config",
srcs = ["details/config.cpp"],
hdrs = ["config.hpp"],
include_prefix = "score/mw/launch_manager/configuration",
strip_include_prefix = "/score/launch_manager/src/daemon/src/configuration",
visibility = ["//score:__subpackages__"],
deps = ["@score_baselibs//score/language/futurecpp"],
deps = [
":component_config",
":watchdog_config",
"@score_baselibs//score/language/futurecpp",
],
)

lm_cc_test(
Expand Down Expand Up @@ -116,39 +160,3 @@ lm_cc_test(
"@score_baselibs//score/flatbuffers:flatbufferscpp",
],
)

cc_library(
name = "configuration_adapter",
srcs = ["configuration_adapter.cpp"],
hdrs = ["configuration_adapter.hpp"],
include_prefix = "score/mw/launch_manager/configuration",
strip_include_prefix = "/score/launch_manager/src/daemon/src/configuration",
visibility = ["//score:__subpackages__"],
deps = [
":config",
":config_loader",
":flatbuffer_config_loader",
"//score/launch_manager/src/daemon/src/common:alive_interface_path",
"//score/launch_manager/src/daemon/src/common:constants",
"//score/launch_manager/src/daemon/src/common:identifier_hash",
"//score/launch_manager/src/daemon/src/common:log",
"//score/launch_manager/src/daemon/src/common:process_group_state_id",
"//score/launch_manager/src/daemon/src/osal:num_cores",
"//score/launch_manager/src/daemon/src/process_group_manager:iprocess",
"//score/launch_manager/src/daemon/src/process_group_manager:process_state",
],
)

lm_cc_test(
name = "configuration_adapter_UT",
srcs = ["configuration_adapter_UT.cpp"],
visibility = ["//tests:__subpackages__"],
deps = [
":configuration_adapter",
"//score/launch_manager/src/daemon/src/osal:num_cores",
"//score/launch_manager/src/daemon/src/process_group_manager:iprocess",
"//score/launch_manager/src/daemon/src/process_group_manager:process_state",
"@googletest//:gtest_main",
"@score_baselibs//score/flatbuffers:flatbufferscpp",
],
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
/********************************************************************************
* 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
********************************************************************************/
#ifndef COMPONENT_CONFIG_HPP
#define COMPONENT_CONFIG_HPP

#include <sys/types.h>
#include <cstdint>
#include <optional>
#include <string>
#include <vector>

#include "score/mw/launch_manager/configuration/environment_config.hpp"
#include "score/mw/launch_manager/configuration/recovery_action_config.hpp"

namespace score::mw::lifecycle::internal::configuration
{

struct ComponentAliveSupervision
{
std::uint32_t reporting_cycle_ms{};
std::uint32_t failed_cycles_tolerance{};
std::optional<std::uint32_t> min_indications;
std::optional<std::uint32_t> max_indications;
};

enum class ApplicationType : std::uint8_t
{
Native = 0,
Reporting = 1,
ReportingAndSupervised = 2,
StateManager = 3
};

struct ApplicationProfile
{
ApplicationType application_type{ApplicationType::Native};
bool is_self_terminating{};
std::optional<ComponentAliveSupervision> alive_supervision;
};

enum class ProcessState : uint8_t
{
Running = 0,
Terminated = 1
};

struct ReadyCondition
{
ProcessState process_state{ProcessState::Running};
};

struct ComponentProperties
{
std::string binary_name;
ApplicationProfile application_profile;
std::vector<std::string> depends_on;
std::vector<std::string> process_arguments;
std::optional<ReadyCondition> ready_condition;
};
struct Sandbox
{
uid_t uid{};
gid_t gid{};
std::vector<gid_t> supplementary_group_ids;
std::optional<std::string> security_policy;
std::int32_t scheduling_policy;
std::int32_t scheduling_priority{};
std::optional<std::uint64_t> max_memory_usage;
std::optional<std::uint32_t> max_cpu_usage;
};

struct DeploymentConfig
{
uint32_t ready_timeout_ms{};
uint32_t shutdown_timeout_ms{};
Environment environmental_variables;
std::string bin_dir;
std::string working_dir;
std::optional<RestartAction> ready_recovery_action;
// Currently only SwitchRunTargetAction is supported here, RestartAction to be added in the future
std::optional<SwitchRunTargetAction> recovery_action;
Sandbox sandbox;
};

struct ComponentConfig
{
std::string name;
std::string description;
ComponentProperties component_properties;
DeploymentConfig deployment_config;
};

} // namespace score::mw::lifecycle::internal::configuration

#endif // COMPONENT_CONFIG_HPP
Loading
Loading