diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_pilot.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_pilot.py index 8c01dc1a052..9bd71fe333b 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_pilot.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_pilot.py @@ -2,6 +2,8 @@ """ Script to update pilot version in CS """ +from packaging.version import Version + import DIRAC from DIRAC.Core.Base.Script import Script @@ -39,13 +41,14 @@ def updatePilot(version, vo): :param version: version vArBpC of pilot you want to use :param vo: Location of pilot version in CS /Operations//Pilot/Version """ - res = Operations(vo=vo).getValue("Pilot/Version", []) - if not res["OK"]: + pilotVersion = sorted(Operations(vo=vo).getValue("Pilot/Version", []), key=lambda x: Version(x), reverse=True) + if version in pilotVersion: + gLogger.warn(f"Version {version} already set in CS") + elif pilotVersion: + pilotVersion = [version, pilotVersion[0]] + else: gLogger.warn("No pilot version set in CS") pilotVersion = [version] - else: - pilotVersion = [res["Value"].pop()] - pilotVersion.insert(0, version) api = CSAPI() if vo: api.setOption(f"Operations/{vo}/Pilot/Version", ", ".join(pilotVersion))