Skip to content

Commit 9f4c39a

Browse files
authored
Merge pull request #8203 from Robin-Van-de-Merghel/robin-move-killpilot
Moved killPilot to diracAdmin itself
2 parents e701f13 + c2a2d1f commit 9f4c39a

File tree

2 files changed

+25
-32
lines changed

2 files changed

+25
-32
lines changed

src/DIRAC/Interfaces/API/DiracAdmin.py

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@
1919
from DIRAC.WorkloadManagementSystem.Client.JobManagerClient import JobManagerClient
2020
from DIRAC.WorkloadManagementSystem.Client.PilotManagerClient import PilotManagerClient
2121
from DIRAC.WorkloadManagementSystem.Client.WMSAdministratorClient import WMSAdministratorClient
22+
from DIRAC.WorkloadManagementSystem.Service.WMSUtilities import (
23+
killPilotsInQueues,
24+
)
2225

2326
voName = ""
2427
ret = getProxyInfo(disableVOMS=True)
@@ -452,8 +455,28 @@ def killPilot(self, gridReference):
452455
if not isinstance(gridReference, (str, list)):
453456
return self._errorReport("Expected string or list of strings for pilot reference")
454457

455-
result = PilotManagerClient().killPilot(gridReference)
456-
return result
458+
# Make a list if it is not yet
459+
if isinstance(gridReference, str):
460+
gridReference = [gridReference]
461+
462+
# Regroup pilots per site
463+
pilotRefDict = {}
464+
for pilotReference in gridReference:
465+
result = PilotManagerClient().getPilotInfo(pilotReference)
466+
if not result["OK"] or not result["Value"]:
467+
return S_ERROR(f"Failed to get info for pilot {pilotReference}")
468+
469+
pilotDict = result["Value"][pilotReference]
470+
queue = "@@@".join(
471+
[pilotDict["VO"], pilotDict["GridSite"], pilotDict["DestinationSite"], pilotDict["Queue"]]
472+
)
473+
gridType = pilotDict["GridType"]
474+
pilotRefDict.setdefault(queue, {})
475+
pilotRefDict[queue].setdefault("PilotList", [])
476+
pilotRefDict[queue]["PilotList"].append(pilotReference)
477+
pilotRefDict[queue]["GridType"] = gridType
478+
479+
return killPilotsInQueues(pilotRefDict)
457480

458481
#############################################################################
459482
def getPilotLoggingInfo(self, gridReference):

src/DIRAC/WorkloadManagementSystem/Service/PilotManagerHandler.py

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
from DIRAC.WorkloadManagementSystem.Service.WMSUtilities import (
1414
getPilotCE,
1515
getPilotRef,
16-
killPilotsInQueues,
1716
setPilotCredentials,
1817
)
1918

@@ -301,35 +300,6 @@ def export_getPilots(cls, jobID):
301300

302301
return cls.pilotAgentsDB.getPilotInfo(pilotID=result["Value"])
303302

304-
##############################################################################
305-
types_killPilot = [[str, list]]
306-
307-
@classmethod
308-
def export_killPilot(cls, pilotRefList):
309-
"""Kill the specified pilots"""
310-
# Make a list if it is not yet
311-
if isinstance(pilotRefList, str):
312-
pilotRefList = [pilotRefList]
313-
314-
# Regroup pilots per site
315-
pilotRefDict = {}
316-
for pilotReference in pilotRefList:
317-
result = cls.pilotAgentsDB.getPilotInfo(pilotReference)
318-
if not result["OK"] or not result["Value"]:
319-
return S_ERROR(f"Failed to get info for pilot {pilotReference}")
320-
321-
pilotDict = result["Value"][pilotReference]
322-
queue = "@@@".join(
323-
[pilotDict["VO"], pilotDict["GridSite"], pilotDict["DestinationSite"], pilotDict["Queue"]]
324-
)
325-
gridType = pilotDict["GridType"]
326-
pilotRefDict.setdefault(queue, {})
327-
pilotRefDict[queue].setdefault("PilotList", [])
328-
pilotRefDict[queue]["PilotList"].append(pilotReference)
329-
pilotRefDict[queue]["GridType"] = gridType
330-
331-
return killPilotsInQueues(pilotRefDict)
332-
333303
##############################################################################
334304
types_setJobForPilot = [[str, int], str]
335305

0 commit comments

Comments
 (0)