File indexing completed on 2023-03-17 10:46:27
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 CopyIovUtilities : public cond::Utilities {
0015 public:
0016 CopyIovUtilities();
0017 ~CopyIovUtilities() override;
0018 int execute() override;
0019 };
0020 }
0021
0022 cond::CopyIovUtilities::CopyIovUtilities() : Utilities("conddb_copy_iov") {
0023 addConnectOption("connect", "c", "target connection string (required)");
0024 addAuthenticationOptions();
0025 addOption<std::string>("inputTag", "i", "source tag (optional)");
0026 addOption<std::string>("tag", "t", "destination tag (optional)");
0027 addOption<cond::Time_t>("sourceSince", "s", "since time of the iov to copy (required)");
0028 addOption<cond::Time_t>("destSince", "d", "since time of the destination iov (optional, default=sourceSince)");
0029 addOption<std::string>("description", "x", "user text (for new tags, optional)");
0030 }
0031
0032 cond::CopyIovUtilities::~CopyIovUtilities() {}
0033
0034 int cond::CopyIovUtilities::execute() {
0035 bool debug = hasDebug();
0036 std::string connect = getOptionValue<std::string>("connect");
0037
0038
0039 std::string inputTag = getOptionValue<std::string>("inputTag");
0040 std::string tag = inputTag;
0041 if (hasOptionValue("tag"))
0042 tag = getOptionValue<std::string>("tag");
0043
0044 cond::Time_t sourceSince = getOptionValue<cond::Time_t>("sourceSince");
0045 cond::Time_t destSince = sourceSince;
0046 if (hasOptionValue("destSince"))
0047 destSince = getOptionValue<cond::Time_t>("destSince");
0048
0049 std::string description("");
0050 if (hasOptionValue("description"))
0051 description = getOptionValue<std::string>("description");
0052
0053 persistency::ConnectionPool connPool;
0054 if (hasOptionValue("authPath")) {
0055 connPool.setAuthenticationPath(getOptionValue<std::string>("authPath"));
0056 }
0057 connPool.configure();
0058
0059 std::cout << "# Connecting to source database on " << connect << std::endl;
0060 persistency::Session session = connPool.createSession(connect, true);
0061
0062 std::cout << "# input tag is " << inputTag << std::endl;
0063 std::cout << "# destination tag is " << tag << std::endl;
0064
0065 bool imported = copyIov(session, inputTag, tag, sourceSince, destSince, description);
0066
0067 if (imported) {
0068 std::cout << "# 1 iov copied. " << std::endl;
0069 }
0070 return 0;
0071 }
0072
0073 int main(int argc, char** argv) {
0074 cond::CopyIovUtilities utilities;
0075 return utilities.run(argc, argv);
0076 }