9#include "pybind11/operators.h"
10#include "pybind11/pybind11.h"
11#include "pybind11/stl.h"
22namespace py = pybind11;
28 ObjectLocator(
const std::string& id_arg,
const std::string& class_name_arg) :
36 std::vector<ObjectLocator>
38 const std::string& session_name) {
40 std::vector<ObjectLocator> apps;
41 for (
auto app :
session->get_all_applications()) {
42 apps.push_back({app->UID(),app->class_name()});
47 std::vector<ObjectLocator>
49 const std::string& session_name) {
51 std::vector<ObjectLocator> apps;
52 for (
auto app :
session->get_enabled_applications()) {
53 apps.push_back({app->UID(),app->class_name()});
60 const std::string& session_name,
61 const std::vector<std::string>& comps) {
63 std::set<const Component*> objs;
64 for (
auto comp: comps) {
74 const_cast<Configuration&
>(db).get(
"Component", component_id,
object);
76 catch (conffwk::NotFound& except) {
82 return component_ptr->
disabled(*session_ptr);
87 const std::string& session_id,
88 const std::string& component_id) {
92 std::list<std::vector<const dunedaq::confmodel::Component*>> parents;
93 std::vector<std::vector<ObjectLocator>> parent_ids;
97 for (
const auto& parent : parents) {
98 std::vector<ObjectLocator> parents_components;
99 for (
const auto& ancestor_component_ptr : parent) {
100 parents_components.emplace_back(
102 ancestor_component_ptr->class_name()) );
104 parent_ids.emplace_back(parents_components);
110 auto app =
const_cast<Configuration&
>(db).get<dunedaq::confmodel::DaqApplication>(app_id);
111 std::vector<std::string> resources;
112 for (
auto res : app->get_used_hostresources()) {
113 resources.push_back(res->UID());
119 const std::string& session_id,
120 const std::string& app_id) {
121 const auto* app =
const_cast<Configuration&
>(db).get<dunedaq::confmodel::DaqApplication>(app_id);
122 const auto*
session =
const_cast<Configuration&
>(db).get<dunedaq::confmodel::Session>(session_id);
123 return app->construct_commandline_parameters(db,
session);
127 const std::string& session_id,
128 const std::string& app_id) {
129 const auto* app =
const_cast<Configuration&
>(db).get<dunedaq::confmodel::RCApplication>(app_id);
130 const auto*
session =
const_cast<Configuration&
>(db).get<dunedaq::confmodel::Session>(session_id);
131 return app->construct_commandline_parameters(db,
session);
136 py::class_<ObjectLocator>(m,
"ObjectLocator")
137 .def(py::init<const std::string&, const std::string&>())
142 m.def(
"session_get_all_applications", &
session_get_all_applications,
"Get list of ALL applications (regardless of enabled/disabled state) in the requested session");
144 m.def(
"session_set_disabled", &
session_set_disabled,
"Temporarily disable Components in the requested session");
146 m.def(
"component_disabled", &
component_disabled,
"Determine if a Component-derived object (e.g. a Segment) has been disabled");
147 m.def(
"component_get_parents", &
component_get_parents,
"Get the Component-derived class instances of the parent(s) of the Component-derived object in question");
Represents database objects.
Defines base class for cache of template objects.
bool disabled(const dunedaq::confmodel::Session &session) const
void get_parents(const dunedaq::confmodel::Session &session, std::list< std::vector< const dunedaq::confmodel::Component * > > &parents) const
std::vector< ObjectLocator > session_get_all_applications(const Configuration &db, const std::string &session_name)
std::vector< std::string > daq_application_construct_commandline_parameters(const Configuration &db, const std::string &session_id, const std::string &app_id)
std::vector< std::vector< ObjectLocator > > component_get_parents(const Configuration &db, const std::string &session_id, const std::string &component_id)
std::vector< ObjectLocator > session_get_enabled_applications(const Configuration &db, const std::string &session_name)
void register_dal_methods(py::module &m)
std::vector< std::string > daq_application_get_used_hostresources(const Configuration &db, const std::string &app_id)
std::vector< std::string > rc_application_construct_commandline_parameters(const Configuration &db, const std::string &session_id, const std::string &app_id)
bool component_disabled(const Configuration &db, const std::string &session_id, const std::string &component_id)
void session_set_disabled(const Configuration &db, const std::string &session_name, const std::vector< std::string > &comps)
const std::string class_name
ObjectLocator(const std::string &id_arg, const std::string &class_name_arg)