Back to home page

Project CMSSW displayed by LXR

 
 

    


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 }  // namespace cond
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   // this is mandatory
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 }