From cfc42eaf4677d842f76dc2217aafa4b1e50551bc Mon Sep 17 00:00:00 2001 From: hsiegeln <37154749+hsiegeln@users.noreply.github.com> Date: Sat, 11 Apr 2026 09:10:59 +0200 Subject: [PATCH] feat: add cameleer.tenant label to deployed app containers Allows the SaaS platform to identify and clean up all containers belonging to a tenant on delete (cameleer/cameleer-saas#55). Co-Authored-By: Claude Opus 4.6 (1M context) --- .../com/cameleer3/server/app/runtime/DeploymentExecutor.java | 2 +- .../com/cameleer3/server/app/runtime/TraefikLabelBuilder.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DeploymentExecutor.java b/cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DeploymentExecutor.java index 7208f3f0..aec9fc7e 100644 --- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DeploymentExecutor.java +++ b/cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DeploymentExecutor.java @@ -129,7 +129,7 @@ public class DeploymentExecutor { updateStage(deployment.id(), DeployStage.START_REPLICAS); Map baseEnvVars = buildEnvVars(app, env, config); - Map labels = TraefikLabelBuilder.build(app.slug(), env.slug(), config); + Map labels = TraefikLabelBuilder.build(app.slug(), env.slug(), tenantId, config); List> replicaStates = new ArrayList<>(); List newContainerIds = new ArrayList<>(); diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/TraefikLabelBuilder.java b/cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/TraefikLabelBuilder.java index 261e26f0..80a68464 100644 --- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/TraefikLabelBuilder.java +++ b/cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/TraefikLabelBuilder.java @@ -9,12 +9,13 @@ public final class TraefikLabelBuilder { private TraefikLabelBuilder() {} - public static Map build(String appSlug, String envSlug, ResolvedContainerConfig config) { + public static Map build(String appSlug, String envSlug, String tenantId, ResolvedContainerConfig config) { String svc = envSlug + "-" + appSlug; Map labels = new LinkedHashMap<>(); labels.put("traefik.enable", "true"); labels.put("managed-by", "cameleer3-server"); + labels.put("cameleer.tenant", tenantId); labels.put("cameleer.app", appSlug); labels.put("cameleer.environment", envSlug);