From f4c99636c17028f8792195f976ddab212ad4f047 Mon Sep 17 00:00:00 2001 From: swenzel Date: Fri, 26 Sep 2025 09:06:49 +0200 Subject: [PATCH] MCProdInfo-CCDB: Possibility to force overwrite --- MC/prodinfo/mcprodinfo_ccdb_upload.py | 5 +++-- MC/prodinfo/mcprodinfo_harvester.py | 7 ++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/MC/prodinfo/mcprodinfo_ccdb_upload.py b/MC/prodinfo/mcprodinfo_ccdb_upload.py index c56bf9827..4a6ed75f3 100644 --- a/MC/prodinfo/mcprodinfo_ccdb_upload.py +++ b/MC/prodinfo/mcprodinfo_ccdb_upload.py @@ -145,11 +145,12 @@ def upload_mcprodinfo_meta(base_url, user, run_number, lpm_prod_tag, keys, cert_ return response -def publish_MCProdInfo(mc_prod_info, ccdb_url = "https://alice-ccdb.cern.ch", username = "aliprod", include_meta_into_aod=False): +def publish_MCProdInfo(mc_prod_info, ccdb_url = "https://alice-ccdb.cern.ch", username = "aliprod", force_overwrite=False, include_meta_into_aod=False): print("Publishing MCProdInfo") # see if this already has meta-data uploaded, otherwise do nothing mc_prod_info_q = query_mcprodinfo(ccdb_url, username, mc_prod_info.RunNumber, mc_prod_info.LPMProductionTag) - if mc_prod_info_q == None: + if mc_prod_info_q == None or force_overwrite == True: # could make this depend on hash values in future upload_mcprodinfo_meta(ccdb_url, username, mc_prod_info.RunNumber, mc_prod_info.LPMProductionTag, dataclasses.asdict(mc_prod_info)) + diff --git a/MC/prodinfo/mcprodinfo_harvester.py b/MC/prodinfo/mcprodinfo_harvester.py index 40c431a25..426bdb767 100755 --- a/MC/prodinfo/mcprodinfo_harvester.py +++ b/MC/prodinfo/mcprodinfo_harvester.py @@ -132,7 +132,7 @@ def split_key(entry): return None, None, None, None -def process_prod_tag(prod_tag, year="2025", ccdb_url=None, username=None): +def process_prod_tag(prod_tag, year="2025", ccdb_url=None, username=None, overwrite=False): base_path = f"/alice/sim/{year}/{prod_tag}" workflow_files = alien_find(base_path, "workflow.json") @@ -184,7 +184,7 @@ def process_prod_tag(prod_tag, year="2025", ccdb_url=None, username=None): if info_min.OrbitsPerTF != info_max.OrbitsPerTF: print(f"❌ OrbitsPerTF mismatch for run {run_number}") - publish_MCProdInfo(info_min, username=username, ccdb_url=ccdb_url) + publish_MCProdInfo(info_min, username=username, ccdb_url=ccdb_url, force_overwrite=overwrite) print (info_min) @@ -196,9 +196,10 @@ def main(): parser.add_argument("--ccdb", required=False, default="https://alice-ccdb.cern.ch", help="CCDB server URL") parser.add_argument("--username", required=False, help="GRID username (needs appropriate AliEn token initialized)") parser.add_argument("--year", default="2025", help="Production year (default: 2025)") + parser.add_argument("--overwrite", action="store_true", help="Overwrite existing entries") args = parser.parse_args() - process_prod_tag(args.prod_tag, year=args.year, ccdb_url=args.ccdb, username=args.username) + process_prod_tag(args.prod_tag, year=args.year, ccdb_url=args.ccdb, username=args.username, overwrite=args.overwrite) if __name__ == "__main__": main()