46
46
from DIRAC .WorkloadManagementSystem .Client .JobMonitoringClient import JobMonitoringClient
47
47
from DIRAC .WorkloadManagementSystem .Client .SandboxStoreClient import SandboxStoreClient
48
48
from DIRAC .WorkloadManagementSystem .Client .WMSClient import WMSClient
49
+ from DIRAC .WorkloadManagementSystem .Utilities .jobAdministration import _filterJobStateTransition
49
50
50
51
51
52
def parseArguments (args ):
@@ -1450,10 +1451,13 @@ def deleteJob(self, jobID):
1450
1451
# Remove any job IDs that can't change to the Killed or Deleted states
1451
1452
filteredJobs = set ()
1452
1453
for filterState in (JobStatus .KILLED , JobStatus .DELETED ):
1453
- filterRes = JobStatus .filterJobStateTransition (jobIDs , filterState )
1454
- if not filterRes ["OK" ]:
1455
- return filterRes
1456
- filteredJobs .update (filterRes ["Value" ])
1454
+ # get a dictionary of jobID:status
1455
+ res = JobMonitoringClient ().getJobsStatus (jobIDs )
1456
+ if not res ["OK" ]:
1457
+ return res
1458
+ js = {k : v ["Status" ] for k , v in res ["Value" ].items ()}
1459
+ # then filter
1460
+ filteredJobs .update (_filterJobStateTransition (js , filterState ))
1457
1461
1458
1462
return WMSClient (useCertificates = self .useCertificates ).deleteJob (list (filteredJobs ))
1459
1463
@@ -1480,11 +1484,13 @@ def rescheduleJob(self, jobID):
1480
1484
return ret
1481
1485
jobIDs = ret ["Value" ]
1482
1486
1483
- # Remove any job IDs that can't change to the rescheduled state
1484
- filterRes = JobStatus .filterJobStateTransition (jobIDs , JobStatus .RESCHEDULED )
1485
- if not filterRes ["OK" ]:
1486
- return filterRes
1487
- jobIDsToReschedule = filterRes ["Value" ]
1487
+ # get a dictionary of jobID:status
1488
+ res = JobMonitoringClient ().getJobsStatus (jobIDs )
1489
+ if not res ["OK" ]:
1490
+ return res
1491
+ js = {k : v ["Status" ] for k , v in res ["Value" ].items ()}
1492
+ # then filter
1493
+ jobIDsToReschedule = _filterJobStateTransition (js , JobStatus .RESCHEDULED )
1488
1494
1489
1495
return WMSClient (useCertificates = self .useCertificates ).rescheduleJob (jobIDsToReschedule )
1490
1496
@@ -1510,10 +1516,13 @@ def killJob(self, jobID):
1510
1516
# Remove any job IDs that can't change to the Killed or Deleted states
1511
1517
filteredJobs = set ()
1512
1518
for filterState in (JobStatus .KILLED , JobStatus .DELETED ):
1513
- filterRes = JobStatus .filterJobStateTransition (jobIDs , filterState )
1514
- if not filterRes ["OK" ]:
1515
- return filterRes
1516
- filteredJobs .update (filterRes ["Value" ])
1519
+ # get a dictionary of jobID:status
1520
+ res = JobMonitoringClient ().getJobsStatus (jobIDs )
1521
+ if not res ["OK" ]:
1522
+ return res
1523
+ js = {k : v ["Status" ] for k , v in res ["Value" ].items ()}
1524
+ # then filter
1525
+ filteredJobs .update (_filterJobStateTransition (js , filterState ))
1517
1526
1518
1527
return WMSClient (useCertificates = self .useCertificates ).killJob (list (filteredJobs ))
1519
1528
0 commit comments