Handle deletion protection

This commit is contained in:
Tobias Kunze 2025-05-25 23:02:42 +02:00
parent 3e466fb011
commit d1d1352cf4

View file

@ -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):