File indexing completed on 2025-03-23 15:57:26
0001 #include "CondCore/CondDB/interface/ConnectionPool.h"
0002 #include "CondCore/CondDB/interface/Utils.h"
0003 #include "CondCore/CondDB/interface/IOVEditor.h"
0004 #include "CondCore/CondDB/interface/IOVProxy.h"
0005
0006 #include "CondCore/Utilities/interface/Utilities.h"
0007 #include "CondCore/Utilities/interface/CondDBTools.h"
0008 #include <iostream>
0009
0010 #include <sstream>
0011
0012 namespace cond {
0013
0014 class ImportUtilities : public cond::Utilities {
0015 public:
0016 ImportUtilities();
0017 ~ImportUtilities() override;
0018 int execute() override;
0019 };
0020 }
0021
0022 cond::ImportUtilities::ImportUtilities() : Utilities("conddb_import") {
0023 addConnectOption("fromConnect", "f", "source connection string (optional, default=connect)");
0024 addConnectOption("connect", "c", "target connection string (required)");
0025 addAuthenticationOptions();
0026 addOption<std::string>("inputTag", "i", "source tag (optional - default=tag)");
0027 addOption<std::string>("tag", "t", "destination tag (required)");
0028 addOption<cond::Time_t>("begin", "b", "lower bound of interval to import (optional, default=1)");
0029 addOption<cond::Time_t>("end", "e", "upper bound of interval to import (optional, default=infinity)");
0030 addOption<std::string>("description", "x", "User text ( for new tags, optional )");
0031 addOption<bool>("override",
0032 "o",
0033 "Override the existing iovs in the dest tag, for the selected interval ( optional, default=false)");
0034 addOption<bool>("reserialize", "r", "De-serialize in reading and serialize in writing (optional, default=false)");
0035 addOption<bool>("forceInsert", "K", "force the insert for all synchronization types (optional, default=false)");
0036 addOption<std::string>("editingNote", "N", "editing note (required with forceInsert)");
0037 }
0038
0039 cond::ImportUtilities::~ImportUtilities() {}
0040
0041 int cond::ImportUtilities::execute() {
0042 std::string destConnect = getOptionValue<std::string>("connect");
0043 std::string sourceConnect = destConnect;
0044 if (hasOptionValue("fromConnect"))
0045 sourceConnect = getOptionValue<std::string>("fromConnect");
0046
0047 std::string inputTag = getOptionValue<std::string>("inputTag");
0048 ;
0049 std::string tag = inputTag;
0050 if (hasOptionValue("tag")) {
0051 tag = getOptionValue<std::string>("tag");
0052 }
0053
0054 std::string description("");
0055 if (hasOptionValue("description"))
0056 description = getOptionValue<std::string>("description");
0057 bool override = hasOptionValue("override");
0058 bool reserialize = hasOptionValue("reserialize");
0059 bool forceInsert = hasOptionValue("forceInsert");
0060 std::string editingNote("");
0061 if (hasOptionValue("editingNote"))
0062 editingNote = getOptionValue<std::string>("editingNote");
0063 if (forceInsert && editingNote.empty()) {
0064 std::cout << "ERROR: \'forceInsert\' mode requires an \'editingNote\' to be provided." << std::endl;
0065 return -1;
0066 }
0067
0068 cond::Time_t begin = 1;
0069 if (hasOptionValue("begin"))
0070 begin = getOptionValue<cond::Time_t>("begin");
0071 cond::Time_t end = cond::time::MAX_VAL;
0072 if (hasOptionValue("end"))
0073 end = getOptionValue<cond::Time_t>("end");
0074 if (begin > end)
0075 throwException("Begin time can't be greater than end time.", "ImportUtilities::execute");
0076
0077 persistency::ConnectionPool connPool;
0078 if (hasOptionValue("authPath")) {
0079 connPool.setAuthenticationPath(getOptionValue<std::string>("authPath"));
0080 }
0081 connPool.configure();
0082 std::cout << "# Running import tool for conditions on release " << cond::currentCMSSWVersion() << std::endl;
0083 std::cout << "# Connecting to source database on " << sourceConnect << std::endl;
0084 persistency::Session sourceSession = connPool.createSession(sourceConnect);
0085
0086 std::cout << "# Opening session on destination database..." << std::endl;
0087 persistency::Session destSession = connPool.createSession(destConnect, true);
0088
0089 std::cout << "# destination tag is " << tag << std::endl;
0090
0091 size_t nimported = importIovs(inputTag,
0092 sourceSession,
0093 tag,
0094 destSession,
0095 begin,
0096 end,
0097 description,
0098 editingNote,
0099 override,
0100 reserialize,
0101 forceInsert);
0102 std::cout << "# " << nimported << " iov(s) imported. " << std::endl;
0103
0104 return 0;
0105 }
0106
0107 int main(int argc, char** argv) {
0108 cond::ImportUtilities utilities;
0109 return utilities.run(argc, argv);
0110 }