From 0c6a76ea71cd766f4bc448a822505143cdb46c4f Mon Sep 17 00:00:00 2001 From: Tobias Kunze Date: Sun, 15 Jun 2025 18:14:47 +0200 Subject: [PATCH] Add labels and annotations to org namespaces --- src/servala/core/models/service.py | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/servala/core/models/service.py b/src/servala/core/models/service.py index b60edbf..f8c14bb 100644 --- a/src/servala/core/models/service.py +++ b/src/servala/core/models/service.py @@ -217,9 +217,28 @@ class ControlPlane(ServalaModelMixin, models.Model): api_instance.read_namespace(name=name) except kubernetes.client.ApiException as e: if e.status == 404: - # Namespace does not exist, create it + labels = { + "servala.com/organization_id": str(organization.id), + } + annotations = { + "servala.com/organization": organization.name, + "servala.com/billing": organization.origin.name, + "servala.com/origin": organization.billing_entity.name, + } + + for field in ("company_id", "invoice_id"): + if value := getattr(organization.billing_entity, f"odoo_{field}"): + labels[f"servala.com/erp_{field}"] = value + + if organization.odoo_sale_order_id: + annotations["servala.com/sales_order"] = str( + organization.odoo_sale_order_id + ) + body = kubernetes.client.V1Namespace( - metadata=kubernetes.client.V1ObjectMeta(name=name) + metadata=kubernetes.client.V1ObjectMeta( + name=name, labels=labels, annotations=annotations + ) ) api_instance.create_namespace(body=body) else: