diff --git a/Framework/script/RepoCleaner/qcrepocleaner/Ccdb.py b/Framework/script/RepoCleaner/qcrepocleaner/Ccdb.py index eaa7906df5..d2822491af 100644 --- a/Framework/script/RepoCleaner/qcrepocleaner/Ccdb.py +++ b/Framework/script/RepoCleaner/qcrepocleaner/Ccdb.py @@ -17,6 +17,7 @@ class ObjectVersion: In the CCDB an object can have many versions with different validity intervals. This class represents a single version. """ + print_details = False def __init__(self, path: str, valid_from, valid_to, created_at, uuid=None, metadata=None): """ @@ -26,7 +27,9 @@ def __init__(self, path: str, valid_from, valid_to, created_at, uuid=None, metad :param valid_from: validity range smaller limit (in ms) :param valid_to: validity range bigger limit (in ms) :param created_at: creation timestamp of the object + :param metadata: metadata of the object """ + self.path = path self.uuid = uuid self.valid_from = valid_from @@ -41,10 +44,13 @@ def __init__(self, path: str, valid_from, valid_to, created_at, uuid=None, metad def __repr__(self): if "Run" in self.metadata or "RunNumber" in self.metadata: run_number = self.metadata["Run"] if "Run" in self.metadata else self.metadata["RunNumber"] - return f"Version of object {self.path} created at {self.created_at_as_dt.strftime('%Y-%m-%d %H:%M:%S')}, valid from {self.valid_from_as_dt.strftime('%Y-%m-%d %H:%M:%S')}, run {run_number} (uuid {self.uuid})" else: - return f"Version of object {self.path} created at {self.created_at_as_dt.strftime('%Y-%m-%d %H:%M:%S')}, valid from {self.valid_from_as_dt.strftime('%Y-%m-%d %H:%M:%S')} (uuid {self.uuid}, " \ - f"ts {self.valid_from})" + run_number = "None" + + rperesentation = f"Version of object {self.path} created at {self.created_at_as_dt.strftime('%Y-%m-%d %H:%M:%S')}, valid from {self.valid_from_as_dt.strftime('%Y-%m-%d %H:%M:%S')}, run {run_number}, (uuid {self.uuid})" + if ObjectVersion.print_details: + representation += f", metadata: {self.metadata}" + return representation class Ccdb: @@ -57,9 +63,10 @@ class Ccdb: counter_preserved: int = 0 set_adjustable_eov: bool = False # if True, set the metadata adjustableEOV before change validity - def __init__(self, url): + def __init__(self, url, print_details=False): logger.info(f"Instantiate CCDB at {url}") self.url = url + ObjectVersion.print_details = print_details def get_objects_list(self, added_since: int = 0, path: str = "", no_wildcard: bool = False) -> List[str]: """ diff --git a/Framework/script/RepoCleaner/qcrepocleaner/o2-qc-repo-cleaner b/Framework/script/RepoCleaner/qcrepocleaner/o2-qc-repo-cleaner index f62425731c..c901c22e9e 100755 --- a/Framework/script/RepoCleaner/qcrepocleaner/o2-qc-repo-cleaner +++ b/Framework/script/RepoCleaner/qcrepocleaner/o2-qc-repo-cleaner @@ -104,6 +104,8 @@ def parse_args(): 'only-path points to an object rather than a folder or if subdirectories must be ignored.') parser.add_argument('--ignore-last-execution', dest='ignore_last_execution', action='store_true', default=False, help='Do not check when was the last execution, run from timestamp 0.') + parser.add_argument('--print-versions-details', dest='print_versions_details', action='store_true', default=False, + help='Print extra details about the versions if enabled..') args = parser.parse_args() dryable.set(args.dry_run) logging.info(args) @@ -376,7 +378,7 @@ def process_object(object_path, rules, ccdb, args): def run(args, ccdb_url, rules): # Get list of objects from CCDB - ccdb = Ccdb(ccdb_url) + ccdb = Ccdb(ccdb_url, args.print_versions_details) ccdb.logger = logging.getLogger ccdb.set_adjustable_eov = args.set_adjustableEOV logging.info(f"ccdb.set_adjustable_eov: {ccdb.set_adjustable_eov}") diff --git a/Framework/script/RepoCleaner/qcrepocleaner/o2-qc-repo-delete-objects-in-runs b/Framework/script/RepoCleaner/qcrepocleaner/o2-qc-repo-delete-objects-in-runs index eafe9c043e..3c4c0f3059 100755 --- a/Framework/script/RepoCleaner/qcrepocleaner/o2-qc-repo-delete-objects-in-runs +++ b/Framework/script/RepoCleaner/qcrepocleaner/o2-qc-repo-delete-objects-in-runs @@ -31,6 +31,8 @@ def parseArgs(): parser.add_argument('--yes', action='store_true', help='Answers yes to all. You should really not use that.') parser.add_argument('--metadata', dest='metadata', action='store', default="", help='Delete only versions matching these metadata. Format: "[/key=value]*"') + parser.add_argument('--print-versions-details', dest='print_versions_details', action='store_true', default=False, + help='Print extra details about the versions if enabled..') args = parser.parse_args() dryable.set(args.dry_run) logging.info(args) @@ -38,7 +40,7 @@ def parseArgs(): def run(args): - ccdb = Ccdb(args.url) + ccdb = Ccdb(args.url, args.print_versions_details) total_deleted = 0 total_planned = 0