diff --git a/pygeoapi_kubernetes_papermill/argo.py b/pygeoapi_kubernetes_papermill/argo.py index 919dc2f..6a37715 100644 --- a/pygeoapi_kubernetes_papermill/argo.py +++ b/pygeoapi_kubernetes_papermill/argo.py @@ -215,7 +215,14 @@ def delete_job(self, job_id) -> bool: :returns: `bool` of status result """ - raise NotImplementedError + self.custom_objects_api.delete_namespaced_custom_object( + **K8S_CUSTOM_OBJECT_WORKFLOWS, + name=k8s_job_name(job_id=job_id), + namespace=self.namespace, + # this policy should also remove pods, but doesn't + propagation_policy="Foreground", + ) + return True def _execute_handler_async( self, diff --git a/tests/test_argo_manager.py b/tests/test_argo_manager.py index 26b1c1e..a31b9a9 100644 --- a/tests/test_argo_manager.py +++ b/tests/test_argo_manager.py @@ -115,6 +115,16 @@ def test_get_jobs_returns_workflows( assert job["identifier"] == "annotations-identifier" +def test_delete_job_deletes_job( + manager: ArgoManager, + mock_delete_workflow, +): + response = manager.delete_job("abc") + + assert response + mock_delete_workflow.assert_called() + + @pytest.fixture() def mock_create_workflow(): with mock.patch( @@ -175,3 +185,12 @@ def mock_list_workflows(): return_value={"items": [MOCK_WORKFLOW]}, ) as mocker: yield mocker + + +@pytest.fixture() +def mock_delete_workflow(): + with mock.patch( + "pygeoapi_kubernetes_papermill." + "kubernetes.k8s_client.CustomObjectsApi.delete_namespaced_custom_object", + ) as mocker: + yield mocker