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 ImportUtilities : public cond::Utilities {
0015   public:
0016     ImportUtilities();
0017     ~ImportUtilities() override;
0018     int execute() override;
0019   };
0020 }  // namespace cond
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 }