Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 11 additions & 4 deletions Framework/script/RepoCleaner/qcrepocleaner/Ccdb.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
"""
Expand All @@ -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
Expand All @@ -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:
Expand All @@ -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]:
"""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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}")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,16 @@ 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)
return args


def run(args):
ccdb = Ccdb(args.url)
ccdb = Ccdb(args.url, args.print_versions_details)

total_deleted = 0
total_planned = 0
Expand Down