Skip to content

Commit 4b3b3ad

Browse files
committed
implement CCDB and QCDB service access in Actor
1 parent 7ec0024 commit 4b3b3ad

File tree

3 files changed

+57
-5
lines changed

3 files changed

+57
-5
lines changed

Framework/include/QualityControl/Actor.h

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,15 @@ namespace o2::bkp {
3030
enum class DplProcessType;
3131
}
3232

33+
34+
namespace o2::quality_control::repository {
35+
class DatabaseInterface;
36+
}
37+
38+
namespace o2::ccdb {
39+
class CCDBManagerInstance;
40+
}
41+
3342
namespace o2::quality_control::core {
3443

3544

@@ -46,6 +55,11 @@ void initBookkeeping(std::string_view url);
4655
void startBookkeeping(int runNumber, std::string_view actorName, std::string_view detectorName, const o2::bkp::DplProcessType& processType, std::string_view args);
4756
Bookkeeping& getBookkeeping();
4857

58+
std::shared_ptr<repository::DatabaseInterface> initRepository(const std::unordered_map<std::string, std::string>& config);
59+
60+
void initCCDB(const std::string& url);
61+
ccdb::CCDBManagerInstance& getCCDB();
62+
4963
}
5064

5165

@@ -132,7 +146,6 @@ class Actor
132146
detectorName = std::string{concreteActor().getDetectorName()};
133147
}
134148

135-
// init services
136149
if constexpr (requiresService<Service::InfoLogger>()) {
137150
std::string facility;
138151
if constexpr (runsUserCode<traits>()) {
@@ -150,7 +163,12 @@ class Actor
150163
if constexpr (requiresService<Service::Bookkeeping>()) {
151164
impl::initBookkeeping(mServicesConfig.bookkeepingUrl);
152165
}
153-
// todo: init the rest, such as QCDB
166+
if constexpr (requiresService<Service::QCDB>()) {
167+
mRepository = impl::initRepository(mServicesConfig.database);
168+
}
169+
if constexpr (requiresService<Service::CCDB>()) {
170+
impl::initCCDB(mServicesConfig.conditionDBUrl);
171+
}
154172
}
155173

156174
void initDplCallbacks(framework::InitContext& ictx)
@@ -272,13 +290,24 @@ class Actor
272290
return impl::getBookkeeping();
273291
}
274292

293+
repository::DatabaseInterface& getRepository() requires (requiresService<Service::QCDB>())
294+
{
295+
return *mRepository;
296+
}
297+
298+
ccdb::CCDBManagerInstance& getCCDB() requires (requiresService<Service::QCDB>())
299+
{
300+
return impl::getCCDB();
301+
}
302+
275303
const Activity& getActivity() const { return mActivity; }
276304

277305
private:
278306
Activity mActivity;
279307
const ServicesConfig mServicesConfig;
280308

281309
std::shared_ptr<monitoring::Monitoring> mMonitoring;
310+
std::shared_ptr<repository::DatabaseInterface> mRepository;
282311
};
283312

284313

Framework/include/QualityControl/ActorTraits.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@ enum class Service {
5252
Monitoring,
5353
InfoLogger,
5454
CCDB,
55-
Bookkeeping
55+
Bookkeeping,
56+
QCDB
5657
};
5758

5859
template<typename ActorTraitsT, Service S>

Framework/src/Actor.cxx

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@
66
#include "QualityControl/Actor.h"
77

88
#include "QualityControl/Bookkeeping.h"
9+
#include "QualityControl/DatabaseFactory.h"
910
#include <Monitoring/Monitoring.h>
1011
#include <Monitoring/MonitoringFactory.h>
11-
12+
#include <CCDB/BasicCCDBManager.h>
1213

1314
namespace o2::quality_control::core
1415
{
1516

16-
1717
namespace impl
1818
{
1919
std::shared_ptr<monitoring::Monitoring> initMonitoring(std::string_view url, std::string_view detector)
@@ -48,6 +48,28 @@ Bookkeeping& getBookkeeping()
4848
return Bookkeeping::getInstance();
4949
}
5050

51+
std::shared_ptr<quality_control::repository::DatabaseInterface> initRepository(const std::unordered_map<std::string, std::string>& config)
52+
{
53+
auto db = quality_control::repository::DatabaseFactory::create(config.at("implementation"));
54+
assert(db != nullptr);
55+
db->connect(config);
56+
ILOG(Info, Devel) << "Database that is going to be used > Implementation : " << config.at("implementation") << " / Host : " << config.at("host") << ENDM;
57+
return std::move(db);
58+
}
59+
60+
void initCCDB(const std::string& url)
61+
{
62+
auto& mgr = o2::ccdb::BasicCCDBManager::instance();
63+
mgr.setURL(url);
64+
mgr.setFatalWhenNull(false);
65+
}
66+
67+
ccdb::CCDBManagerInstance& getCCDB()
68+
{
69+
return o2::ccdb::BasicCCDBManager::instance();
70+
}
71+
72+
5173
}
5274

5375
}

0 commit comments

Comments
 (0)