Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:16:05

0001 #include "CDBUtils.h"
0002 
0003 #include "SphenixClient.h"
0004 
0005 #include <nlohmann/json.hpp>
0006 
0007 #include <iostream>
0008 #include <map>
0009 #include <set>
0010 #include <stdexcept>  // for out_of_range
0011 #include <tuple>
0012 #include <utility>  // for pair, make_pair
0013 
0014 CDBUtils::CDBUtils()
0015   : cdbclient(new SphenixClient())
0016 {
0017 }
0018 
0019 CDBUtils::CDBUtils(const std::string &globaltag)
0020   : cdbclient(new SphenixClient(globaltag))
0021 {
0022 }
0023 
0024 int CDBUtils::createGlobalTag(const std::string &tagname)
0025 {
0026   nlohmann::json resp = cdbclient->createGlobalTag(tagname);
0027   int iret = resp["code"];
0028   nlohmann::json msgcont = resp["msg"];
0029   std::cout << msgcont << std::endl;
0030   return iret;
0031 }
0032 
0033 int CDBUtils::deleteGlobalTag(const std::string &tagname)
0034 {
0035   nlohmann::json resp = cdbclient->deleteGlobalTag(tagname);
0036   int iret = resp["code"];
0037   nlohmann::json msgcont = resp["msg"];
0038   std::cout << msgcont << std::endl;
0039   return iret;
0040 }
0041 
0042 int CDBUtils::lockGlobalTag(const std::string &tagname)
0043 {
0044   nlohmann::json resp = cdbclient->lockGlobalTag(tagname);
0045   int iret = resp["code"];
0046   nlohmann::json msgcont = resp["msg"];
0047   std::cout << msgcont << std::endl;
0048   return iret;
0049 }
0050 
0051 int CDBUtils::unlockGlobalTag(const std::string &tagname)
0052 {
0053   nlohmann::json resp = cdbclient->unlockGlobalTag(tagname);
0054   int iret = resp["code"];
0055   nlohmann::json msgcont = resp["msg"];
0056   std::cout << "message: " << msgcont << std::endl;
0057   return iret;
0058 }
0059 
0060 void CDBUtils::clearCache()
0061 {
0062   nlohmann::json resp = cdbclient->clearCache();
0063   std::cout << resp["msg"] << std::endl;
0064   return;
0065 }
0066 
0067 std::string CDBUtils::getUrl(const std::string &type, uint64_t iov)
0068 {
0069   nlohmann::json resp = cdbclient->getUrl(type, iov);
0070   return resp["msg"];
0071 }
0072 
0073 int CDBUtils::createPayloadType(const std::string &pt)
0074 {
0075   return cdbclient->createDomain(pt);
0076 }
0077 
0078 void CDBUtils::listPayloadIOVs(uint64_t iov)
0079 {
0080   nlohmann::json resp = cdbclient->getPayloadIOVs(iov);
0081   if (resp["code"] != 0)
0082   {
0083     std::cout << resp["msg"] << std::endl;
0084     return;
0085   }
0086   nlohmann::json payload_iovs = resp["msg"];
0087   std::map<std::string, std::tuple<std::string, uint64_t, uint64_t>> iovs;
0088   for (auto &[pt, val] : payload_iovs.items())
0089   {
0090     std::string url = val["payload_url"];
0091     uint64_t bts = val["minor_iov_start"];
0092     uint64_t ets = val["minor_iov_end"];
0093     iovs.insert(std::make_pair(pt, std::make_tuple(url, bts, ets)));
0094   }
0095   for (const auto &it : iovs)
0096   {
0097     std::cout << it.first << ": " << std::get<0>(it.second)
0098               << ", begin ts: " << std::get<1>(it.second)
0099               << ", end ts: " << std::get<2>(it.second)
0100               << std::endl;
0101   }
0102   return;
0103 }
0104 
0105 int CDBUtils::cloneGlobalTag(const std::string &source, const std::string &target)
0106 {
0107   nlohmann::json resp = cdbclient->getGlobalTags();
0108   nlohmann::json msgcont = resp["msg"];
0109   std::set<std::string> gtset;
0110   for (auto &it : msgcont.items())
0111   {
0112     std::string exist_gt = it.value().at("name");
0113     gtset.insert(exist_gt);
0114   }
0115   if (gtset.find(source) == gtset.end())
0116   {
0117     std::cout << "source tag " << source << " does not exist" << std::endl;
0118     return -1;
0119   }
0120   if (gtset.find(target) != gtset.end())
0121   {
0122     std::cout << "Target tag " << target << " exists, delete it first" << std::endl;
0123     return -1;
0124   }
0125   resp = cdbclient->cloneGlobalTag(source, target);
0126   int iret = resp["code"];
0127   std::cout << resp["msg"] << std::endl;
0128   return iret;
0129 }
0130 
0131 void CDBUtils::listGlobalTags()
0132 {
0133   nlohmann::json resp = cdbclient->getGlobalTags();
0134   nlohmann::json msgcont = resp["msg"];
0135   std::set<std::string> globaltags;
0136   for (auto &it : msgcont.items())
0137   {
0138     std::string exist_gt = it.value().at("name");
0139     globaltags.insert(exist_gt);
0140   }
0141   for (const auto &it : globaltags)
0142   {
0143     std::cout << "global tag: " << it << std::endl;
0144   }
0145   return;
0146 }
0147 
0148 void CDBUtils::listPayloadTypes()
0149 {
0150   nlohmann::json resp = cdbclient->getPayloadTypes();
0151   nlohmann::json msgcont = resp["msg"];
0152   std::set<std::string> payloadtypes;
0153   for (auto &it : msgcont.items())
0154   {
0155     std::string exist_pl = it.value().at("name");
0156     payloadtypes.insert(exist_pl);
0157   }
0158   for (const auto &it : payloadtypes)
0159   {
0160     std::cout << "payload type: " << it << std::endl;
0161   }
0162   return;
0163 }
0164 
0165 int CDBUtils::insertPayload(const std::string &pl_type, const std::string &file_url, uint64_t iov_start)
0166 {
0167   if (!isGlobalTagSet())
0168   {
0169     std::cout << "No Global Tag set" << std::endl;
0170     return -1;
0171   }
0172   nlohmann::json resp = cdbclient->insertPayload(pl_type, file_url, iov_start);
0173   int iret = resp["code"];
0174   if (iret != 0)
0175   {
0176     std::cout << "Error inserting payload " << file_url << ", msg: " << resp["msg"] << std::endl;
0177   }
0178   else
0179   {
0180     std::cout << resp["msg"] << std::endl;
0181   }
0182   return iret;
0183 }
0184 
0185 int CDBUtils::insertPayload(const std::string &pl_type, const std::string &file_url, uint64_t iov_start, uint64_t iov_end)
0186 {
0187   if (!isGlobalTagSet())
0188   {
0189     std::cout << "No Global Tag set" << std::endl;
0190     return -1;
0191   }
0192   nlohmann::json resp = cdbclient->insertPayload(pl_type, file_url, iov_start, iov_end);
0193   int iret = resp["code"];
0194   if (iret != 0)
0195   {
0196     std::cout << "Error inserting payload " << file_url << ", msg: " << resp["msg"] << std::endl;
0197   }
0198   else
0199   {
0200     std::cout << resp["msg"] << std::endl;
0201   }
0202   return iret;
0203 }
0204 
0205 int CDBUtils::setGlobalTag(const std::string &tagname)
0206 {
0207   nlohmann::json resp = cdbclient->setGlobalTag(tagname);
0208   int iret = resp["code"];
0209   std::cout << "message: " << resp["msg"] << std::endl;
0210   return iret;
0211 }
0212 
0213 bool CDBUtils::isGlobalTagSet()
0214 {
0215   return cdbclient->isGlobalTagSet();
0216 }
0217 
0218 void CDBUtils::Verbosity(int i)
0219 {
0220   if (cdbclient)
0221   {
0222     cdbclient->Verbosity(i);
0223   }
0224   m_Verbosity = i;
0225 }
0226 
0227 int CDBUtils::deletePayloadIOV(const std::string &pl_type, uint64_t iov_start)
0228 {
0229   nlohmann::json resp = cdbclient->deletePayloadIOV(pl_type, iov_start);
0230   int iret = resp["code"];
0231   if (iret != 0)
0232   {
0233     std::cout << "Error deleting payload iov, type " << pl_type
0234               << ", iov_start: " << iov_start
0235               << ", msg: " << resp["msg"] << std::endl;
0236   }
0237   else
0238   {
0239     std::cout << resp["msg"] << std::endl;
0240   }
0241   return iret;
0242 }
0243 
0244 int CDBUtils::deletePayloadIOV(const std::string &pl_type, uint64_t iov_start, uint64_t iov_end)
0245 {
0246   nlohmann::json resp = cdbclient->deletePayloadIOV(pl_type, iov_start, iov_end);
0247   int iret = resp["code"];
0248   if (iret != 0)
0249   {
0250     std::cout << "Error deleting payload iov, type " << pl_type
0251               << ", iov_start: " << iov_start
0252               << ", iov_end: " << iov_end
0253               << ", msg: " << resp["msg"] << std::endl;
0254   }
0255   else
0256   {
0257     std::cout << resp["msg"] << std::endl;
0258   }
0259   return iret;
0260 }