@@ -1652,14 +1652,15 @@ def deleteJob(self, jobID):
1652
1652
return ret
1653
1653
jobIDs = ret ["Value" ]
1654
1654
1655
- jobIDsToDelete = []
1656
- for jobID in jobIDs :
1657
- can_kill = JobStatus .checkJobStateTransition (jobID , JobStatus .KILLED )["OK" ]
1658
- can_del = JobStatus .checkJobStateTransition (jobID , JobStatus .DELETED )["OK" ]
1659
- if can_kill or can_del :
1660
- jobIDsToDelete .append (jobID )
1661
-
1662
- result = WMSClient (useCertificates = self .useCertificates ).deleteJob (jobIDsToDelete )
1655
+ # Remove any job IDs that can't change to the Killed or Deleted states
1656
+ filteredJobs = set ()
1657
+ for filterState in (JobStatus .KILLED , JobStatus .DELETED ):
1658
+ filterRes = JobStatus .filterJobStateTransition (jobIDs , filterState )
1659
+ if not filterRes ["OK" ]:
1660
+ return filterRes
1661
+ filteredJobs .update (filterRes ["Value" ])
1662
+
1663
+ result = WMSClient (useCertificates = self .useCertificates ).deleteJob (list (filteredJobs ))
1663
1664
if result ["OK" ]:
1664
1665
if self .jobRepo :
1665
1666
for jID in result ["Value" ]:
@@ -1689,11 +1690,11 @@ def rescheduleJob(self, jobID):
1689
1690
return ret
1690
1691
jobIDs = ret ["Value" ]
1691
1692
1692
- jobIDsToReschedule = []
1693
- for jobID in jobIDs :
1694
- res = JobStatus . checkJobStateTransition ( jobID , JobStatus . RESCHEDULED )
1695
- if res [ "OK" ]:
1696
- jobIDsToReschedule . append ( jobID )
1693
+ # Remove any job IDs that can't change to the rescheduled state
1694
+ filterRes = JobStatus . filterJobStateTransition ( jobIDs , JobStatus . RESCHEDULED )
1695
+ if not filterRes [ "OK" ]:
1696
+ return filterRes
1697
+ jobIDsToReschedule = filterRes [ "Value" ]
1697
1698
1698
1699
result = WMSClient (useCertificates = self .useCertificates ).rescheduleJob (jobIDsToReschedule )
1699
1700
if result ["OK" ]:
@@ -1724,14 +1725,15 @@ def killJob(self, jobID):
1724
1725
return ret
1725
1726
jobIDs = ret ["Value" ]
1726
1727
1727
- jobIDsToKill = []
1728
- for jobID in jobIDs :
1729
- can_kill = JobStatus .checkJobStateTransition (jobID , JobStatus .KILLED )["OK" ]
1730
- can_del = JobStatus .checkJobStateTransition (jobID , JobStatus .DELETED )["OK" ]
1731
- if can_kill or can_del :
1732
- jobIDsToKill .append (jobID )
1728
+ # Remove any job IDs that can't change to the Killed or Deleted states
1729
+ filteredJobs = set ()
1730
+ for filterState in (JobStatus .KILLED , JobStatus .DELETED ):
1731
+ filterRes = JobStatus .filterJobStateTransition (jobIDs , filterState )
1732
+ if not filterRes ["OK" ]:
1733
+ return filterRes
1734
+ filteredJobs .update (filterRes ["Value" ])
1733
1735
1734
- result = WMSClient (useCertificates = self .useCertificates ).killJob (jobIDsToKill )
1736
+ result = WMSClient (useCertificates = self .useCertificates ).killJob (list ( filteredJobs ) )
1735
1737
if result ["OK" ]:
1736
1738
if self .jobRepo :
1737
1739
for jID in result ["Value" ]:
0 commit comments