From 3e17e03da9f290aeed89a68343d2ca98fa2c266b Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Mon, 17 Nov 2025 11:48:19 +0100 Subject: [PATCH] support hardcoded suspend plan for exoscale --- src/servala/api/views.py | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/src/servala/api/views.py b/src/servala/api/views.py index b2991aa..5fdb91a 100644 --- a/src/servala/api/views.py +++ b/src/servala/api/views.py @@ -233,9 +233,12 @@ The Servala Team""" try: service = Service.objects.get(osb_service_id=service_id) - service_offering = ServiceOffering.objects.get( - osb_plan_id=plan_id, service=service - ) + # Special handling: when plan_id is "suspend", don't lookup service_offering + service_offering = None + if plan_id != "suspend": + service_offering = ServiceOffering.objects.get( + osb_plan_id=plan_id, service=service + ) except Service.DoesNotExist: return self._error(f"Unknown service_id: {service_id}") except ServiceOffering.DoesNotExist: @@ -258,7 +261,7 @@ The Servala Team""" return self.request.build_absolute_uri(admin_path) def _create_action_helpdesk_ticket( - self, request, action, instance_id, service, service_offering, users=None + self, request, action, instance_id, service, service_offering=None, users=None ): """ Create an Odoo helpdesk ticket for offboarding or suspension actions. @@ -269,11 +272,12 @@ The Servala Team""" organization = None try: # Look for instances with this name in the service offering's context + filter_kwargs = {"name": instance_id} + if service_offering: + filter_kwargs["context__service_offering"] = service_offering + service_instance = ( - ServiceInstance.objects.filter( - name=instance_id, - context__service_offering=service_offering, - ) + ServiceInstance.objects.filter(**filter_kwargs) .select_related("organization") .first() ) @@ -302,10 +306,11 @@ The Servala Team""" else: description_parts.append(f"Instance: {instance_id}") - offering_url = self._get_admin_url( - "core_serviceoffering_change", service_offering.pk - ) - description_parts.append(f"Service Offering: {offering_url}") + if service_offering: + offering_url = self._get_admin_url( + "core_serviceoffering_change", service_offering.pk + ) + description_parts.append(f"Service Offering: {offering_url}") if users: description_parts.append("
Users:")