Skip to content

Commit b1a151c

Browse files
committed
Add force_delete option when calling delete() on job runs.
1 parent 1f36b2c commit b1a151c

File tree

2 files changed

+28
-6
lines changed

2 files changed

+28
-6
lines changed

ads/jobs/builders/infrastructure/dsc_job.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -376,12 +376,13 @@ def delete(self, force_delete: bool = False) -> DSCJob:
376376
"""
377377
runs = self.run_list()
378378
for run in runs:
379-
if run.lifecycle_state in [
380-
DataScienceJobRun.LIFECYCLE_STATE_ACCEPTED,
381-
DataScienceJobRun.LIFECYCLE_STATE_IN_PROGRESS,
382-
DataScienceJobRun.LIFECYCLE_STATE_NEEDS_ATTENTION,
383-
]:
384-
run.cancel(wait_for_completion=True)
379+
if force_delete:
380+
if run.lifecycle_state in [
381+
DataScienceJobRun.LIFECYCLE_STATE_ACCEPTED,
382+
DataScienceJobRun.LIFECYCLE_STATE_IN_PROGRESS,
383+
DataScienceJobRun.LIFECYCLE_STATE_NEEDS_ATTENTION,
384+
]:
385+
run.cancel(wait_for_completion=True)
385386
run.delete()
386387
self.client.delete_job(self.id)
387388
return self
@@ -866,6 +867,12 @@ def download(self, to_dir):
866867
self.job.download(to_dir)
867868
return self
868869

870+
def delete(self, force_delete: bool = False):
871+
if force_delete:
872+
self.cancel(wait_for_completion=True)
873+
super().delete()
874+
return
875+
869876

870877
# This is for backward compatibility
871878
DSCJobRun = DataScienceJobRun

tests/unitary/default_setup/jobs/test_jobs_run.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,18 @@ def test_job_run_exit_code(self):
4545
run.lifecycle_state = run.LIFECYCLE_STATE_FAILED
4646
run.lifecycle_details = "Job run artifact execution failed with exit code 21."
4747
self.assertEqual(run.exit_code, 21)
48+
49+
@mock.patch("ads.jobs.builders.infrastructure.dsc_job.DataScienceJobRun.cancel")
50+
@mock.patch("ads.common.oci_datascience.OCIDataScienceMixin.delete")
51+
def test_job_run_delete(self, mock_delete, mock_cancel):
52+
"""Tests deleting job run."""
53+
run = DataScienceJobRun()
54+
# Cancel will not be called if job run is succeeded.
55+
run.lifecycle_state = run.LIFECYCLE_STATE_SUCCEEDED
56+
run.delete()
57+
mock_delete.assert_called_once()
58+
mock_cancel.assert_not_called()
59+
# Cancel will be called if job run is in progress and force_delete is set.
60+
run.lifecycle_state = run.LIFECYCLE_STATE_IN_PROGRESS
61+
run.delete(force_delete=True)
62+
mock_cancel.assert_called_once()

0 commit comments

Comments
 (0)