Skip to content

Commit 34d166d

Browse files
authored
Merge pull request #86 from DUNE-DAQ/gcrone/resourcetree-pybind
Add python binding for ResourceSet::contained_resources
2 parents ab27c8b + 3764d2f commit 34d166d

File tree

1 file changed

+35
-24
lines changed

1 file changed

+35
-24
lines changed

pybindsrc/dal_methods.cpp

Lines changed: 35 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,9 @@ namespace dunedaq::confmodel::python {
3838

3939

4040
std::vector<ObjectLocator>
41-
session_get_all_applications(const Configuration& db,
41+
session_get_all_applications(Configuration& db,
4242
const std::string& session_name) {
43-
auto session=const_cast<Configuration&>(db).get<Session>(session_name);
43+
auto session=db.get<Session>(session_name);
4444
std::vector<ObjectLocator> apps;
4545
for (auto app : session->all_applications()) {
4646
apps.push_back({app->UID(),app->class_name()});
@@ -49,33 +49,33 @@ namespace dunedaq::confmodel::python {
4949
}
5050

5151
std::vector<ObjectLocator>
52-
session_get_enabled_applications(const Configuration& db,
52+
session_get_enabled_applications(Configuration& db,
5353
const std::string& session_name) {
54-
auto session=const_cast<Configuration&>(db).get<Session>(session_name);
54+
auto session=db.get<Session>(session_name);
5555
std::vector<ObjectLocator> apps;
5656
for (auto app : session->enabled_applications()) {
5757
apps.push_back({app->UID(),app->class_name()});
5858
}
5959
return apps;
6060
}
6161

62-
bool component_disabled(const Configuration& db,
62+
bool component_disabled(Configuration& db,
6363
const std::string& session_id,
6464
const std::string& component_id) {
65-
const dunedaq::confmodel::Session* session_ptr = const_cast<Configuration&>(db).get<dunedaq::confmodel::Session>(session_id);
66-
const dunedaq::confmodel::Resource* component_ptr = const_cast<Configuration&>(db).get<dunedaq::confmodel::Resource>(component_id);
65+
const dunedaq::confmodel::Session* session_ptr = db.get<dunedaq::confmodel::Session>(session_id);
66+
const dunedaq::confmodel::Resource* component_ptr = db.get<dunedaq::confmodel::Resource>(component_id);
6767
if (component_ptr == nullptr) {
6868
return false;
6969
}
7070
return component_ptr->is_disabled(*session_ptr);
7171
}
7272

7373

74-
std::vector<std::vector<ObjectLocator>> component_get_parents(const Configuration& db,
74+
std::vector<std::vector<ObjectLocator>> component_get_parents(Configuration& db,
7575
const std::string& session_id,
7676
const std::string& component_id) {
77-
const dunedaq::confmodel::Session* session_ptr = const_cast<Configuration&>(db).get<dunedaq::confmodel::Session>(session_id);
78-
const dunedaq::confmodel::Resource* component_ptr = const_cast<Configuration&>(db).get<dunedaq::confmodel::Resource>(component_id);
77+
const dunedaq::confmodel::Session* session_ptr = db.get<dunedaq::confmodel::Session>(session_id);
78+
const dunedaq::confmodel::Resource* component_ptr = db.get<dunedaq::confmodel::Resource>(component_id);
7979

8080
std::list<std::vector<const dunedaq::confmodel::Resource*>> parents;
8181
std::vector<std::vector<ObjectLocator>> parent_ids;
@@ -94,20 +94,20 @@ namespace dunedaq::confmodel::python {
9494
return parent_ids;
9595
}
9696

97-
std::vector<std::string> daq_application_get_used_hostresources(const Configuration& db, const std::string& app_id) {
98-
auto app = const_cast<Configuration&>(db).get<dunedaq::confmodel::DaqApplication>(app_id);
97+
std::vector<std::string> daq_application_get_used_hostresources(Configuration& db, const std::string& app_id) {
98+
auto app = db.get<dunedaq::confmodel::DaqApplication>(app_id);
9999
std::vector<std::string> resources;
100100
for (auto res : app->get_used_hostresources()) {
101101
resources.push_back(res->UID());
102102
}
103103
return resources;
104104
}
105105

106-
std::vector<std::string> daq_application_construct_commandline_parameters(const Configuration& db,
106+
std::vector<std::string> daq_application_construct_commandline_parameters(Configuration& db,
107107
const std::string& session_id,
108108
const std::string& app_id) {
109-
const auto* app = const_cast<Configuration&>(db).get<dunedaq::confmodel::DaqApplication>(app_id);
110-
const auto* session = const_cast<Configuration&>(db).get<dunedaq::confmodel::Session>(session_id);
109+
const auto* app = db.get<dunedaq::confmodel::DaqApplication>(app_id);
110+
const auto* session = db.get<dunedaq::confmodel::Session>(session_id);
111111
return app->construct_commandline_parameters(db, session);
112112
}
113113

@@ -120,21 +120,19 @@ namespace dunedaq::confmodel::python {
120120
}
121121

122122

123-
std::string d2d_receiver(const Configuration& db,
123+
std::string d2d_receiver(Configuration& db,
124124
const std::string& d2d_id) {
125-
const auto* d2d = const_cast<Configuration&>(db)
126-
.get<dunedaq::confmodel::DetectorToDaqConnection>(d2d_id);
125+
const auto* d2d = db.get<dunedaq::confmodel::DetectorToDaqConnection>(d2d_id);
127126
if (d2d == nullptr) {
128127
return "";
129128
}
130129
return d2d->receiver()->UID();
131130
}
132131

133-
std::vector<std::string> d2d_senders(const Configuration& db,
132+
std::vector<std::string> d2d_senders(Configuration& db,
134133
const std::string& d2d_id) {
135134
std::vector<std::string> senders;
136-
const auto* d2d = const_cast<Configuration&>(db)
137-
.get<dunedaq::confmodel::DetectorToDaqConnection>(d2d_id);
135+
const auto* d2d = db.get<dunedaq::confmodel::DetectorToDaqConnection>(d2d_id);
138136
if (d2d != nullptr) {
139137
for (auto sender: d2d->senders()) {
140138
senders.push_back(sender->UID());
@@ -143,11 +141,10 @@ namespace dunedaq::confmodel::python {
143141
return senders;
144142
}
145143

146-
std::vector<std::string> d2d_streams(const Configuration& db,
144+
std::vector<std::string> d2d_streams(Configuration& db,
147145
const std::string& d2d_id) {
148146
std::vector<std::string> streams;
149-
const auto* d2d = const_cast<Configuration&>(db)
150-
.get<dunedaq::confmodel::DetectorToDaqConnection>(d2d_id);
147+
const auto* d2d = db.get<dunedaq::confmodel::DetectorToDaqConnection>(d2d_id);
151148
if (d2d != nullptr) {
152149
for (auto stream: d2d->streams()) {
153150
streams.push_back(stream->UID());
@@ -156,6 +153,19 @@ namespace dunedaq::confmodel::python {
156153
return streams;
157154
}
158155

156+
std::vector<std::string>
157+
resourceset_contains(Configuration& db,
158+
const std::string& res_id) {
159+
std::vector<std::string> resources;
160+
auto res_set = db.get<dunedaq::confmodel::ResourceSet>(res_id);
161+
if (res_set != nullptr) {
162+
for (auto res: res_set->contained_resources()) {
163+
resources.push_back(res->UID());
164+
}
165+
}
166+
return resources;
167+
}
168+
159169

160170
void
161171
register_dal_methods(py::module& m)
@@ -178,6 +188,7 @@ register_dal_methods(py::module& m)
178188
m.def("d2d_receiver", &d2d_receiver, "Get receiver associated with DetectorToDaqConnection");
179189
m.def("d2d_senders", &d2d_senders, "Get senders associated with DetectorToDaqConnection");
180190
m.def("d2d_streams", &d2d_streams, "Get streams associated with DetectorToDaqConnection");
191+
m.def("resourceset_contains", &resourceset_contains, "Get contained Resources from ResourceSet");
181192
}
182193

183194
} // namespace dunedaq::confmodel::python

0 commit comments

Comments
 (0)