From 9ad1554ca9ba51c72fc9856a818683fafbb87f36 Mon Sep 17 00:00:00 2001 From: Kim Schaefer Date: Sun, 3 Dec 2023 19:11:23 -0700 Subject: [PATCH 1/3] added get containers function and test --- src/lib.ts | 2 ++ src/lib/module-helpers.test.ts | 39 ++++++++++++++++++++++++++++++++++ src/lib/module-helpers.ts | 14 ++++++++++++ 3 files changed, 55 insertions(+) create mode 100644 src/lib/module-helpers.test.ts create mode 100644 src/lib/module-helpers.ts diff --git a/src/lib.ts b/src/lib.ts index 171f9db3..c697c213 100644 --- a/src/lib.ts +++ b/src/lib.ts @@ -7,6 +7,7 @@ import { PeprModule } from "./lib/module"; import { PeprMutateRequest } from "./lib/mutate-request"; import * as PeprUtils from "./lib/utils"; import { PeprValidateRequest } from "./lib/validate-request"; +import { containers } from "./lib/module-helpers"; export { Capability, @@ -22,4 +23,5 @@ export { fetch, fetchStatus, kind, + containers, }; diff --git a/src/lib/module-helpers.test.ts b/src/lib/module-helpers.test.ts new file mode 100644 index 00000000..5069b423 --- /dev/null +++ b/src/lib/module-helpers.test.ts @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: Apache-2.0 +// SPDX-FileCopyrightText: 2023-Present The Pepr Authors + +import { expect, test } from "@jest/globals"; +import { PeprValidateRequest } from "./validate-request"; +import { a } from "../lib"; +import { containers } from "./module-helpers"; + +test("should return a list of containers in the pod", async () => { + const standardContainers = [ + { + name: "container-1", + }, + ]; + const initContainers = [ + { + name: "init-container-1", + }, + ]; + const ephemeralContainers = [ + { + name: "ephemeral-container-1", + }, + ]; + const allContainers = [...standardContainers, ...initContainers, ...ephemeralContainers]; + const peprValidationRequest = { + Raw: { + spec: { + containers: standardContainers, + initContainers, + ephemeralContainers, + }, + }, + } as PeprValidateRequest; + + const result = containers(peprValidationRequest); + expect(result).toEqual(expect.arrayContaining(allContainers)); + expect(result).toHaveLength(allContainers.length); +}); diff --git a/src/lib/module-helpers.ts b/src/lib/module-helpers.ts new file mode 100644 index 00000000..60b67030 --- /dev/null +++ b/src/lib/module-helpers.ts @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: Apache-2.0 +// SPDX-FileCopyrightText: 2023-Present The Pepr Authors + +import { PeprValidateRequest } from "./validate-request"; +import { a } from "../lib"; + +// Returns all containers in the pod +export function containers(request: PeprValidateRequest) { + return [ + ...(request.Raw.spec?.containers || []), + ...(request.Raw.spec?.initContainers || []), + ...(request.Raw.spec?.ephemeralContainers || []), + ]; +} From 61eb830c67207a562af626c723af52e9fa6676a6 Mon Sep 17 00:00:00 2001 From: Kim Schaefer Date: Mon, 4 Dec 2023 16:37:05 -0700 Subject: [PATCH 2/3] updated module-helpers to add parameter to select which type of containers to return --- src/lib/module-helpers.test.ts | 14 +++++++++++++- src/lib/module-helpers.ts | 21 +++++++++++++++------ 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/src/lib/module-helpers.test.ts b/src/lib/module-helpers.test.ts index 5069b423..345bacb8 100644 --- a/src/lib/module-helpers.test.ts +++ b/src/lib/module-helpers.test.ts @@ -33,7 +33,19 @@ test("should return a list of containers in the pod", async () => { }, } as PeprValidateRequest; - const result = containers(peprValidationRequest); + let result = containers(peprValidationRequest); expect(result).toEqual(expect.arrayContaining(allContainers)); expect(result).toHaveLength(allContainers.length); + + result = containers(peprValidationRequest, "containers"); + expect(result).toEqual(expect.arrayContaining(standardContainers)); + expect(result).toHaveLength(standardContainers.length); + + result = containers(peprValidationRequest, "initContainers"); + expect(result).toEqual(expect.arrayContaining(initContainers)); + expect(result).toHaveLength(initContainers.length); + + result = containers(peprValidationRequest, "ephemeralContainers"); + expect(result).toEqual(expect.arrayContaining(ephemeralContainers)); + expect(result).toHaveLength(ephemeralContainers.length); }); diff --git a/src/lib/module-helpers.ts b/src/lib/module-helpers.ts index 60b67030..9fca5901 100644 --- a/src/lib/module-helpers.ts +++ b/src/lib/module-helpers.ts @@ -5,10 +5,19 @@ import { PeprValidateRequest } from "./validate-request"; import { a } from "../lib"; // Returns all containers in the pod -export function containers(request: PeprValidateRequest) { - return [ - ...(request.Raw.spec?.containers || []), - ...(request.Raw.spec?.initContainers || []), - ...(request.Raw.spec?.ephemeralContainers || []), - ]; +export function containers(request: PeprValidateRequest, containerTypes?: "containers" | "initContainers" | "ephemeralContainers") { + const containers = request.Raw.spec?.containers || []; + const initContainers = request.Raw.spec?.initContainers || []; + const ephemeralContainers = request.Raw.spec?.ephemeralContainers || []; + + if (containerTypes === "containers") { + return containers; + } + if (containerTypes === "initContainers") { + return initContainers; + } + if (containerTypes === "ephemeralContainers") { + return ephemeralContainers; + } + return [...containers, ...initContainers, ...ephemeralContainers] } From e69117eaa05a99b722a4d5ca4f8947cf9da9bc87 Mon Sep 17 00:00:00 2001 From: Kim Schaefer Date: Mon, 4 Dec 2023 17:03:18 -0700 Subject: [PATCH 3/3] format fix --- src/lib/module-helpers.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/lib/module-helpers.ts b/src/lib/module-helpers.ts index 9fca5901..3dbd52ce 100644 --- a/src/lib/module-helpers.ts +++ b/src/lib/module-helpers.ts @@ -5,7 +5,10 @@ import { PeprValidateRequest } from "./validate-request"; import { a } from "../lib"; // Returns all containers in the pod -export function containers(request: PeprValidateRequest, containerTypes?: "containers" | "initContainers" | "ephemeralContainers") { +export function containers( + request: PeprValidateRequest, + containerTypes?: "containers" | "initContainers" | "ephemeralContainers", +) { const containers = request.Raw.spec?.containers || []; const initContainers = request.Raw.spec?.initContainers || []; const ephemeralContainers = request.Raw.spec?.ephemeralContainers || []; @@ -19,5 +22,5 @@ export function containers(request: PeprValidateRequest, containerTypes?: if (containerTypes === "ephemeralContainers") { return ephemeralContainers; } - return [...containers, ...initContainers, ...ephemeralContainers] + return [...containers, ...initContainers, ...ephemeralContainers]; }