From 3236fc7b212f78711d83c4884fe2e457a7133282 Mon Sep 17 00:00:00 2001 From: Tobias Kunze Date: Thu, 26 Jun 2025 17:32:56 +0200 Subject: [PATCH] Prune empty data from instance updates aswell Closes #124 --- src/servala/core/models/service.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/servala/core/models/service.py b/src/servala/core/models/service.py index a35e493..362661b 100644 --- a/src/servala/core/models/service.py +++ b/src/servala/core/models/service.py @@ -593,6 +593,16 @@ class ServiceInstance(ServalaModelMixin, models.Model): if key in attrs: delattr(self, key) + @classmethod + def _prepare_spec_data(cls, spec_data): + """ + Prepare spec data by pruning empty values and ensuring required fields. + This method centralizes spec data processing to ensure consistency. + """ + spec_data = spec_data or {} + spec_data = prune_empty_data(spec_data) + return spec_data + @classmethod def create_instance(cls, name, organization, context, created_by, spec_data): # Ensure the namespace exists @@ -612,8 +622,8 @@ class ServiceInstance(ServalaModelMixin, models.Model): ) try: - spec_data = spec_data or {} - spec_data = prune_empty_data(spec_data) + spec_data = cls._prepare_spec_data(spec_data) + if "writeConnectionSecretToRef" not in spec_data: spec_data["writeConnectionSecretToRef"] = {} @@ -655,6 +665,7 @@ class ServiceInstance(ServalaModelMixin, models.Model): def update_spec(self, spec_data, updated_by): try: + spec_data = self._prepare_spec_data(spec_data) api_instance = self.context.control_plane.custom_objects_api patch_body = {"spec": spec_data}