From 5fe26e9dc9f0203c1966421f76c54ceb7fdf7780 Mon Sep 17 00:00:00 2001 From: Jon Edvald Date: Sun, 16 Sep 2018 14:25:36 -0700 Subject: [PATCH] fix(k8s): name releases based on their namespace This avoids potential conflicts when multiple sub-projects have the same name. BREAKING CHANGE: Users may need to delete and re-init their projects when using the Kubernetes plugins after installing this update, because Helm may get confused by the changes. --- garden-cli/src/plugins/kubernetes/helm.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/garden-cli/src/plugins/kubernetes/helm.ts b/garden-cli/src/plugins/kubernetes/helm.ts index 7602c4a0cc..f48043ed86 100644 --- a/garden-cli/src/plugins/kubernetes/helm.ts +++ b/garden-cli/src/plugins/kubernetes/helm.ts @@ -140,8 +140,8 @@ export const helmHandlers: Partial> = { const provider = ctx.provider const chartPath = await getChartPath(module) const valuesPath = getValuesPath(chartPath) - const releaseName = getReleaseName(ctx, service) const namespace = await getAppNamespace(ctx, ctx.provider) + const releaseName = getReleaseName(namespace, service) const releaseStatus = await getReleaseStatus(ctx.provider, releaseName) @@ -170,7 +170,8 @@ export const helmHandlers: Partial> = { async deleteService(params: DeleteServiceParams): Promise { const { ctx, logEntry, service } = params - const releaseName = getReleaseName(ctx, service) + const namespace = await getAppNamespace(ctx, ctx.provider) + const releaseName = getReleaseName(namespace, service) await helm(ctx.provider, "delete", "--purge", releaseName) logEntry && logEntry.setSuccess("Service deleted") @@ -241,7 +242,7 @@ async function getChartObjects(ctx: PluginContext, service: Service) { const chartPath = await getChartPath(service.module) const valuesPath = getValuesPath(chartPath) const namespace = await getAppNamespace(ctx, ctx.provider) - const releaseName = getReleaseName(ctx, service) + const releaseName = getReleaseName(namespace, service) const objects = safeLoadAll(await helm(ctx.provider, "template", @@ -288,8 +289,8 @@ async function getServiceStatus( return { state, version: version.versionString } } -function getReleaseName(ctx: PluginContext, service: Service) { - return `garden--${ctx.projectName}--${service.name}` +function getReleaseName(namespace: string, service: Service) { + return `${namespace}--${service.name}` } async function getReleaseStatus(provider: KubernetesProvider, releaseName: string): Promise {