diff --git a/src/servala/core/models/service.py b/src/servala/core/models/service.py index 5540d22..4d7bc0d 100644 --- a/src/servala/core/models/service.py +++ b/src/servala/core/models/service.py @@ -1,3 +1,4 @@ +import copy import json import kubernetes @@ -647,14 +648,10 @@ class ServiceInstance(ServalaModelMixin, models.Model): if self.is_deleted: return - self.is_deleted = True - self.deleted_at = timezone.now() - self.deleted_by = user - self.save( - update_fields=["is_deleted", "deleted_at", "deleted_by", "updated_at"] - ) - - self._clear_kubernetes_caches() + if self.spec.get("parameters", {}).get("security", {}).get("deletionProtection"): + spec = copy.copy(self.spec) + spec["parameters"]["security"]["deletionProtection"] = False + self.update_spec(spec, user) try: api_instance = self.context.control_plane.custom_objects_api @@ -670,6 +667,13 @@ class ServiceInstance(ServalaModelMixin, models.Model): if e.status != 404: # 404 is fine, the object was deleted already. raise + self.is_deleted = True + self.deleted_at = timezone.now() + self.deleted_by = user + self.save( + update_fields=["is_deleted", "deleted_at", "deleted_by", "updated_at"] + ) + self._clear_kubernetes_caches() @cached_property def kubernetes_object(self):