pepr 0.26.2 → 0.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +572 -97
- package/dist/controller.js +1 -1
- package/dist/lib/assets/helm.d.ts +5 -0
- package/dist/lib/assets/helm.d.ts.map +1 -0
- package/dist/lib/assets/index.d.ts +4 -0
- package/dist/lib/assets/index.d.ts.map +1 -1
- package/dist/lib/assets/pods.d.ts +9 -2
- package/dist/lib/assets/pods.d.ts.map +1 -1
- package/dist/lib/assets/yaml.d.ts +1 -0
- package/dist/lib/assets/yaml.d.ts.map +1 -1
- package/dist/lib/filter.d.ts.map +1 -1
- package/dist/lib/helpers.d.ts +9 -0
- package/dist/lib/helpers.d.ts.map +1 -1
- package/dist/lib/k8s.d.ts +0 -11
- package/dist/lib/k8s.d.ts.map +1 -1
- package/dist/lib/module.d.ts +0 -2
- package/dist/lib/module.d.ts.map +1 -1
- package/dist/lib/watch-processor.d.ts.map +1 -1
- package/dist/lib.js +86 -27
- package/dist/lib.js.map +4 -4
- package/package.json +9 -9
- package/src/cli.ts +2 -0
- package/src/lib/assets/deploy.ts +2 -2
- package/src/lib/assets/helm.ts +199 -0
- package/src/lib/assets/index.ts +121 -4
- package/src/lib/assets/pods.ts +22 -12
- package/src/lib/assets/yaml.ts +116 -4
- package/src/lib/filter.ts +4 -1
- package/src/lib/helpers.ts +120 -5
- package/src/lib/k8s.ts +0 -11
- package/src/lib/module.ts +0 -2
- package/src/lib/watch-processor.ts +21 -10
- package/src/templates/package.json +4 -3
package/dist/controller.js
CHANGED
|
@@ -49,7 +49,7 @@ if (process.env.LOG_LEVEL) {
|
|
|
49
49
|
var logger_default = Log;
|
|
50
50
|
|
|
51
51
|
// src/templates/data.json
|
|
52
|
-
var packageJSON = { name: "pepr", description: "Kubernetes application engine", author: "Defense Unicorns", homepage: "https://github.com/defenseunicorns/pepr", license: "Apache-2.0", bin: "dist/cli.js", repository: "defenseunicorns/pepr", engines: { node: ">=18.0.0" }, version: "0.
|
|
52
|
+
var packageJSON = { name: "pepr", description: "Kubernetes application engine", author: "Defense Unicorns", homepage: "https://github.com/defenseunicorns/pepr", license: "Apache-2.0", bin: "dist/cli.js", repository: "defenseunicorns/pepr", engines: { node: ">=18.0.0" }, version: "0.28.0", main: "dist/lib.js", types: "dist/lib.d.ts", scripts: { "gen-data-json": "node hack/build-template-data.js", prebuild: "rm -fr dist/* && npm run gen-data-json", build: "tsc && node build.mjs", test: "npm run test:unit && npm run test:journey", "test:unit": "npm run gen-data-json && jest src --coverage --detectOpenHandles --coverageDirectory=./coverage", "test:journey": "npm run test:journey:k3d && npm run test:journey:build && npm run test:journey:image && npm run test:journey:run", "test:journey:prep": "if [ ! -d ./pepr-upgrade-test ]; then git clone https://github.com/defenseunicorns/pepr-upgrade-test.git ; fi", "test:journey-wasm": "npm run test:journey:k3d && npm run test:journey:build && npm run test:journey:image && npm run test:journey:run-wasm", "test:journey:k3d": "k3d cluster delete pepr-dev && k3d cluster create pepr-dev --k3s-arg '--debug@server:0' --wait && kubectl rollout status deployment -n kube-system", "test:journey:build": "npm run build && npm pack", "test:journey:image": "docker buildx build --tag pepr:dev . && k3d image import pepr:dev -c pepr-dev", "test:journey:run": "jest --detectOpenHandles journey/entrypoint.test.ts && npm run test:journey:prep && npm run test:journey:upgrade", "test:journey:run-wasm": "jest --detectOpenHandles journey/entrypoint-wasm.test.ts", "test:journey:upgrade": "npm run test:journey:k3d && npm run test:journey:image && jest --detectOpenHandles journey/pepr-upgrade.test.ts", "format:check": "eslint src && prettier src --check", "format:fix": "eslint src --fix && prettier src --write" }, dependencies: { "@types/ramda": "0.29.11", express: "4.18.3", "fast-json-patch": "3.1.1", "kubernetes-fluent-client": "2.2.2", pino: "8.19.0", "pino-pretty": "10.3.1", "prom-client": "15.1.0", ramda: "0.29.1" }, devDependencies: { "@commitlint/cli": "19.0.3", "@commitlint/config-conventional": "19.0.3", "@jest/globals": "29.7.0", "@types/eslint": "8.56.5", "@types/express": "4.17.21", "@types/node": "18.x.x", "@types/node-forge": "1.3.11", "@types/prompts": "2.4.9", "@types/uuid": "9.0.8", jest: "29.7.0", nock: "13.5.4", "ts-jest": "29.1.2" }, peerDependencies: { "@typescript-eslint/eslint-plugin": "6.15.0", "@typescript-eslint/parser": "6.15.0", commander: "11.1.0", esbuild: "0.19.10", eslint: "8.56.0", "node-forge": "1.3.1", prettier: "3.1.1", prompts: "2.4.2", typescript: "5.3.3", uuid: "9.0.1" } };
|
|
53
53
|
|
|
54
54
|
// src/lib/k8s.ts
|
|
55
55
|
var import_kubernetes_fluent_client = require("kubernetes-fluent-client");
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function nsTemplate(): string;
|
|
2
|
+
export declare function chartYaml(name: string, description?: string): string;
|
|
3
|
+
export declare function watcherDeployTemplate(buildTimestamp: string): string;
|
|
4
|
+
export declare function admissionDeployTemplate(buildTimestamp: string): string;
|
|
5
|
+
//# sourceMappingURL=helm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helm.d.ts","sourceRoot":"","sources":["../../../src/lib/assets/helm.ts"],"names":[],"mappings":"AAGA,wBAAgB,UAAU,WAezB;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,UA2B3D;AAED,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,MAAM,UAuE3D;AAED,wBAAgB,uBAAuB,CAAC,cAAc,EAAE,MAAM,UA4E7D"}
|
|
@@ -12,9 +12,13 @@ export declare class Assets {
|
|
|
12
12
|
readonly alwaysIgnore: WebhookIgnore;
|
|
13
13
|
capabilities: CapabilityExport[];
|
|
14
14
|
image: string;
|
|
15
|
+
buildTimestamp: string;
|
|
16
|
+
hash: string;
|
|
15
17
|
constructor(config: ModuleConfig, path: string, host?: string | undefined);
|
|
18
|
+
setHash: (hash: string) => void;
|
|
16
19
|
deploy: (force: boolean, webhookTimeout?: number) => Promise<void>;
|
|
17
20
|
zarfYaml: (path: string) => string;
|
|
18
21
|
allYaml: (rbacMode: string) => Promise<string>;
|
|
22
|
+
generateHelmChart: (basePath: string) => Promise<void>;
|
|
19
23
|
}
|
|
20
24
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/assets/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/assets/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAcvC,qBAAa,MAAM;IAYf,QAAQ,CAAC,MAAM,EAAE,YAAY;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,IAAI,CAAC;IAbhB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAG,aAAa,CAAC;IACtC,YAAY,EAAG,gBAAgB,EAAE,CAAC;IAElC,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;gBAGF,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,oBAAQ;IAcxB,OAAO,SAAU,MAAM,UAErB;IAEF,MAAM,UAAiB,OAAO,mBAAmB,MAAM,mBAGrD;IAEF,QAAQ,SAAU,MAAM,YAA0B;IAElD,OAAO,aAAoB,MAAM,qBAQ/B;IAEF,iBAAiB,aAAoB,MAAM,mBAoGzC;CACH"}
|
|
@@ -10,8 +10,15 @@ export declare function namespace(namespaceLabels?: Record<string, string>): {
|
|
|
10
10
|
name: string;
|
|
11
11
|
labels: Record<string, string>;
|
|
12
12
|
};
|
|
13
|
+
} | {
|
|
14
|
+
apiVersion: string;
|
|
15
|
+
kind: string;
|
|
16
|
+
metadata: {
|
|
17
|
+
name: string;
|
|
18
|
+
labels?: undefined;
|
|
19
|
+
};
|
|
13
20
|
};
|
|
14
|
-
export declare function watcher(assets: Assets, hash: string): {
|
|
21
|
+
export declare function watcher(assets: Assets, hash: string, buildTimestamp: string): {
|
|
15
22
|
apiVersion: string;
|
|
16
23
|
kind: string;
|
|
17
24
|
metadata: {
|
|
@@ -113,6 +120,6 @@ export declare function watcher(assets: Assets, hash: string): {
|
|
|
113
120
|
};
|
|
114
121
|
};
|
|
115
122
|
} | null;
|
|
116
|
-
export declare function deployment(assets: Assets, hash: string): kind.Deployment;
|
|
123
|
+
export declare function deployment(assets: Assets, hash: string, buildTimestamp: string): kind.Deployment;
|
|
117
124
|
export declare function moduleSecret(name: string, data: Buffer, hash: string): kind.Secret;
|
|
118
125
|
//# sourceMappingURL=pods.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pods.d.ts","sourceRoot":"","sources":["../../../src/lib/assets/pods.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAGhD,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC;AAI3B,yCAAyC;AACzC,wBAAgB,SAAS,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC
|
|
1
|
+
{"version":3,"file":"pods.d.ts","sourceRoot":"","sources":["../../../src/lib/assets/pods.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAGhD,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC;AAI3B,yCAAyC;AACzC,wBAAgB,SAAS,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;;;;;;;;;;EAmBjE;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAgJ3E;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC,UAAU,CAsIhG;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,CAuBlF"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Assets } from ".";
|
|
2
|
+
export declare function overridesFile({ hash, name, image, config, apiToken }: Assets, path: string): Promise<void>;
|
|
2
3
|
export declare function zarfYaml({ name, image, config }: Assets, path: string): string;
|
|
3
4
|
export declare function allYaml(assets: Assets, rbacMode: string): Promise<string>;
|
|
4
5
|
//# sourceMappingURL=yaml.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yaml.d.ts","sourceRoot":"","sources":["../../../src/lib/assets/yaml.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"yaml.d.ts","sourceRoot":"","sources":["../../../src/lib/assets/yaml.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC;AAO3B,wBAAsB,aAAa,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,iBA8GhG;AACD,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UA0BrE;AAED,wBAAsB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,mBAyC7D"}
|
package/dist/lib/filter.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../src/lib/filter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAa,MAAM,OAAO,CAAC;AAEpD,OAAO,EAAE,OAAO,EAAS,MAAM,SAAS,CAAC;AAEzC;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../src/lib/filter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAa,MAAM,OAAO,CAAC;AAEpD,OAAO,EAAE,OAAO,EAAS,MAAM,SAAS,CAAC;AAEzC;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,EAAE,WA+ExG"}
|
package/dist/lib/helpers.d.ts
CHANGED
|
@@ -1,10 +1,17 @@
|
|
|
1
|
+
import { KubernetesObject } from "kubernetes-fluent-client";
|
|
1
2
|
import { CapabilityExport } from "./types";
|
|
3
|
+
import { Binding } from "./types";
|
|
2
4
|
type RBACMap = {
|
|
3
5
|
[key: string]: {
|
|
4
6
|
verbs: string[];
|
|
5
7
|
plural: string;
|
|
6
8
|
};
|
|
7
9
|
};
|
|
10
|
+
export declare function checkOverlap(record1: Record<string, string>, record2: Record<string, string>): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Decide to run callback after the event comes back from API Server
|
|
13
|
+
**/
|
|
14
|
+
export declare const filterMatcher: (binding: Partial<Binding>, obj: Partial<KubernetesObject>, capabilityNamespaces: string[]) => string;
|
|
8
15
|
export declare const addVerbIfNotExists: (verbs: string[], verb: string) => void;
|
|
9
16
|
export declare const createRBACMap: (capabilities: CapabilityExport[]) => RBACMap;
|
|
10
17
|
export declare function createDirectoryIfNotExists(path: string): Promise<void>;
|
|
@@ -18,5 +25,7 @@ export declare function checkDeploymentStatus(namespace: string): Promise<boolea
|
|
|
18
25
|
export declare function namespaceDeploymentsReady(namespace?: string): Promise<true | undefined>;
|
|
19
26
|
export declare function secretOverLimit(str: string): boolean;
|
|
20
27
|
export declare const parseTimeout: (value: string, previous: unknown) => number;
|
|
28
|
+
export declare function dedent(file: string): string;
|
|
29
|
+
export declare function replaceString(str: string, stringA: string, stringB: string): string;
|
|
21
30
|
export {};
|
|
22
31
|
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/lib/helpers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/lib/helpers.ts"],"names":[],"mappings":"AAGA,OAAO,EAAO,gBAAgB,EAAQ,MAAM,0BAA0B,CAAC;AAEvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,KAAK,OAAO,GAAG;IACb,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,CAAC;AAGF,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WAc5F;AAED;;IAEI;AACJ,eAAO,MAAM,aAAa,YACf,QAAQ,OAAO,CAAC,OACpB,QAAQ,gBAAgB,CAAC,wBACR,MAAM,EAAE,KAC7B,MAiEF,CAAC;AACF,eAAO,MAAM,kBAAkB,UAAW,MAAM,EAAE,QAAQ,MAAM,SAI/D,CAAC;AAEF,eAAO,MAAM,aAAa,iBAAkB,gBAAgB,EAAE,KAAG,OAoBhE,CAAC;AAEF,wBAAsB,0BAA0B,CAAC,IAAI,EAAE,MAAM,iBAU5D;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,CAMpE;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,CAMlE;AAED,wBAAgB,wBAAwB,CAAC,gBAAgB,EAAE,MAAM,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,WAE/F;AAED,wBAAgB,8BAA8B,CAAC,iBAAiB,EAAE,MAAM,EAAE,EAAE,oBAAoB,EAAE,MAAM,EAAE,WAKzG;AAED,wBAAgB,2BAA2B,CACzC,iBAAiB,EAAE,MAAM,EAAE,EAC3B,iBAAiB,EAAE,MAAM,EAAE,EAC3B,oBAAoB,EAAE,MAAM,EAAE,UAoB/B;AAGD,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,EAAE,MAAM,EAAE,QActG;AAID,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,MAAM,oBAsB5D;AAGD,wBAAsB,yBAAyB,CAAC,SAAS,GAAE,MAAsB,6BAWhF;AAGD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAMpD;AAGD,eAAO,MAAM,YAAY,UAAW,MAAM,YAAY,OAAO,KAAG,MAW/D,CAAC;AAGF,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,UAelC;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,UAK1E"}
|
package/dist/lib/k8s.d.ts
CHANGED
|
@@ -128,16 +128,5 @@ export type WebhookIgnore = {
|
|
|
128
128
|
* Note: `kube-system` and `pepr-system` are always ignored.
|
|
129
129
|
*/
|
|
130
130
|
namespaces?: string[];
|
|
131
|
-
/**
|
|
132
|
-
* List of Kubernetes labels to always ignore.
|
|
133
|
-
* Any resources with these labels will be ignored by Pepr.
|
|
134
|
-
*
|
|
135
|
-
* The example below will ignore any resources with the label `my-label=ulta-secret`:
|
|
136
|
-
* ```
|
|
137
|
-
* alwaysIgnore:
|
|
138
|
-
* labels: [{ "my-label": "ultra-secret" }]
|
|
139
|
-
* ```
|
|
140
|
-
*/
|
|
141
|
-
labels?: Record<string, string>[];
|
|
142
131
|
};
|
|
143
132
|
//# sourceMappingURL=k8s.d.ts.map
|
package/dist/lib/k8s.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"k8s.d.ts","sourceRoot":"","sources":["../../src/lib/k8s.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"k8s.d.ts","sourceRoot":"","sources":["../../src/lib/k8s.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/module.d.ts
CHANGED
|
@@ -6,8 +6,6 @@ export interface CustomLabels {
|
|
|
6
6
|
}
|
|
7
7
|
/** Global configuration for the Pepr runtime. */
|
|
8
8
|
export type ModuleConfig = {
|
|
9
|
-
/** The user-defined name for the module */
|
|
10
|
-
name: string;
|
|
11
9
|
/** The Pepr version this module uses */
|
|
12
10
|
peprVersion?: string;
|
|
13
11
|
/** The user-defined version of the module */
|
package/dist/lib/module.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/lib/module.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAK1F,0CAA0C;AAC1C,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AACD,iDAAiD;AACjD,MAAM,MAAM,YAAY,GAAG;IACzB,
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/lib/module.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAK1F,0CAA0C;AAC1C,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AACD,iDAAiD;AACjD,MAAM,MAAM,YAAY,GAAG;IACzB,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yFAAyF;IACzF,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,YAAY,EAAE,aAAa,CAAC;IAC5B,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,2CAA2C;IAC3C,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,YAAY,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,qHAAqH;IACrH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAE7C,6GAA6G;IAC7G,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,GAAG,gBAAgB,KAAK,IAAI,CAAC;CAC9D,CAAC;AAGF,eAAO,MAAM,WAAW,eAA+C,CAAC;AAGxE,eAAO,MAAM,WAAW,eAA0C,CAAC;AAEnE,eAAO,MAAM,SAAS,eAAwC,CAAC;AAE/D,qBAAa,UAAU;;IAGrB;;;;;;OAMG;gBACS,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,YAAY,GAAE,UAAU,EAAO,EAAE,IAAI,GAAE,iBAAsB;IAoD7G;;;;;OAKG;IACH,KAAK,0BAEH;CACH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch-processor.d.ts","sourceRoot":"","sources":["../../src/lib/watch-processor.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"watch-processor.d.ts","sourceRoot":"","sources":["../../src/lib/watch-processor.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAa1C,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,iBAoC5C;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,iBAQxE"}
|
package/dist/lib.js
CHANGED
|
@@ -31,26 +31,26 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
31
31
|
var lib_exports = {};
|
|
32
32
|
__export(lib_exports, {
|
|
33
33
|
Capability: () => Capability,
|
|
34
|
-
K8s: () =>
|
|
34
|
+
K8s: () => import_kubernetes_fluent_client6.K8s,
|
|
35
35
|
Log: () => logger_default,
|
|
36
36
|
PeprModule: () => PeprModule,
|
|
37
37
|
PeprMutateRequest: () => PeprMutateRequest,
|
|
38
38
|
PeprUtils: () => utils_exports,
|
|
39
39
|
PeprValidateRequest: () => PeprValidateRequest,
|
|
40
40
|
R: () => R,
|
|
41
|
-
RegisterKind: () =>
|
|
42
|
-
a: () =>
|
|
41
|
+
RegisterKind: () => import_kubernetes_fluent_client6.RegisterKind,
|
|
42
|
+
a: () => import_kubernetes_fluent_client6.kind,
|
|
43
43
|
containers: () => containers,
|
|
44
|
-
fetch: () =>
|
|
45
|
-
fetchStatus: () =>
|
|
46
|
-
kind: () =>
|
|
44
|
+
fetch: () => import_kubernetes_fluent_client6.fetch,
|
|
45
|
+
fetchStatus: () => import_kubernetes_fluent_client6.fetchStatus,
|
|
46
|
+
kind: () => import_kubernetes_fluent_client6.kind
|
|
47
47
|
});
|
|
48
48
|
module.exports = __toCommonJS(lib_exports);
|
|
49
|
-
var
|
|
49
|
+
var import_kubernetes_fluent_client6 = require("kubernetes-fluent-client");
|
|
50
50
|
var R = __toESM(require("ramda"));
|
|
51
51
|
|
|
52
52
|
// src/lib/capability.ts
|
|
53
|
-
var
|
|
53
|
+
var import_kubernetes_fluent_client5 = require("kubernetes-fluent-client");
|
|
54
54
|
var import_ramda6 = require("ramda");
|
|
55
55
|
|
|
56
56
|
// src/lib/logger.ts
|
|
@@ -187,7 +187,7 @@ var peprStoreGVK = {
|
|
|
187
187
|
|
|
188
188
|
// src/lib/filter.ts
|
|
189
189
|
function shouldSkipRequest(binding, req, capabilityNamespaces) {
|
|
190
|
-
const { group, kind:
|
|
190
|
+
const { group, kind: kind3, version } = binding.kind || {};
|
|
191
191
|
const { namespaces, labels, annotations, name } = binding.filters || {};
|
|
192
192
|
const operation = req.operation.toUpperCase();
|
|
193
193
|
const srcObject = operation === "DELETE" /* DELETE */ ? req.oldObject : req.object;
|
|
@@ -199,7 +199,7 @@ function shouldSkipRequest(binding, req, capabilityNamespaces) {
|
|
|
199
199
|
if (name && name !== req.name) {
|
|
200
200
|
return true;
|
|
201
201
|
}
|
|
202
|
-
if (
|
|
202
|
+
if (kind3 !== req.kind.kind) {
|
|
203
203
|
return true;
|
|
204
204
|
}
|
|
205
205
|
if (group && group !== req.kind.group) {
|
|
@@ -208,7 +208,7 @@ function shouldSkipRequest(binding, req, capabilityNamespaces) {
|
|
|
208
208
|
if (version && version !== req.kind.version) {
|
|
209
209
|
return true;
|
|
210
210
|
}
|
|
211
|
-
if (combinedNamespaces.length && !combinedNamespaces.includes(req.namespace || "")) {
|
|
211
|
+
if (combinedNamespaces.length && !combinedNamespaces.includes(req.namespace || "") || !namespaces.includes(req.namespace || "") && capabilityNamespaces.length !== 0 && namespaces.length !== 0) {
|
|
212
212
|
logger_default.debug("Namespace does not match");
|
|
213
213
|
return true;
|
|
214
214
|
}
|
|
@@ -969,7 +969,7 @@ var Controller = class _Controller {
|
|
|
969
969
|
|
|
970
970
|
// src/lib/watch-processor.ts
|
|
971
971
|
var import_crypto = require("crypto");
|
|
972
|
-
var
|
|
972
|
+
var import_kubernetes_fluent_client4 = require("kubernetes-fluent-client");
|
|
973
973
|
var import_types2 = require("kubernetes-fluent-client/dist/fluent/types");
|
|
974
974
|
|
|
975
975
|
// src/lib/queue.ts
|
|
@@ -1023,6 +1023,53 @@ var Queue = class {
|
|
|
1023
1023
|
}
|
|
1024
1024
|
};
|
|
1025
1025
|
|
|
1026
|
+
// src/lib/helpers.ts
|
|
1027
|
+
var import_kubernetes_fluent_client3 = require("kubernetes-fluent-client");
|
|
1028
|
+
function checkOverlap(record1, record2) {
|
|
1029
|
+
if (Object.keys(record1).length === 0) {
|
|
1030
|
+
return true;
|
|
1031
|
+
}
|
|
1032
|
+
for (const key in record1) {
|
|
1033
|
+
if (Object.prototype.hasOwnProperty.call(record1, key) && Object.prototype.hasOwnProperty.call(record2, key) && record1[key] === record2[key]) {
|
|
1034
|
+
return true;
|
|
1035
|
+
}
|
|
1036
|
+
}
|
|
1037
|
+
return false;
|
|
1038
|
+
}
|
|
1039
|
+
var filterMatcher = (binding, obj, capabilityNamespaces) => {
|
|
1040
|
+
if (binding.kind && binding.kind.kind === "Namespace" && binding.filters && binding.filters.namespaces.length !== 0) {
|
|
1041
|
+
return `Ignoring Watch Callback: Cannot use a namespace filter in a namespace object.`;
|
|
1042
|
+
}
|
|
1043
|
+
if (typeof obj === "object" && obj !== null && "metadata" in obj && obj.metadata !== void 0 && binding.filters) {
|
|
1044
|
+
if (obj.metadata.labels && !checkOverlap(binding.filters.labels, obj.metadata.labels)) {
|
|
1045
|
+
return `Ignoring Watch Callback: No overlap between binding and object labels. Binding labels ${JSON.stringify(
|
|
1046
|
+
binding.filters.labels
|
|
1047
|
+
)}, Object Labels ${JSON.stringify(obj.metadata.labels)}.`;
|
|
1048
|
+
}
|
|
1049
|
+
if (obj.metadata.annotations && !checkOverlap(binding.filters.annotations, obj.metadata.annotations)) {
|
|
1050
|
+
return `Ignoring Watch Callback: No overlap between binding and object annotations. Binding annotations ${JSON.stringify(
|
|
1051
|
+
binding.filters.annotations
|
|
1052
|
+
)}, Object annotations ${JSON.stringify(obj.metadata.annotations)}.`;
|
|
1053
|
+
}
|
|
1054
|
+
}
|
|
1055
|
+
if (Array.isArray(capabilityNamespaces) && capabilityNamespaces.length > 0 && obj.metadata && obj.metadata.namespace && !capabilityNamespaces.includes(obj.metadata.namespace)) {
|
|
1056
|
+
return `Ignoring Watch Callback: Object is not in the capability namespace. Capability namespaces: ${capabilityNamespaces.join(
|
|
1057
|
+
", "
|
|
1058
|
+
)}, Object namespace: ${obj.metadata.namespace}.`;
|
|
1059
|
+
}
|
|
1060
|
+
if (Array.isArray(capabilityNamespaces) && capabilityNamespaces.length > 0 && binding.filters && Array.isArray(binding.filters.namespaces) && binding.filters.namespaces.length > 0 && !binding.filters.namespaces.every((ns) => capabilityNamespaces.includes(ns))) {
|
|
1061
|
+
return `Ignoring Watch Callback: Binding namespace is not part of capability namespaces. Capability namespaces: ${capabilityNamespaces.join(
|
|
1062
|
+
", "
|
|
1063
|
+
)}, Binding namespaces: ${binding.filters.namespaces.join(", ")}.`;
|
|
1064
|
+
}
|
|
1065
|
+
if (binding.filters && Array.isArray(binding.filters.namespaces) && binding.filters.namespaces.length > 0 && obj.metadata && obj.metadata.namespace && !binding.filters.namespaces.includes(obj.metadata.namespace)) {
|
|
1066
|
+
return `Ignoring Watch Callback: Binding namespace and object namespace are not the same. Binding namespaces: ${binding.filters.namespaces.join(
|
|
1067
|
+
", "
|
|
1068
|
+
)}, Object namespace: ${obj.metadata.namespace}.`;
|
|
1069
|
+
}
|
|
1070
|
+
return "";
|
|
1071
|
+
};
|
|
1072
|
+
|
|
1026
1073
|
// src/lib/watch-processor.ts
|
|
1027
1074
|
var storeUpdates = false;
|
|
1028
1075
|
var store = {};
|
|
@@ -1030,7 +1077,7 @@ async function setupStore(uuid) {
|
|
|
1030
1077
|
const name = `pepr-${uuid}-watch`;
|
|
1031
1078
|
const namespace2 = "pepr-system";
|
|
1032
1079
|
try {
|
|
1033
|
-
const k8sStore = await (0,
|
|
1080
|
+
const k8sStore = await (0, import_kubernetes_fluent_client4.K8s)(PeprStore).InNamespace(namespace2).Get(name);
|
|
1034
1081
|
Object.entries(k8sStore.data).forEach(([key, value]) => {
|
|
1035
1082
|
store[key] = value;
|
|
1036
1083
|
});
|
|
@@ -1039,7 +1086,7 @@ async function setupStore(uuid) {
|
|
|
1039
1086
|
}
|
|
1040
1087
|
setInterval(() => {
|
|
1041
1088
|
if (storeUpdates) {
|
|
1042
|
-
(0,
|
|
1089
|
+
(0, import_kubernetes_fluent_client4.K8s)(PeprStore).Apply({
|
|
1043
1090
|
metadata: {
|
|
1044
1091
|
name,
|
|
1045
1092
|
namespace: namespace2
|
|
@@ -1053,9 +1100,11 @@ async function setupStore(uuid) {
|
|
|
1053
1100
|
}
|
|
1054
1101
|
async function setupWatch(uuid, capabilities) {
|
|
1055
1102
|
await setupStore(uuid);
|
|
1056
|
-
capabilities.
|
|
1103
|
+
capabilities.map(
|
|
1104
|
+
(capability) => capability.bindings.filter((binding) => binding.isWatch).forEach((bindingElement) => runBinding(bindingElement, capability.namespaces))
|
|
1105
|
+
);
|
|
1057
1106
|
}
|
|
1058
|
-
async function runBinding(binding) {
|
|
1107
|
+
async function runBinding(binding, capabilityNamespaces) {
|
|
1059
1108
|
const eventToPhaseMap = {
|
|
1060
1109
|
["CREATE" /* Create */]: [import_types2.WatchPhase.Added],
|
|
1061
1110
|
["UPDATE" /* Update */]: [import_types2.WatchPhase.Modified],
|
|
@@ -1071,23 +1120,33 @@ async function runBinding(binding) {
|
|
|
1071
1120
|
let watcher;
|
|
1072
1121
|
if (binding.isQueue) {
|
|
1073
1122
|
const queue = new Queue();
|
|
1074
|
-
watcher = (0,
|
|
1123
|
+
watcher = (0, import_kubernetes_fluent_client4.K8s)(binding.model, binding.filters).Watch(async (obj, type) => {
|
|
1075
1124
|
logger_default.debug(obj, `Watch event ${type} received`);
|
|
1076
1125
|
if (phaseMatch.includes(type)) {
|
|
1077
1126
|
try {
|
|
1078
|
-
|
|
1079
|
-
|
|
1127
|
+
const filterMatch = filterMatcher(binding, obj, capabilityNamespaces);
|
|
1128
|
+
if (filterMatch === "") {
|
|
1129
|
+
queue.setReconcile(async () => await binding.watchCallback?.(obj, type));
|
|
1130
|
+
await queue.enqueue(obj);
|
|
1131
|
+
} else {
|
|
1132
|
+
logger_default.debug(filterMatch);
|
|
1133
|
+
}
|
|
1080
1134
|
} catch (e) {
|
|
1081
1135
|
logger_default.error(e, "Error executing watch callback");
|
|
1082
1136
|
}
|
|
1083
1137
|
}
|
|
1084
1138
|
}, watchCfg);
|
|
1085
1139
|
} else {
|
|
1086
|
-
watcher = (0,
|
|
1140
|
+
watcher = (0, import_kubernetes_fluent_client4.K8s)(binding.model, binding.filters).Watch(async (obj, type) => {
|
|
1087
1141
|
logger_default.debug(obj, `Watch event ${type} received`);
|
|
1088
1142
|
if (phaseMatch.includes(type)) {
|
|
1089
1143
|
try {
|
|
1090
|
-
|
|
1144
|
+
const filterMatch = filterMatcher(binding, obj, capabilityNamespaces);
|
|
1145
|
+
if (filterMatch === "") {
|
|
1146
|
+
await binding.watchCallback?.(obj, type);
|
|
1147
|
+
} else {
|
|
1148
|
+
logger_default.debug(filterMatch);
|
|
1149
|
+
}
|
|
1091
1150
|
} catch (e) {
|
|
1092
1151
|
logger_default.error(e, "Error executing watch callback");
|
|
1093
1152
|
}
|
|
@@ -1096,7 +1155,7 @@ async function runBinding(binding) {
|
|
|
1096
1155
|
}
|
|
1097
1156
|
const cacheSuffix = (0, import_crypto.createHash)("sha224").update(binding.watchCallback.toString()).digest("hex").substring(0, 5);
|
|
1098
1157
|
const cacheID = [watcher.getCacheID(), cacheSuffix].join("-");
|
|
1099
|
-
watcher.events.on(
|
|
1158
|
+
watcher.events.on(import_kubernetes_fluent_client4.WatchEvent.RESOURCE_VERSION, (version) => {
|
|
1100
1159
|
logger_default.debug(`Received watch cache: ${cacheID}:${version}`);
|
|
1101
1160
|
if (store[cacheID] !== version) {
|
|
1102
1161
|
logger_default.debug(`Updating watch cache: ${cacheID}: ${store[cacheID]} => ${version}`);
|
|
@@ -1104,7 +1163,7 @@ async function runBinding(binding) {
|
|
|
1104
1163
|
storeUpdates = true;
|
|
1105
1164
|
}
|
|
1106
1165
|
});
|
|
1107
|
-
watcher.events.on(
|
|
1166
|
+
watcher.events.on(import_kubernetes_fluent_client4.WatchEvent.GIVE_UP, (err) => {
|
|
1108
1167
|
logger_default.error(err, "Watch failed after 5 attempts, giving up");
|
|
1109
1168
|
process.exit(1);
|
|
1110
1169
|
});
|
|
@@ -1547,15 +1606,15 @@ var Capability = class {
|
|
|
1547
1606
|
* @param kind if using a custom KubernetesObject not available in `a.*`, specify the GroupVersionKind
|
|
1548
1607
|
* @returns
|
|
1549
1608
|
*/
|
|
1550
|
-
When = (model,
|
|
1551
|
-
const matchedKind = (0,
|
|
1552
|
-
if (!matchedKind && !
|
|
1609
|
+
When = (model, kind3) => {
|
|
1610
|
+
const matchedKind = (0, import_kubernetes_fluent_client5.modelToGroupVersionKind)(model.name);
|
|
1611
|
+
if (!matchedKind && !kind3) {
|
|
1553
1612
|
throw new Error(`Kind not specified for ${model.name}`);
|
|
1554
1613
|
}
|
|
1555
1614
|
const binding = {
|
|
1556
1615
|
model,
|
|
1557
1616
|
// If the kind is not specified, use the matched kind from the model
|
|
1558
|
-
kind:
|
|
1617
|
+
kind: kind3 || matchedKind,
|
|
1559
1618
|
event: "*" /* Any */,
|
|
1560
1619
|
filters: {
|
|
1561
1620
|
name: "",
|