Skip to content

Commit 37015e0

Browse files
fix: Moved killPilot to diracAdmin itself
1 parent 9f1f318 commit 37015e0

2 files changed

Lines changed: 36 additions & 32 deletions

File tree

src/DIRAC/Interfaces/API/DiracAdmin.py

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from DIRAC.ConfigurationSystem.Client.Helpers.Registry import getVOForGroup
1212
from DIRAC.Core.Base.API import API
1313
from DIRAC.Core.Security.ProxyInfo import getProxyInfo
14+
from DIRAC.Core.Utilities.ObjectLoader import ObjectLoader
1415
from DIRAC.Core.Utilities.PromptUser import promptUser
1516
from DIRAC.FrameworkSystem.Client.NotificationClient import NotificationClient
1617
from DIRAC.FrameworkSystem.Client.ProxyManagerClient import gProxyManager
@@ -19,6 +20,9 @@
1920
from DIRAC.WorkloadManagementSystem.Client.JobManagerClient import JobManagerClient
2021
from DIRAC.WorkloadManagementSystem.Client.PilotManagerClient import PilotManagerClient
2122
from DIRAC.WorkloadManagementSystem.Client.WMSAdministratorClient import WMSAdministratorClient
23+
from DIRAC.WorkloadManagementSystem.Service.WMSUtilities import (
24+
killPilotsInQueues,
25+
)
2226

2327
voName = ""
2428
ret = getProxyInfo(disableVOMS=True)
@@ -452,8 +456,38 @@ def killPilot(self, gridReference):
452456
if not isinstance(gridReference, (str, list)):
453457
return self._errorReport("Expected string or list of strings for pilot reference")
454458

455-
result = PilotManagerClient().killPilot(gridReference)
456-
return result
459+
# Try to connect to the database
460+
try:
461+
result = ObjectLoader().loadObject("WorkloadManagementSystem.DB.PilotAgentsDB", "PilotAgentsDB")
462+
if not result["OK"]:
463+
return result
464+
pilotAgentsDB = result["Value"]()
465+
466+
except RuntimeError as excp:
467+
return S_ERROR(f"Can't connect to DB: {excp}")
468+
469+
# Make a list if it is not yet
470+
if isinstance(gridReference, str):
471+
gridReference = [gridReference]
472+
473+
# Regroup pilots per site
474+
pilotRefDict = {}
475+
for pilotReference in gridReference:
476+
result = pilotAgentsDB.getPilotInfo(pilotReference)
477+
if not result["OK"] or not result["Value"]:
478+
return S_ERROR(f"Failed to get info for pilot {pilotReference}")
479+
480+
pilotDict = result["Value"][pilotReference]
481+
queue = "@@@".join(
482+
[pilotDict["VO"], pilotDict["GridSite"], pilotDict["DestinationSite"], pilotDict["Queue"]]
483+
)
484+
gridType = pilotDict["GridType"]
485+
pilotRefDict.setdefault(queue, {})
486+
pilotRefDict[queue].setdefault("PilotList", [])
487+
pilotRefDict[queue]["PilotList"].append(pilotReference)
488+
pilotRefDict[queue]["GridType"] = gridType
489+
490+
return killPilotsInQueues(pilotRefDict)
457491

458492
#############################################################################
459493
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)