File indexing completed on 2023-10-25 09:36:22
0001 #include "CondCore/CondDB/interface/CredentialStore.h"
0002 #include "CondCore/CondDB/interface/Auth.h"
0003
0004 #include <cstdlib>
0005
0006 namespace cond {
0007
0008 std::tuple<std::string, std::string, std::string> getDbCredentials(const std::string& connectionString,
0009 int accessType,
0010 const std::string& authPath) {
0011 std::string ap = authPath;
0012 if (ap.empty()) {
0013 ap = std::string(std::getenv(cond::auth::COND_AUTH_PATH));
0014 }
0015 auto ret = std::make_tuple(std::string(""), std::string(""), std::string(""));
0016 if (!ap.empty()) {
0017 CredentialStore credDb;
0018 credDb.setUpForConnectionString(connectionString, ap);
0019 std::string role(cond::auth::s_roleCodeArray[accessType].first);
0020 auto creds = credDb.getUserCredentials(connectionString, role);
0021 ret = std::tie(credDb.keyPrincipalName(), creds.first, creds.second);
0022 }
0023 return ret;
0024 }
0025
0026 }
0027
0028 #include <pybind11/pybind11.h>
0029
0030 namespace py = pybind11;
0031
0032 PYBIND11_MODULE(libCondDBPyBind11Interface, m) {
0033 m.def("get_credentials_from_db", &cond::getDbCredentials, "Get db credentials for a connection string");
0034 m.attr("default_role") = pybind11::int_(int(cond::auth::DEFAULT_ROLE));
0035 m.attr("reader_role") = pybind11::int_(int(cond::auth::READER_ROLE));
0036 m.attr("writer_role") = pybind11::int_(int(cond::auth::WRITER_ROLE));
0037 m.attr("admin_role") = pybind11::int_(int(cond::auth::ADMIN_ROLE));
0038 }