CMS 3D CMS Logo

Functions | Variables
command_line Namespace Reference

Functions

def copy_global_tag (arguments)
 
def copy_tag (arguments)
 
def diff_of_gts (arguments)
 
def diff_of_tags (arguments)
 
def list_object (arguments)
 
def parse_command_line (arguments)
 
def search (arguments)
 

Variables

 dest_tag
 
 end
 
 input_tag
 
 start
 

Detailed Description

Command line module that the "command line" script.

Works by taking the main keyword (first command given to the script),
passing that to the function that will deal with that action, along with the following arguments as parameters for that function.

Function Documentation

◆ copy_global_tag()

def command_line.copy_global_tag (   arguments)

Definition at line 139 of file command_line.py.

References submitPVValidationJobs.__init__(), writedatasetfile.args, querying.connect(), data, and resolutioncreator_cfi.object.

139 def copy_global_tag(arguments):
140  raise NotImplementedError("Copying Global Tags is currently not supported for this transition command-line interface for CondDBFW.")
141 
142  # set up connection
143  source_connection = querying.connect(arguments.db, secrets=arguments.secrets, mode=arguments.mode, map_blobs=True)
144  dest_connection = querying.connect(arguments.dest_db, secrets=arguments.secrets, mode=arguments.mode, map_blobs=True)
145 
146  # get CondDBFW Global Tag object
147  global_tag = source_connection.global_tag(name=arguments.input_gt)
148  if global_tag == None:
149  raise Exception("Source Global Tag doesn't exist.")
150 
151  tag_names = global_tag.tags().get_members("tag_name").data()
152  tags = source_connection.tag(name=tags)
153 
154  # copy global tag first
155  global_tag.insertion_time = datetime.datetime.utcnow()
156  global_tag.validity = -1
157  dest_connection.write_and_commit(global_tag)
158 
159  for tag in tags:
160  # create temporary argument class
161  class args(object):
162  def __init__(self):
163  self.input_tag = tag.name
164  self.dest_tag = tag.name
165  self.start = 1
166  self.end = tag.latest_iov()+1
167  for attribute in dir(arguments):
168  self.__dict__[attribute] = getattr(arguments, attribute)
169 
170  copy_tag(args())
171 
def connect(connection_data, mode="r", map_blobs=False, secrets=None, pooling=True)
Definition: querying.py:453
def __init__(self, dataset, job_number, job_id, job_name, isDA, isMC, applyBOWS, applyEXTRACOND, extraconditions, runboundary, lumilist, intlumi, maxevents, gt, allFromGT, alignmentDB, alignmentTAG, apeDB, apeTAG, bowDB, bowTAG, vertextype, tracktype, refittertype, ttrhtype, applyruncontrol, ptcut, CMSSW_dir, the_dir)
def copy_global_tag(arguments)
def copy_tag(arguments)
Definition: command_line.py:85
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79

◆ copy_tag()

def command_line.copy_tag (   arguments)

Definition at line 85 of file command_line.py.

References querying.connect(), data, and print().

85 def copy_tag(arguments):
86 
87  # set up connection
88  source_connection = querying.connect(arguments.db, secrets=arguments.secrets, mode=arguments.mode, map_blobs=True)
89  dest_connection = querying.connect(arguments.dest_db, secrets=arguments.secrets, mode=arguments.mode, map_blobs=True)
90 
91  # get tag from the source database, adjust it, and copy it (with the defined IOV range) to the destination database
92 
93  print("Reading source Tag.")
94  source_tag = source_connection.tag(name=arguments.input_tag)
95  if source_tag == None:
96  raise Exception("Source Tag doesn't exist.")
97 
98  # get all IOVs within the range [start, end]
99  print("Reading source IOVs.")
100  since_range = source_connection.range(arguments.start, arguments.end)
101  source_iovs = source_tag.iovs(since=since_range).data()
102 
103  # get hashes of all IOVs contained in the Tag in the source database
104  print("Reading source Payloads.")
105  hashes = source_tag.iovs().get_members("payload_hash").data()
106  payloads = source_connection.payload(hash=hashes)
107 
108  print("Writing to destination database...")
109 
110  # set end_of_validity to -1 because sqlite doesn't support long ints
111  source_tag.end_of_validity = -1
112  source_tag.name = arguments.dest_tag
113  source_tag.modification_time = datetime.datetime.utcnow()
114 
115  # create new iovs
116  new_iovs = []
117  for iov in source_iovs:
118  new_iovs.append(dest_connection.models["iov"](iov.as_dicts(convert_timestamps=False), convert_timestamps=False))
119 
120  # write new tag to destination database
121  print("Writing destination Tag.")
122  if dest_connection.tag(name=arguments.dest_tag) != None:
123  dest_connection.write_and_commit(source_tag)
124 
125  # write new iovs
126  print("Writing IOVs to destination Tag.")
127  for iov in new_iovs:
128  if dest_connection.iov(tag_name=iov.tag_name, since=iov.since, insertion_time=iov.insertion_time) == None:
129  dest_connection.write_and_commit(iov)
130 
131  # get payloads used by IOVs and copy those over
132  print("Copying Payloads over.")
133  for payload in payloads:
134  if dest_connection.payload(hash=payload.hash) == None:
135  dest_connection.write_and_commit(payload)
136 
137  print("Copy complete.")
138 
def connect(connection_data, mode="r", map_blobs=False, secrets=None, pooling=True)
Definition: querying.py:453
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47
def copy_tag(arguments)
Definition: command_line.py:85
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79

◆ diff_of_gts()

def command_line.diff_of_gts (   arguments)

Definition at line 65 of file command_line.py.

References querying.connect().

65 def diff_of_gts(arguments):
66  # get a CondDBFW Global Tag object for the first GT
67  # then use the diff() method to draw the table of differences
68 
69  # set up connection
70  connection = querying.connect(arguments.db, secrets=arguments.secrets, mode=arguments.mode)
71 
72  gt1 = connection.global_tag(name=arguments.gt1)
73  gt2 = connection.global_tag(name=arguments.gt2)
74 
75  gt1.diff(gt2).as_table(columns=["Record", "Label", "%s Tag" % arguments.gt1, "%s Tag" % arguments.gt2])
76 
def connect(connection_data, mode="r", map_blobs=False, secrets=None, pooling=True)
Definition: querying.py:453
def diff_of_gts(arguments)
Definition: command_line.py:65

◆ diff_of_tags()

def command_line.diff_of_tags (   arguments)

Definition at line 53 of file command_line.py.

References querying.connect().

53 def diff_of_tags(arguments):
54  # get a CondDBFW Tag object for the first tag
55  # then use the diff() method to draw the table of differences
56 
57  # set up connection
58  connection = querying.connect(arguments.db, secrets=arguments.secrets, mode=arguments.mode)
59 
60  tag1 = connection.tag(name=arguments.tag1)
61  tag2 = connection.tag(name=arguments.tag2)
62 
63  tag1.diff(tag2).as_table(columns=["since", arguments.tag1, arguments.tag2])
64 
def connect(connection_data, mode="r", map_blobs=False, secrets=None, pooling=True)
Definition: querying.py:453
def diff_of_tags(arguments)
Definition: command_line.py:53

◆ list_object()

def command_line.list_object (   arguments)

Definition at line 13 of file command_line.py.

References querying.connect(), beamvalidation.exit(), and print().

13 def list_object(arguments):
14 
15  # set up connection
16  connection = querying.connect(arguments.db, secrets=arguments.secrets, mode=arguments.mode)
17 
18  options = ["tag", "gt", "gts_for_tag"]
19  number_of_options_given = 0
20  for option in options:
21  if getattr(arguments, option):
22  number_of_options_given += 1
23  if number_of_options_given != 1:
24  print("You must specify a single object to list.")
25  exit()
26 
27  if arguments.tag:
28  tag_name = arguments.tag
29  tag = connection.tag(name=tag_name)
30  if tag:
31  iovs = tag.iovs(amount=arguments.limit)
32  iovs.as_table()
33  else:
34  print("The Tag '%s' was not found in the database '%s'." % (tag_name, arguments.db))
35  exit()
36 
37  elif arguments.gt:
38  gt_name = arguments.gt
39  gt = connection.global_tag(name=gt_name)
40  if gt:
41  gt_maps = gt.tags(amount=arguments.limit)
42  gt_maps.as_table(hide=["global_tag_name"])
43  else:
44  print("The Global Tag '%s' was not found in the database '%s'." % (gt_name, arguments.db))
45  exit()
46 
47  elif arguments.gts_for_tag:
48  tag_name = arguments.gts_for_tag
49  tag = connection.tag(name=tag_name)
50  gts = tag.parent_global_tags(amount=arguments.limit)
51  gts.as_table(columns=["name", "insertion_time", "snapshot_time"])
52 
def connect(connection_data, mode="r", map_blobs=False, secrets=None, pooling=True)
Definition: querying.py:453
def list_object(arguments)
Definition: command_line.py:13
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47
def exit(msg="")

◆ parse_command_line()

def command_line.parse_command_line (   arguments)
Assumes script name has been removed from the list of arguments.
Hence, arguments[0] is the subcommand.

Definition at line 172 of file command_line.py.

References print().

172 def parse_command_line(arguments):
173  """
174  Assumes script name has been removed from the list of arguments.
175  Hence, arguments[0] is the subcommand.
176  """
177  top_level_parser = argparse.ArgumentParser(description="CondDBFW Command line tool")
178  top_level_parser.add_argument("--db", type=str, required=False, default="frontier://FrontierProd/CMS_CONDITIONS")
179  top_level_parser.add_argument("--mode", type=str, required=False, default="w")
180  top_level_parser.add_argument("--secrets", type=str, required=False)
181  top_level_parser.add_argument("--limit", type=int, required=False, default=10)
182 
183  subparser = top_level_parser.add_subparsers(title="Subcommands")
184 
185  list_parser = subparser.add_parser("list", description="Lists the Metadata objects contained within the given object.")
186  list_parser.add_argument("--tag", required=False, help="List all IOVs in a Tag.")
187  list_parser.add_argument("--gt", required=False, help="List all Global Tag Maps linked to a Global Tag.")
188  list_parser.add_argument("--gts-for-tag", required=False, help="List all Global Tags that contain a Tag.")
189 
190  list_parser.set_defaults(func=list_object)
191 
192  diff_parser = subparser.add_parser("diff-tags", description="Gives the differences in payload hashes used by IOVs between Tags.")
193  diff_parser.add_argument("--tag1", required=True, help="First Tag to use in the comparison.")
194  diff_parser.add_argument("--tag2", required=True, help="Second Tag to use in the comparison.")
195 
196  diff_parser.set_defaults(func=diff_of_tags)
197 
198  gt_diff_parser = subparser.add_parser("diff-gts", description="Gives the differences in Global Tag Maps contained within Global Tag.")
199  gt_diff_parser.add_argument("--gt1", required=True, help="First Global Tag to use in the comparison.")
200  gt_diff_parser.add_argument("--gt2", required=True, help="Second Global Tag to use in the comparison.")
201 
202  gt_diff_parser.set_defaults(func=diff_of_gts)
203 
204  copy_tag_parser = subparser.add_parser("copy-tag", description="Copies a Tag with its IOVs and Payloads to a destination database."
205  + "\nFor copying to official databases, use cmsDbCondUpload (https://cms-conddb-dev.cern.ch/cmsDbCondUpload).")
206  copy_tag_parser.add_argument("--dest-db", required=True, help="Database to copy the Tag and its IOVs to.")
207  copy_tag_parser.add_argument("--input-tag", required=True, help="Tag to take data from in source database.")
208  copy_tag_parser.add_argument("--dest-tag", required=True, help="Tag to copy input Tag to in the destination database.")
209  copy_tag_parser.add_argument("--start", required=True, help="Since to start from. If this is between two, the highest one is taken (no adjustments are made).")
210  copy_tag_parser.add_argument("--end", required=True, help="Since to finidh at. If this is between two, the lowest one is taken (no adjustments are made).")
211 
212  copy_tag_parser.set_defaults(func=copy_tag)
213 
214  parsed_arguments = top_level_parser.parse_args()
215 
216  print("Using database '%s'." % parsed_arguments.db)
217 
218  parsed_arguments.func(parsed_arguments)
219 
def parse_command_line(arguments)
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47

◆ search()

def command_line.search (   arguments)

Definition at line 77 of file command_line.py.

References querying.connect().

77 def search(arguments):
78 
79  raise NotImplementedError("Todo")
80 
81  connection = querying.connect(arguments.db, secrets=arguments.secrets, mode=arguments.mode)
82 
83  search_string = connection.regexp(".*%s.*" % arguments.string)
84 
def connect(connection_data, mode="r", map_blobs=False, secrets=None, pooling=True)
Definition: querying.py:453
def search(arguments)
Definition: command_line.py:77

Variable Documentation

◆ dest_tag

command_line.dest_tag

Definition at line 164 of file command_line.py.

◆ end

command_line.end

Definition at line 166 of file command_line.py.

◆ input_tag

command_line.input_tag

Definition at line 163 of file command_line.py.

◆ start

command_line.start

Definition at line 165 of file command_line.py.

Referenced by HBHERecHitProducerGPU.acquire(), L1TMP7ZeroSupp.analyze(), EcalDumpRaw.analyze(), HLTObjectMonitorProtonLead.analyze(), HLTObjectMonitor.analyze(), RunInfoUpdate.appendNewRun(), EcalBoundaryInfoCalculator< EBDetId >.boundaryRecHits(), L1TDTTFClient.buildPhiEtaPlotO(), L1TDTTFClient.buildPhiEtaPlotOFC(), edm::storage::LocalCacheFile.cache(), HIPAlignmentAlgorithm.calcParameters(), SimpleCosmicBONSeeder.checkNoisyModules(), edm::VParameterSetEntry.dump(), ElectronCalibrationUniv.endJob(), trklet::TrackletProcessor.execute(), TotemSampicFrame.extractDataFromBytesLSB(), MuonResidualsPositionFitter.fit(), MuonResidualsAngleFitter.fit(), MuonResidualsBfieldAngleFitter.fit(), MuonResiduals1DOFFitter.fit(), MuonResiduals6DOFrphiFitter.fit(), MuonResiduals5DOFFitter.fit(), MuonResiduals6DOFFitter.fit(), hgcalsimclustertime::ComputeClusterTime.fixSizeHighestDensity(), EcalBoundaryInfoCalculator< EBDetId >.gapRecHits(), cond::persistency::RunInfoEditor.getLastInserted(), popcon::EcalLaser_weekly_Handler.getNewObjects(), edm::storage::StormLcgGtStorageMaker.getTURL(), edm::storage::StormStorageMaker.getTURL(), RunInfoUpdate.import(), edm::EDConsumerBase.labelsForToken(), evf::EvFDaqDirector.make_flock(), MatcherUsingTracksAlgorithm.match(), edm::ProductResolverIndexHelper::Matches.moduleLabel(), RKPropagatorInZ.myPropagate(), RKPropagatorInR.myPropagate(), CSCFileReader.nextEventFromFUs(), offsetBy(), RK4PreciseStep.operator()(), CartesianLorentzForce.operator()(), MeasurementByLayerGrouper.operator()(), pos::PixelFEDTestDAC.PixelFEDTestDAC(), prettyPrint(), l1t::Stage2Layer2DemuxJetAlgoFirmwareImp1.processEvent(), l1t::L1TRawToDigi.produce(), RKPropagatorInS.propagateParametersOnCylinder(), RKPropagatorInS.propagateParametersOnPlane(), FileReaderDCC.read(), FileReaderDDU.read(), RunInfoRead.readData(), L1MuRegionalCand.readDataField(), L1MuGMTCand.readDataField(), edm::storage::LocalCacheFile.readv(), edm::storage::XrdFile.readv(), FedRawDataInputSource.readWorker(), CTPPSOpticalFunctionsESSource.setIntervalFor(), PPSAssociationCutsESSource.setIntervalFor(), RunIOV.setRunStart(), LMFIOV.setStart(), DCSPTMTemp.setStart(), MODRunIOV.setSubRunStart(), MonRunIOV.setSubRunStart(), RunDCSMagnetDat.setTime(), ecaldqm::MESetTrend.shift_(), CosmicMuonUtilities.stepPropagate(), TkStripMeasurementDet.testStrips(), th1ToFormulaBinTree(), edm::VParameterSetEntry.toString(), edm::ParameterSet.toStringImp(), KFTrajectorySmoother.trajectory(), L1MuRegionalCand.writeDataField(), L1MuGMTCand.writeDataField(), and trklet::DTCLinkMemory.writeStubs().