3 from contentValuesLib
import *
6 """ Option parser class """ 8 optparse.OptionParser.__init__(self, usage=
"%prog [options] root_file ...", version=
"%prog 0.0.1", conflict_handler=
"resolve")
9 self.add_option(
"--shift",
"-s", action=
"store", type=
"choice", dest=
"shift", choices=(
"online",
"offline"), help=
"specify shift type: online or offline values allowed. Default is offline.")
10 self.add_option(
"--url", action=
"store", type=
"string", dest=
"url", default=SERVER_URL, help=
"specify RR XML-RPC server URL. Default is " + SERVER_URL)
11 self.add_option(
"--dataset",
"-t", action=
"store", type=
"string", dest=
"dataset", default=
None, help=
"explicitly specify dataset name. If not set then script \ 12 (1) for offline shift will try to get it from the filename or (2) for online shift will set it to " + ONLINE_DATASET)
13 self.add_option(
"--debug",
"-d", action=
"store_true", dest=
"debug", default=
False, help=
"print values and exit. Do not write to RR")
14 self.add_option(
"--filter",
"-f", action=
"store", type=
"string", dest=
"filter", default=
None, help=
"Specify filters in the form \"('subsystem','folder','value')\" \ 15 in regexp expression. Default is None and this takes all the subsystems, all folders and allvalues")
17 if __name__ ==
"__main__":
21 (opts, args) = optManager.parse_args()
26 print "At least one ROOT file must be priovided, use --help for hit" 31 print "Shift type must be provided, use --help for hit" 35 default_dataset = opts[
'dataset']
36 if default_dataset ==
None and opts[
'shift'] ==
'online':
37 default_dataset = ONLINE_DATASET
44 print "File [", rfile,
"] not exists or is not accessible?" 50 server = xmlrpclib.ServerProxy(opts[
'url'])
56 (run_number, values) =
getSummaryValues(file_name = rfile, translate =
True, filters = filter)
58 if default_dataset ==
None:
61 dataset = default_dataset
63 if run_number ==
None:
64 print "Run number does not determined. Skipping file: %s" % rfile
68 print "Dataset name do not determined. Skipping file: %s" % rfile
71 if values ==
None or len(values) == 0:
72 print "No content summary values found. Skipping file: %s" % rfile
77 print "Run number: %d" % run_number
78 print "Dataset: %s" % dataset
79 print "Data: ", values
81 result = server.SummaryValuesWriter.write(run_number, dataset, json.dumps(values))
82 print "RR: %d rows modified for run# %d dataset %s" % (result, run_number, dataset)
83 except xmlrpclib.Error
as errstring:
84 print "ERROR", errstring
def getDatasetName(file_name)
def getSummaryValues(file_name, translate, filters=None)
def checkFilter(raw_filter)