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 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 std::string connect = getOptionValue<std::string>("connect");
0036
0037
0038 std::string inputTag = getOptionValue<std::string>("inputTag");
0039 std::string tag = inputTag;
0040 if (hasOptionValue("tag"))
0041 tag = getOptionValue<std::string>("tag");
0042
0043 cond::Time_t sourceSince = getOptionValue<cond::Time_t>("sourceSince");
0044 cond::Time_t destSince = sourceSince;
0045 if (hasOptionValue("destSince"))
0046 destSince = getOptionValue<cond::Time_t>("destSince");
0047
0048 std::string description("");
0049 if (hasOptionValue("description"))
0050 description = getOptionValue<std::string>("description");
0051
0052 persistency::ConnectionPool connPool;
0053 if (hasOptionValue("authPath")) {
0054 connPool.setAuthenticationPath(getOptionValue<std::string>("authPath"));
0055 }
0056 connPool.configure();
0057
0058 std::cout << "# Connecting to source database on " << connect << std::endl;
0059 persistency::Session session = connPool.createSession(connect, true);
0060
0061 std::cout << "# input tag is " << inputTag << std::endl;
0062 std::cout << "# destination tag is " << tag << std::endl;
0063
0064 bool imported = copyIov(session, inputTag, tag, sourceSince, destSince, description);
0065
0066 if (imported) {
0067 std::cout << "# 1 iov copied. " << std::endl;
0068 }
0069 return 0;
0070 }
0071
0072 int main(int argc, char** argv) {
0073 cond::CopyIovUtilities utilities;
0074 return utilities.run(argc, argv);
0075 }