From 31e7b419d7b1011413086117a133ac0bade9df84 Mon Sep 17 00:00:00 2001 From: Manuel Ruck Date: Sun, 18 Aug 2024 09:09:28 +0200 Subject: [PATCH 1/3] fix: add applyArgs to kubectl apply function Signed-off-by: Manuel Ruck --- .../src/plugins/kubernetes/kubernetes-type/config.ts | 2 ++ .../plugins/kubernetes/kubernetes-type/handlers.ts | 12 ++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/core/src/plugins/kubernetes/kubernetes-type/config.ts b/core/src/plugins/kubernetes/kubernetes-type/config.ts index 12c9cb8705..1c878065f1 100644 --- a/core/src/plugins/kubernetes/kubernetes-type/config.ts +++ b/core/src/plugins/kubernetes/kubernetes-type/config.ts @@ -32,6 +32,7 @@ import type { KubernetesExecTestActionConfig, } from "./kubernetes-exec.js" import { dedent } from "../../../util/string.js" +import type { ApplyParams } from "../kubectl.js" export interface KubernetesTypeCommonDeploySpec { files: string[] @@ -40,6 +41,7 @@ export interface KubernetesTypeCommonDeploySpec { manifests: KubernetesResource[] namespace?: string portForwards?: PortForwardSpec[] + applyArgs?: ApplyParams["applyArgs"] } export interface KubernetesDeployActionSpec extends KubernetesTypeCommonDeploySpec { diff --git a/core/src/plugins/kubernetes/kubernetes-type/handlers.ts b/core/src/plugins/kubernetes/kubernetes-type/handlers.ts index b27ca5a641..bd0dd2eabb 100644 --- a/core/src/plugins/kubernetes/kubernetes-type/handlers.ts +++ b/core/src/plugins/kubernetes/kubernetes-type/handlers.ts @@ -377,7 +377,7 @@ export const kubernetesDeploy: DeployActionHandler<"deploy", KubernetesDeployAct if (namespaceManifests.length > 0) { // Don't prune namespaces - await apply({ log, ctx, api, provider, manifests: namespaceManifests }) + await apply({ log, ctx, api, provider, manifests: namespaceManifests, applyArgs: spec.applyArgs }) await waitForResources({ namespace, ctx, @@ -410,7 +410,15 @@ export const kubernetesDeploy: DeployActionHandler<"deploy", KubernetesDeployAct // TODO: Similarly to `container` deployments, check if immutable fields have changed (and delete before // redeploying, unless in a production environment). - await apply({ log, ctx, api, provider: k8sCtx.provider, manifests: preparedManifests, pruneLabels }) + await apply({ + log, + ctx, + api, + provider: k8sCtx.provider, + manifests: preparedManifests, + pruneLabels, + applyArgs: spec.applyArgs, + }) await waitForResources({ namespace, ctx, From 7dbfa0965c60b4b5031919b4ca59fbfa0147c7da Mon Sep 17 00:00:00 2001 From: Manuel Ruck Date: Wed, 21 Aug 2024 06:02:36 +0200 Subject: [PATCH 2/3] test: add applyArgs test for kubernetes deploy Signed-off-by: Manuel Ruck --- .../kubernetes-type/apply-args/garden.yml | 9 ++++++++ .../kubernetes-type/apply-args/manifests.yaml | 21 +++++++++++++++++++ .../kubernetes/kubernetes-type/handlers.ts | 7 +++++++ 3 files changed, 37 insertions(+) create mode 100644 core/test/data/test-projects/kubernetes-type/apply-args/garden.yml create mode 100644 core/test/data/test-projects/kubernetes-type/apply-args/manifests.yaml diff --git a/core/test/data/test-projects/kubernetes-type/apply-args/garden.yml b/core/test/data/test-projects/kubernetes-type/apply-args/garden.yml new file mode 100644 index 0000000000..8a50a44cbf --- /dev/null +++ b/core/test/data/test-projects/kubernetes-type/apply-args/garden.yml @@ -0,0 +1,9 @@ +kind: Deploy +name: apply-args +type: kubernetes + +spec: + applyArgs: + - --server-side + files: + - manifests.yaml \ No newline at end of file diff --git a/core/test/data/test-projects/kubernetes-type/apply-args/manifests.yaml b/core/test/data/test-projects/kubernetes-type/apply-args/manifests.yaml new file mode 100644 index 0000000000..1327f2da32 --- /dev/null +++ b/core/test/data/test-projects/kubernetes-type/apply-args/manifests.yaml @@ -0,0 +1,21 @@ +apiVersion: v1 +items: + - apiVersion: v1 + data: + foo.json: test + kind: ConfigMap + metadata: + name: foo + - apiVersion: v1 + data: + bar.json: test + kind: ConfigMap + metadata: + name: bar + - apiVersion: v1 + data: + baz.json: test + kind: ConfigMap + metadata: + name: baz +kind: ConfigMapList diff --git a/core/test/integ/src/plugins/kubernetes/kubernetes-type/handlers.ts b/core/test/integ/src/plugins/kubernetes/kubernetes-type/handlers.ts index 9790217149..84f071185c 100644 --- a/core/test/integ/src/plugins/kubernetes/kubernetes-type/handlers.ts +++ b/core/test/integ/src/plugins/kubernetes/kubernetes-type/handlers.ts @@ -490,6 +490,13 @@ describe("kubernetes-type handlers", () => { // test successful deploy await kubernetesDeploy(configMapList.deployParams) }) + + it("should successfully deploy with custom applyArgs", async () => { + const { deployParams } = await prepareActionDeployParams("apply-args", {}) + + const status = await kubernetesDeploy(deployParams) + expect(status.state).to.eql("ready") + }) }) describe("deleteKubernetesDeploy", () => { From a8b41cc6d0409472dbd361aa247a9df469725af1 Mon Sep 17 00:00:00 2001 From: Vladimir Vagaytsev <10628074+vvagaytsev@users.noreply.github.com> Date: Tue, 3 Sep 2024 14:27:14 +0200 Subject: [PATCH 3/3] test: ensure that custom applyArgs are passed in and applied --- .../test-projects/kubernetes-type/apply-args/garden.yml | 4 ++-- .../src/plugins/kubernetes/kubernetes-type/handlers.ts | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/core/test/data/test-projects/kubernetes-type/apply-args/garden.yml b/core/test/data/test-projects/kubernetes-type/apply-args/garden.yml index 8a50a44cbf..81bfb908bd 100644 --- a/core/test/data/test-projects/kubernetes-type/apply-args/garden.yml +++ b/core/test/data/test-projects/kubernetes-type/apply-args/garden.yml @@ -4,6 +4,6 @@ type: kubernetes spec: applyArgs: - - --server-side + - --unknown-apply-flag files: - - manifests.yaml \ No newline at end of file + - manifests.yaml diff --git a/core/test/integ/src/plugins/kubernetes/kubernetes-type/handlers.ts b/core/test/integ/src/plugins/kubernetes/kubernetes-type/handlers.ts index 84f071185c..6ebfbaf4c2 100644 --- a/core/test/integ/src/plugins/kubernetes/kubernetes-type/handlers.ts +++ b/core/test/integ/src/plugins/kubernetes/kubernetes-type/handlers.ts @@ -13,6 +13,7 @@ import cloneDeep from "fast-copy" import tmp from "tmp-promise" import type { TestGarden } from "../../../../../helpers.js" +import { expectError } from "../../../../../helpers.js" import { getKubernetesTestGarden } from "./common.js" import { DeployTask } from "../../../../../../src/tasks/deploy.js" import { @@ -491,11 +492,11 @@ describe("kubernetes-type handlers", () => { await kubernetesDeploy(configMapList.deployParams) }) - it("should successfully deploy with custom applyArgs", async () => { + it("should apply the custom applyArgs to the deployment", async () => { + // This example has a bad custom argument - it is `--unknown-apply-flag`. const { deployParams } = await prepareActionDeployParams("apply-args", {}) - const status = await kubernetesDeploy(deployParams) - expect(status.state).to.eql("ready") + await expectError(() => kubernetesDeploy(deployParams), { contains: "error: unknown flag: --unknown-apply-flag" }) }) })