pepr 0.45.0-nightly.13 → 0.45.0-nightly.2

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/sdk/sdk.d.ts CHANGED
@@ -19,12 +19,7 @@ export declare function containers(request: PeprValidateRequest<kind.Pod> | Pepr
19
19
  * @param reportingComponent The component that is reporting the event, for example "uds.dev/operator"
20
20
  * @param reportingInstance The instance of the component that is reporting the event, for example process.env.HOSTNAME
21
21
  */
22
- export declare function writeEvent(cr: GenericKind, event: Partial<kind.CoreEvent>, options: {
23
- eventType: string;
24
- eventReason: string;
25
- reportingComponent: string;
26
- reportingInstance: string;
27
- }): Promise<void>;
22
+ export declare function writeEvent(cr: GenericKind, event: Partial<kind.CoreEvent>, eventType: string, eventReason: string, reportingComponent: string, reportingInstance: string): Promise<void>;
28
23
  /**
29
24
  * Get the owner reference for a custom resource
30
25
  * @param customResource the custom resource to get the owner reference for
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../src/sdk/sdk.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAO,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAElE;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,EACpE,aAAa,CAAC,EAAE,YAAY,GAAG,gBAAgB,GAAG,qBAAqB,GACtE,WAAW,EAAE,CAef;AAED;;;;;;;;;GASG;AAEH,wBAAsB,UAAU,CAC9B,EAAE,EAAE,WAAW,EACf,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAC9B,OAAO,EAAE;IACP,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;CAC3B,GACA,OAAO,CAAC,IAAI,CAAC,CAuBf;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,cAAc,EAAE,WAAW,EAC3B,kBAAkB,CAAC,EAAE,OAAO,EAC5B,UAAU,CAAC,EAAE,OAAO,GACnB,gBAAgB,EAAE,CAcpB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAYzD"}
1
+ {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../src/sdk/sdk.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAO,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAElE;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,EACpE,aAAa,CAAC,EAAE,YAAY,GAAG,gBAAgB,GAAG,qBAAqB,GACtE,WAAW,EAAE,CAef;AAED;;;;;;;;;GASG;AAEH,wBAAsB,UAAU,CAC9B,EAAE,EAAE,WAAW,EACf,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAC9B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,kBAAkB,EAAE,MAAM,EAC1B,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,IAAI,CAAC,CAqBf;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,cAAc,EAAE,WAAW,EAC3B,kBAAkB,CAAC,EAAE,OAAO,EAC5B,UAAU,CAAC,EAAE,OAAO,GACnB,gBAAgB,EAAE,CAcpB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAYzD"}
package/package.json CHANGED
@@ -15,7 +15,7 @@
15
15
  "!src/**/*.test.ts",
16
16
  "!dist/**/*.test.d.ts*"
17
17
  ],
18
- "version": "0.45.0-nightly.13",
18
+ "version": "0.45.0-nightly.2",
19
19
  "main": "dist/lib.js",
20
20
  "types": "dist/lib.d.ts",
21
21
  "scripts": {
@@ -25,7 +25,7 @@
25
25
  "build": "tsc && node build.mjs && npm pack",
26
26
  "build:image": "npm run build && docker buildx build --output type=docker --tag pepr:dev .",
27
27
  "set:version": "node scripts/set-version.js",
28
- "test": "npm run test:unit && npm run test:journey && npm run test:journey-wasm",
28
+ "test": "npm run test:unit && npm run test:journey",
29
29
  "test:unit": "npm run gen-data-json && jest src --coverage --detectOpenHandles --coverageDirectory=./coverage --testPathIgnorePatterns='cosign.e2e.test.ts'",
30
30
  "test:integration": "npm run test:integration:prep && npm run test:integration:run",
31
31
  "test:integration:prep": "./integration/prep.sh",
@@ -48,12 +48,12 @@
48
48
  "follow-redirects": "1.15.9",
49
49
  "http-status-codes": "^2.3.0",
50
50
  "json-pointer": "^0.6.2",
51
- "kubernetes-fluent-client": "3.4.0",
51
+ "kubernetes-fluent-client": "3.3.8",
52
52
  "pino": "9.6.0",
53
53
  "pino-pretty": "13.0.0",
54
54
  "prom-client": "15.1.3",
55
55
  "ramda": "0.30.1",
56
- "sigstore": "3.1.0"
56
+ "sigstore": "3.0.0"
57
57
  },
58
58
  "devDependencies": {
59
59
  "@commitlint/cli": "19.7.1",
@@ -83,7 +83,7 @@
83
83
  "@typescript-eslint/eslint-plugin": "8.23.0",
84
84
  "@typescript-eslint/parser": "8.23.0",
85
85
  "commander": "13.1.0",
86
- "esbuild": "0.25.0",
86
+ "esbuild": "0.24.2",
87
87
  "eslint": "8.57.0",
88
88
  "node-forge": "1.3.1",
89
89
  "prettier": "3.4.2",
@@ -4,12 +4,11 @@ import Log from "../telemetry/logger";
4
4
  import { Binding } from "../types";
5
5
  import { Capability } from "../core/capability";
6
6
  import { Event } from "../enums";
7
- import { K8s, KubernetesObject, WatchCfg, WatchEvent, GenericClass } from "kubernetes-fluent-client";
7
+ import { K8s, KubernetesObject, WatchCfg, WatchEvent } from "kubernetes-fluent-client";
8
8
  import { Queue } from "../core/queue";
9
- import { WatchPhase, WatcherType } from "kubernetes-fluent-client/dist/fluent/types";
10
- import { KubernetesListObject } from "kubernetes-fluent-client/dist/types";
9
+ import { WatchPhase } from "kubernetes-fluent-client/dist/fluent/types";
11
10
  import { filterNoMatchReason } from "../filter/filter";
12
- import { metricsCollector, MetricsCollectorInstance } from "../telemetry/metrics";
11
+ import { metricsCollector } from "../telemetry/metrics";
13
12
  import { removeFinalizer } from "../finalizer";
14
13
 
15
14
  // stores Queue instances
@@ -158,8 +157,36 @@ async function runBinding(
158
157
  }
159
158
  }, watchCfg);
160
159
 
161
- // Register event handlers
162
- registerWatchEventHandlers(watcher, logEvent, metricsCollector);
160
+ // If failure continues, log and exit
161
+ watcher.events.on(WatchEvent.GIVE_UP, err => {
162
+ Log.error(err, "Watch failed after 5 attempts, giving up");
163
+ process.exit(1);
164
+ });
165
+
166
+ watcher.events.on(WatchEvent.CONNECT, url => logEvent(WatchEvent.CONNECT, url));
167
+
168
+ watcher.events.on(WatchEvent.DATA_ERROR, err => logEvent(WatchEvent.DATA_ERROR, err.message));
169
+ watcher.events.on(WatchEvent.RECONNECT, retryCount =>
170
+ logEvent(WatchEvent.RECONNECT, `Reconnecting after ${retryCount} attempt${retryCount === 1 ? "" : "s"}`),
171
+ );
172
+ watcher.events.on(WatchEvent.RECONNECT_PENDING, () => logEvent(WatchEvent.RECONNECT_PENDING));
173
+ watcher.events.on(WatchEvent.GIVE_UP, err => logEvent(WatchEvent.GIVE_UP, err.message));
174
+ watcher.events.on(WatchEvent.ABORT, err => logEvent(WatchEvent.ABORT, err.message));
175
+ watcher.events.on(WatchEvent.OLD_RESOURCE_VERSION, err => logEvent(WatchEvent.OLD_RESOURCE_VERSION, err));
176
+ watcher.events.on(WatchEvent.NETWORK_ERROR, err => logEvent(WatchEvent.NETWORK_ERROR, err.message));
177
+ watcher.events.on(WatchEvent.LIST_ERROR, err => logEvent(WatchEvent.LIST_ERROR, err.message));
178
+ watcher.events.on(WatchEvent.LIST, list => logEvent(WatchEvent.LIST, JSON.stringify(list, undefined, 2)));
179
+ watcher.events.on(WatchEvent.CACHE_MISS, windowName => {
180
+ metricsCollector.incCacheMiss(windowName);
181
+ });
182
+
183
+ watcher.events.on(WatchEvent.INIT_CACHE_MISS, windowName => {
184
+ metricsCollector.initCacheMissWindow(windowName);
185
+ });
186
+
187
+ watcher.events.on(WatchEvent.INC_RESYNC_FAILURE_COUNT, retryCount => {
188
+ metricsCollector.incRetryCount(retryCount);
189
+ });
163
190
 
164
191
  // Start the watch
165
192
  try {
@@ -178,55 +205,3 @@ export function logEvent(event: WatchEvent, message: string = "", obj?: Kubernet
178
205
  Log.debug(logMessage);
179
206
  }
180
207
  }
181
-
182
- export type WatchEventArgs<K extends WatchEvent, T extends GenericClass> = {
183
- [WatchEvent.LIST]: KubernetesListObject<InstanceType<T>>;
184
- [WatchEvent.RECONNECT]: number;
185
- [WatchEvent.CACHE_MISS]: string;
186
- [WatchEvent.INIT_CACHE_MISS]: string;
187
- [WatchEvent.GIVE_UP]: Error;
188
- [WatchEvent.ABORT]: Error;
189
- [WatchEvent.OLD_RESOURCE_VERSION]: string;
190
- [WatchEvent.NETWORK_ERROR]: Error;
191
- [WatchEvent.LIST_ERROR]: Error;
192
- [WatchEvent.DATA_ERROR]: Error;
193
- [WatchEvent.CONNECT]: string;
194
- [WatchEvent.RECONNECT_PENDING]: undefined;
195
- [WatchEvent.DATA]: undefined;
196
- [WatchEvent.INC_RESYNC_FAILURE_COUNT]: number;
197
- }[K];
198
-
199
- export type LogEventFunction = (event: WatchEvent, message?: string) => void;
200
- export function registerWatchEventHandlers(
201
- watcher: WatcherType<GenericClass>,
202
- logEvent: LogEventFunction,
203
- metricsCollector: MetricsCollectorInstance,
204
- ): void {
205
- const eventHandlers: {
206
- [K in WatchEvent]?: (arg: WatchEventArgs<K, GenericClass>) => void;
207
- } = {
208
- [WatchEvent.DATA]: () => null,
209
- [WatchEvent.GIVE_UP]: err => {
210
- // If failure continues, log and exit
211
- logEvent(WatchEvent.GIVE_UP, err.message);
212
- process.exit(1);
213
- },
214
- [WatchEvent.CONNECT]: url => logEvent(WatchEvent.CONNECT, url),
215
- [WatchEvent.DATA_ERROR]: err => logEvent(WatchEvent.DATA_ERROR, err.message),
216
- [WatchEvent.RECONNECT]: retryCount =>
217
- logEvent(WatchEvent.RECONNECT, `Reconnecting after ${retryCount} attempt${retryCount === 1 ? "" : "s"}`),
218
- [WatchEvent.RECONNECT_PENDING]: () => logEvent(WatchEvent.RECONNECT_PENDING),
219
- [WatchEvent.ABORT]: err => logEvent(WatchEvent.ABORT, err.message),
220
- [WatchEvent.OLD_RESOURCE_VERSION]: errMessage => logEvent(WatchEvent.OLD_RESOURCE_VERSION, errMessage),
221
- [WatchEvent.NETWORK_ERROR]: err => logEvent(WatchEvent.NETWORK_ERROR, err.message),
222
- [WatchEvent.LIST_ERROR]: err => logEvent(WatchEvent.LIST_ERROR, err.message),
223
- [WatchEvent.LIST]: list => logEvent(WatchEvent.LIST, JSON.stringify(list, undefined, 2)),
224
- [WatchEvent.CACHE_MISS]: windowName => metricsCollector.incCacheMiss(windowName),
225
- [WatchEvent.INIT_CACHE_MISS]: windowName => metricsCollector.initCacheMissWindow(windowName),
226
- [WatchEvent.INC_RESYNC_FAILURE_COUNT]: retryCount => metricsCollector.incRetryCount(retryCount),
227
- };
228
-
229
- Object.entries(eventHandlers).forEach(([event, handler]) => {
230
- watcher.events.on(event, handler);
231
- });
232
- }
@@ -9,7 +9,7 @@ import Log from "./logger";
9
9
 
10
10
  const loggingPrefix = "MetricsCollector";
11
11
 
12
- export type MetricsCollectorInstance = InstanceType<typeof MetricsCollector>;
12
+ type MetricsCollectorInstance = InstanceType<typeof MetricsCollector>;
13
13
  interface MetricNames {
14
14
  errors: string;
15
15
  alerts: string;
@@ -148,8 +148,8 @@ export class MetricsCollector {
148
148
  * Increments the retry count gauge.
149
149
  * @param count - The count to increment by.
150
150
  */
151
- incRetryCount = (count: number): void => {
152
- this.incGauge(this.#metricNames.resyncFailureCount, { count: count.toString() });
151
+ incRetryCount = (count: string): void => {
152
+ this.incGauge(this.#metricNames.resyncFailureCount, { count });
153
153
  };
154
154
 
155
155
  /**
package/src/sdk/sdk.ts CHANGED
@@ -46,15 +46,11 @@ export function containers(
46
46
  export async function writeEvent(
47
47
  cr: GenericKind,
48
48
  event: Partial<kind.CoreEvent>,
49
- options: {
50
- eventType: string;
51
- eventReason: string;
52
- reportingComponent: string;
53
- reportingInstance: string;
54
- },
49
+ eventType: string,
50
+ eventReason: string,
51
+ reportingComponent: string,
52
+ reportingInstance: string,
55
53
  ): Promise<void> {
56
- const { eventType, eventReason, reportingComponent, reportingInstance } = options;
57
-
58
54
  await K8s(kind.CoreEvent).Create({
59
55
  type: eventType,
60
56
  reason: eventReason,