From 254772762376ed9f19cef81efb5b64ef19c1dffb Mon Sep 17 00:00:00 2001 From: Vasyl Saienko Date: Sun, 11 Aug 2024 14:10:29 +0300 Subject: [PATCH 1/2] Do not set object.raw on delete Keep original object as is during delete to let calling other functions like create or exists. fixes #470 --- kr8s/_objects.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kr8s/_objects.py b/kr8s/_objects.py index 9f982f8..b875a9b 100644 --- a/kr8s/_objects.py +++ b/kr8s/_objects.py @@ -334,7 +334,7 @@ async def delete(self, propagation_policy: str | None = None) -> None: namespace=self.namespace, data=json.dumps(data), ) as resp: - self.raw = resp.json() + pass except ServerError as e: if e.response and e.response.status_code == 404: raise NotFoundError(f"Object {self.name} does not exist") from e From 1e2f243c94f42b0521ccf38cd4f90e607418a13c Mon Sep 17 00:00:00 2001 From: Vasyl Saienko Date: Sat, 24 Aug 2024 21:21:48 +0300 Subject: [PATCH 2/2] Add tests for object delete Make sure object is not changed and we still can call exists() method on it after delete fixes #470 --- kr8s/_objects.py | 2 +- kr8s/tests/test_objects.py | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/kr8s/_objects.py b/kr8s/_objects.py index b875a9b..282935a 100644 --- a/kr8s/_objects.py +++ b/kr8s/_objects.py @@ -333,7 +333,7 @@ async def delete(self, propagation_policy: str | None = None) -> None: url=f"{self.endpoint}/{self.name}", namespace=self.namespace, data=json.dumps(data), - ) as resp: + ): pass except ServerError as e: if e.response and e.response.status_code == 404: diff --git a/kr8s/tests/test_objects.py b/kr8s/tests/test_objects.py index 2d28772..a08cad8 100644 --- a/kr8s/tests/test_objects.py +++ b/kr8s/tests/test_objects.py @@ -1019,6 +1019,15 @@ async def test_secret_data(ns): await secret.delete() +async def test_secret_create_delete_not_changed(ns): + [secret] = await objects_from_files(CURRENT_DIR / "resources" / "secret.yaml") + secret.namespace = ns + await secret.create() + await secret.delete() + exists = await secret.exists() + assert not exists + + async def test_validate_pod(example_pod_spec): kubernetes_validate = pytest.importorskip("kubernetes_validate") pod = await Pod(example_pod_spec)