9#include "pybind11/operators.h"
10#include "pybind11/pybind11.h"
11#include "pybind11/stl.h"
26namespace py = pybind11;
32 ObjectLocator(
const std::string& id_arg,
const std::string& class_name_arg) :
40 std::vector<ObjectLocator>
42 const std::string& session_name) {
44 std::vector<ObjectLocator> apps;
45 for (
auto app :
session->all_applications()) {
46 apps.push_back({app->UID(),app->class_name()});
51 std::vector<ObjectLocator>
53 const std::string& session_name) {
55 std::vector<ObjectLocator> apps;
56 for (
auto app :
session->enabled_applications()) {
57 apps.push_back({app->UID(),app->class_name()});
64 const std::string& session_id,
65 const std::string& component_id) {
68 if (session_ptr ==
nullptr) {
69 throw (std::runtime_error(std::format(
"Session {} not found", session_id)));
71 if (component_ptr ==
nullptr) {
72 throw (std::runtime_error(std::format(
"Component {} not found", component_id)));
74 session_ptr->disable(component_ptr);
77 const std::string& session_id,
78 const std::string& component_id) {
81 if (session_ptr ==
nullptr) {
82 throw (std::runtime_error(std::format(
"Session {} not found", session_id)));
84 if (component_ptr ==
nullptr) {
85 throw (std::runtime_error(std::format(
"Component {} not found", component_id)));
87 session_ptr->enable(component_ptr);
92 const std::string& session_id,
93 const std::string& component_id) {
96 if (component_ptr ==
nullptr) {
104 const std::string& session_id,
105 const std::string& component_id) {
109 std::list<std::vector<const dunedaq::confmodel::Resource*>> parents;
110 std::vector<std::vector<ObjectLocator>> parent_ids;
112 component_ptr->
parents(*session_ptr, parents);
114 for (
const auto& parent : parents) {
115 std::vector<ObjectLocator> parents_components;
116 for (
const auto& ancestor_component_ptr : parent) {
117 parents_components.emplace_back(
119 ancestor_component_ptr->class_name()) );
121 parent_ids.emplace_back(parents_components);
128 std::vector<std::string> resources;
129 for (
auto res : app->get_used_hostresources()) {
130 resources.push_back(res->UID());
136 const std::string& session_id,
137 const std::string& app_id) {
140 return app->construct_commandline_parameters(db,
session);
144 const std::string& session_id,
145 const std::string& app_id) {
148 return app->construct_commandline_parameters(db,
session);
153 const std::string& d2d_id) {
155 if (d2d ==
nullptr) {
162 const std::string& d2d_id) {
163 std::vector<std::string> senders;
165 if (d2d !=
nullptr) {
166 for (
auto sender: d2d->senders()) {
167 senders.push_back(sender->UID());
174 const std::string& d2d_id) {
175 std::vector<std::string> streams;
177 if (d2d !=
nullptr) {
178 for (
auto stream: d2d->streams()) {
179 streams.push_back(stream->UID());
185 std::vector<std::string>
187 const std::string& res_id) {
188 std::vector<std::string> resources;
190 if (res_set !=
nullptr) {
191 for (
auto res: res_set->contained_resources()) {
192 resources.push_back(res->UID());
202 py::class_<ObjectLocator>(m,
"ObjectLocator")
203 .def(py::init<const std::string&, const std::string&>())
208 m.def(
"session_get_all_applications", &
session_get_all_applications,
"Get list of ALL applications (regardless of enabled/disabled state) in the requested session");
211 m.def(
"disable_component", &
disable_component,
"Disable a Resource-derived object (e.g. a Segment)");
212 m.def(
"enable_component", &
enable_component,
"Enable a Resource-derived object (e.g. a Segment)");
214 m.def(
"component_disabled", &
component_disabled,
"Determine if a Resource-derived object (e.g. a Segment) has been disabled");
215 m.def(
"component_get_parents", &
component_get_parents,
"Get the Resource-derived class instances of the parent(s) of the Resource-derived object in question");
220 m.def(
"d2d_receiver", &
d2d_receiver,
"Get receiver associated with DetectorToDaqConnection");
221 m.def(
"d2d_senders", &
d2d_senders,
"Get senders associated with DetectorToDaqConnection");
222 m.def(
"d2d_streams", &
d2d_streams,
"Get streams associated with DetectorToDaqConnection");
223 m.def(
"resourceset_contains", &
resourceset_contains,
"Get contained Resources from ResourceSet");
Defines base class for cache of template objects.
void get(const std::string &class_name, const std::string &id, ConfigObject &object, unsigned long rlevel=0, const std::vector< std::string > *rclasses=0)
Get object by class name and object id (multi-thread safe).
const std::string & UID() const noexcept
virtual const DetDataReceiver * receiver() const =0
void parents(const dunedaq::confmodel::Session &session, std::list< std::vector< const dunedaq::confmodel::Resource * > > &parents) const
bool is_disabled(const dunedaq::confmodel::ResourceTree &session) const
std::vector< std::string > rc_application_construct_commandline_parameters(Configuration &db, const std::string &session_id, const std::string &app_id)
std::vector< std::string > d2d_senders(Configuration &db, const std::string &d2d_id)
std::vector< ObjectLocator > session_get_enabled_applications(Configuration &db, const std::string &session_name)
std::vector< std::vector< ObjectLocator > > component_get_parents(Configuration &db, const std::string &session_id, const std::string &component_id)
std::vector< std::string > d2d_streams(Configuration &db, const std::string &d2d_id)
std::vector< std::string > daq_application_construct_commandline_parameters(Configuration &db, const std::string &session_id, const std::string &app_id)
bool component_disabled(Configuration &db, const std::string &session_id, const std::string &component_id)
std::vector< std::string > daq_application_get_used_hostresources(Configuration &db, const std::string &app_id)
void disable_component(Configuration &db, const std::string &session_id, const std::string &component_id)
std::vector< std::string > resourceset_contains(Configuration &db, const std::string &res_id)
std::vector< ObjectLocator > session_get_all_applications(Configuration &db, const std::string &session_name)
void enable_component(Configuration &db, const std::string &session_id, const std::string &component_id)
void register_dal_methods(py::module &m)
std::string d2d_receiver(Configuration &db, const std::string &d2d_id)
const std::string class_name
ObjectLocator(const std::string &id_arg, const std::string &class_name_arg)