pepr 0.29.1 → 0.30.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/CODE_OF_CONDUCT.md +133 -0
- package/README.md +1 -0
- package/dist/cli.js +68 -36
- package/dist/controller.js +8 -3
- package/dist/lib/helpers.d.ts +1 -0
- package/dist/lib/helpers.d.ts.map +1 -1
- package/dist/lib/watch-processor.d.ts +2 -0
- package/dist/lib/watch-processor.d.ts.map +1 -1
- package/dist/lib.js +101 -69
- package/dist/lib.js.map +4 -4
- package/package.json +8 -8
- package/src/lib/helpers.ts +11 -0
- package/src/lib/watch-processor.ts +36 -2
package/dist/lib.js
CHANGED
|
@@ -50,7 +50,7 @@ var import_kubernetes_fluent_client7 = 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_client6 = require("kubernetes-fluent-client");
|
|
54
54
|
var import_ramda6 = require("ramda");
|
|
55
55
|
|
|
56
56
|
// src/lib/logger.ts
|
|
@@ -981,11 +981,75 @@ var Controller = class _Controller {
|
|
|
981
981
|
};
|
|
982
982
|
|
|
983
983
|
// src/lib/watch-processor.ts
|
|
984
|
-
var
|
|
984
|
+
var import_kubernetes_fluent_client5 = require("kubernetes-fluent-client");
|
|
985
985
|
var import_types2 = require("kubernetes-fluent-client/dist/fluent/types");
|
|
986
986
|
|
|
987
987
|
// src/lib/helpers.ts
|
|
988
|
+
var import_kubernetes_fluent_client4 = require("kubernetes-fluent-client");
|
|
989
|
+
|
|
990
|
+
// src/sdk/sdk.ts
|
|
991
|
+
var sdk_exports = {};
|
|
992
|
+
__export(sdk_exports, {
|
|
993
|
+
containers: () => containers,
|
|
994
|
+
getOwnerRefFrom: () => getOwnerRefFrom,
|
|
995
|
+
sanitizeResourceName: () => sanitizeResourceName,
|
|
996
|
+
writeEvent: () => writeEvent
|
|
997
|
+
});
|
|
988
998
|
var import_kubernetes_fluent_client3 = require("kubernetes-fluent-client");
|
|
999
|
+
function containers(request, containerType) {
|
|
1000
|
+
const containers2 = request.Raw.spec?.containers || [];
|
|
1001
|
+
const initContainers = request.Raw.spec?.initContainers || [];
|
|
1002
|
+
const ephemeralContainers = request.Raw.spec?.ephemeralContainers || [];
|
|
1003
|
+
if (containerType === "containers") {
|
|
1004
|
+
return containers2;
|
|
1005
|
+
}
|
|
1006
|
+
if (containerType === "initContainers") {
|
|
1007
|
+
return initContainers;
|
|
1008
|
+
}
|
|
1009
|
+
if (containerType === "ephemeralContainers") {
|
|
1010
|
+
return ephemeralContainers;
|
|
1011
|
+
}
|
|
1012
|
+
return [...containers2, ...initContainers, ...ephemeralContainers];
|
|
1013
|
+
}
|
|
1014
|
+
async function writeEvent(cr, event, eventType, eventReason, reportingComponent, reportingInstance) {
|
|
1015
|
+
logger_default.debug(cr.metadata, `Writing event: ${event.message}`);
|
|
1016
|
+
await (0, import_kubernetes_fluent_client3.K8s)(import_kubernetes_fluent_client3.kind.CoreEvent).Create({
|
|
1017
|
+
type: eventType,
|
|
1018
|
+
reason: eventReason,
|
|
1019
|
+
...event,
|
|
1020
|
+
// Fixed values
|
|
1021
|
+
metadata: {
|
|
1022
|
+
namespace: cr.metadata.namespace,
|
|
1023
|
+
generateName: cr.metadata.name
|
|
1024
|
+
},
|
|
1025
|
+
involvedObject: {
|
|
1026
|
+
apiVersion: cr.apiVersion,
|
|
1027
|
+
kind: cr.kind,
|
|
1028
|
+
name: cr.metadata.name,
|
|
1029
|
+
namespace: cr.metadata.namespace,
|
|
1030
|
+
uid: cr.metadata.uid
|
|
1031
|
+
},
|
|
1032
|
+
firstTimestamp: /* @__PURE__ */ new Date(),
|
|
1033
|
+
reportingComponent,
|
|
1034
|
+
reportingInstance
|
|
1035
|
+
});
|
|
1036
|
+
}
|
|
1037
|
+
function getOwnerRefFrom(cr) {
|
|
1038
|
+
const { name, uid } = cr.metadata;
|
|
1039
|
+
return [
|
|
1040
|
+
{
|
|
1041
|
+
apiVersion: cr.apiVersion,
|
|
1042
|
+
kind: cr.kind,
|
|
1043
|
+
uid,
|
|
1044
|
+
name
|
|
1045
|
+
}
|
|
1046
|
+
];
|
|
1047
|
+
}
|
|
1048
|
+
function sanitizeResourceName(name) {
|
|
1049
|
+
return name.toLowerCase().replace(/[^a-z0-9]+/g, "-").slice(0, 250).replace(/^[^a-z]+|[^a-z]+$/g, "");
|
|
1050
|
+
}
|
|
1051
|
+
|
|
1052
|
+
// src/lib/helpers.ts
|
|
989
1053
|
function checkOverlap(bindingFilters, objectFilters) {
|
|
990
1054
|
if (Object.keys(bindingFilters).length === 0) {
|
|
991
1055
|
return true;
|
|
@@ -1098,8 +1162,10 @@ var Queue = class {
|
|
|
1098
1162
|
|
|
1099
1163
|
// src/lib/watch-processor.ts
|
|
1100
1164
|
var watchCfg = {
|
|
1101
|
-
retryMax: 5,
|
|
1102
|
-
retryDelaySec: 5
|
|
1165
|
+
retryMax: process.env.PEPR_RETRYMAX ? parseInt(process.env.PEPR_RETRYMAX, 10) : 5,
|
|
1166
|
+
retryDelaySec: process.env.PEPR_RETRYDELAYSECONDS ? parseInt(process.env.PEPR_RETRYDELAYSECONDS, 10) : 5,
|
|
1167
|
+
resyncIntervalSec: process.env.PEPR_RESYNCINTERVALSECONDS ? parseInt(process.env.PEPR_RESYNCINTERVALSECONDS, 10) : 300,
|
|
1168
|
+
allowWatchBookmarks: process.env.PEPR_ALLOWWATCHBOOKMARKS ? process.env.PEPR_ALLOWWATCHBOOKMARKS === "true" : false
|
|
1103
1169
|
};
|
|
1104
1170
|
var eventToPhaseMap = {
|
|
1105
1171
|
["CREATE" /* Create */]: [import_types2.WatchPhase.Added],
|
|
@@ -1115,6 +1181,7 @@ function setupWatch(capabilities) {
|
|
|
1115
1181
|
}
|
|
1116
1182
|
async function runBinding(binding, capabilityNamespaces) {
|
|
1117
1183
|
const phaseMatch = eventToPhaseMap[binding.event] || eventToPhaseMap["*" /* Any */];
|
|
1184
|
+
logger_default.debug({ watchCfg }, "Effective WatchConfig");
|
|
1118
1185
|
const watchCallback = async (obj, type) => {
|
|
1119
1186
|
if (phaseMatch.includes(type)) {
|
|
1120
1187
|
try {
|
|
@@ -1131,7 +1198,7 @@ async function runBinding(binding, capabilityNamespaces) {
|
|
|
1131
1198
|
};
|
|
1132
1199
|
const queue = new Queue();
|
|
1133
1200
|
queue.setReconcile(watchCallback);
|
|
1134
|
-
const watcher = (0,
|
|
1201
|
+
const watcher = (0, import_kubernetes_fluent_client5.K8s)(binding.model, binding.filters).Watch(async (obj, type) => {
|
|
1135
1202
|
logger_default.debug(obj, `Watch event ${type} received`);
|
|
1136
1203
|
if (binding.isQueue) {
|
|
1137
1204
|
await queue.enqueue(obj, type);
|
|
@@ -1139,10 +1206,30 @@ async function runBinding(binding, capabilityNamespaces) {
|
|
|
1139
1206
|
await watchCallback(obj, type);
|
|
1140
1207
|
}
|
|
1141
1208
|
}, watchCfg);
|
|
1142
|
-
watcher.events.on(
|
|
1209
|
+
watcher.events.on(import_kubernetes_fluent_client5.WatchEvent.GIVE_UP, (err) => {
|
|
1143
1210
|
logger_default.error(err, "Watch failed after 5 attempts, giving up");
|
|
1144
1211
|
process.exit(1);
|
|
1145
1212
|
});
|
|
1213
|
+
watcher.events.on(import_kubernetes_fluent_client5.WatchEvent.CONNECT, () => logEvent(import_kubernetes_fluent_client5.WatchEvent.CONNECT));
|
|
1214
|
+
watcher.events.on(
|
|
1215
|
+
import_kubernetes_fluent_client5.WatchEvent.BOOKMARK,
|
|
1216
|
+
(obj) => logEvent(import_kubernetes_fluent_client5.WatchEvent.BOOKMARK, "Changes up to the given resourceVersion have been sent.", obj)
|
|
1217
|
+
);
|
|
1218
|
+
watcher.events.on(import_kubernetes_fluent_client5.WatchEvent.DATA_ERROR, (err) => logEvent(import_kubernetes_fluent_client5.WatchEvent.DATA_ERROR, err.message));
|
|
1219
|
+
watcher.events.on(
|
|
1220
|
+
import_kubernetes_fluent_client5.WatchEvent.RESOURCE_VERSION,
|
|
1221
|
+
(resourceVersion) => logEvent(import_kubernetes_fluent_client5.WatchEvent.RESOURCE_VERSION, `Resource version: ${resourceVersion}`)
|
|
1222
|
+
);
|
|
1223
|
+
watcher.events.on(
|
|
1224
|
+
import_kubernetes_fluent_client5.WatchEvent.RECONNECT,
|
|
1225
|
+
(err, retryCount) => logEvent(import_kubernetes_fluent_client5.WatchEvent.RECONNECT, `Reconnecting after ${retryCount} attempts`, err)
|
|
1226
|
+
);
|
|
1227
|
+
watcher.events.on(import_kubernetes_fluent_client5.WatchEvent.RECONNECT_PENDING, () => logEvent(import_kubernetes_fluent_client5.WatchEvent.RECONNECT_PENDING));
|
|
1228
|
+
watcher.events.on(import_kubernetes_fluent_client5.WatchEvent.GIVE_UP, (err) => logEvent(import_kubernetes_fluent_client5.WatchEvent.GIVE_UP, err.message));
|
|
1229
|
+
watcher.events.on(import_kubernetes_fluent_client5.WatchEvent.ABORT, (err) => logEvent(import_kubernetes_fluent_client5.WatchEvent.ABORT, err.message));
|
|
1230
|
+
watcher.events.on(import_kubernetes_fluent_client5.WatchEvent.OLD_RESOURCE_VERSION, (err) => logEvent(import_kubernetes_fluent_client5.WatchEvent.OLD_RESOURCE_VERSION, err));
|
|
1231
|
+
watcher.events.on(import_kubernetes_fluent_client5.WatchEvent.RESYNC, (err) => logEvent(import_kubernetes_fluent_client5.WatchEvent.RESYNC, err.message));
|
|
1232
|
+
watcher.events.on(import_kubernetes_fluent_client5.WatchEvent.NETWORK_ERROR, (err) => logEvent(import_kubernetes_fluent_client5.WatchEvent.NETWORK_ERROR, err.message));
|
|
1146
1233
|
try {
|
|
1147
1234
|
await watcher.start();
|
|
1148
1235
|
} catch (err) {
|
|
@@ -1150,6 +1237,13 @@ async function runBinding(binding, capabilityNamespaces) {
|
|
|
1150
1237
|
process.exit(1);
|
|
1151
1238
|
}
|
|
1152
1239
|
}
|
|
1240
|
+
function logEvent(type, message = "", obj) {
|
|
1241
|
+
if (obj) {
|
|
1242
|
+
logger_default.debug(obj, `Watch event ${type} received`, message);
|
|
1243
|
+
} else {
|
|
1244
|
+
logger_default.debug(`Watch event ${type} received`, message);
|
|
1245
|
+
}
|
|
1246
|
+
}
|
|
1153
1247
|
|
|
1154
1248
|
// src/lib/module.ts
|
|
1155
1249
|
var isWatchMode = () => process.env.PEPR_WATCH_MODE === "true";
|
|
@@ -1580,7 +1674,7 @@ var Capability = class {
|
|
|
1580
1674
|
* @returns
|
|
1581
1675
|
*/
|
|
1582
1676
|
When = (model, kind4) => {
|
|
1583
|
-
const matchedKind = (0,
|
|
1677
|
+
const matchedKind = (0, import_kubernetes_fluent_client6.modelToGroupVersionKind)(model.name);
|
|
1584
1678
|
if (!matchedKind && !kind4) {
|
|
1585
1679
|
throw new Error(`Kind not specified for ${model.name}`);
|
|
1586
1680
|
}
|
|
@@ -1685,68 +1779,6 @@ var Capability = class {
|
|
|
1685
1779
|
};
|
|
1686
1780
|
};
|
|
1687
1781
|
};
|
|
1688
|
-
|
|
1689
|
-
// src/sdk/sdk.ts
|
|
1690
|
-
var sdk_exports = {};
|
|
1691
|
-
__export(sdk_exports, {
|
|
1692
|
-
containers: () => containers,
|
|
1693
|
-
getOwnerRefFrom: () => getOwnerRefFrom,
|
|
1694
|
-
sanitizeResourceName: () => sanitizeResourceName,
|
|
1695
|
-
writeEvent: () => writeEvent
|
|
1696
|
-
});
|
|
1697
|
-
var import_kubernetes_fluent_client6 = require("kubernetes-fluent-client");
|
|
1698
|
-
function containers(request, containerType) {
|
|
1699
|
-
const containers2 = request.Raw.spec?.containers || [];
|
|
1700
|
-
const initContainers = request.Raw.spec?.initContainers || [];
|
|
1701
|
-
const ephemeralContainers = request.Raw.spec?.ephemeralContainers || [];
|
|
1702
|
-
if (containerType === "containers") {
|
|
1703
|
-
return containers2;
|
|
1704
|
-
}
|
|
1705
|
-
if (containerType === "initContainers") {
|
|
1706
|
-
return initContainers;
|
|
1707
|
-
}
|
|
1708
|
-
if (containerType === "ephemeralContainers") {
|
|
1709
|
-
return ephemeralContainers;
|
|
1710
|
-
}
|
|
1711
|
-
return [...containers2, ...initContainers, ...ephemeralContainers];
|
|
1712
|
-
}
|
|
1713
|
-
async function writeEvent(cr, event, eventType, eventReason, reportingComponent, reportingInstance) {
|
|
1714
|
-
logger_default.debug(cr.metadata, `Writing event: ${event.message}`);
|
|
1715
|
-
await (0, import_kubernetes_fluent_client6.K8s)(import_kubernetes_fluent_client6.kind.CoreEvent).Create({
|
|
1716
|
-
type: eventType,
|
|
1717
|
-
reason: eventReason,
|
|
1718
|
-
...event,
|
|
1719
|
-
// Fixed values
|
|
1720
|
-
metadata: {
|
|
1721
|
-
namespace: cr.metadata.namespace,
|
|
1722
|
-
generateName: cr.metadata.name
|
|
1723
|
-
},
|
|
1724
|
-
involvedObject: {
|
|
1725
|
-
apiVersion: cr.apiVersion,
|
|
1726
|
-
kind: cr.kind,
|
|
1727
|
-
name: cr.metadata.name,
|
|
1728
|
-
namespace: cr.metadata.namespace,
|
|
1729
|
-
uid: cr.metadata.uid
|
|
1730
|
-
},
|
|
1731
|
-
firstTimestamp: /* @__PURE__ */ new Date(),
|
|
1732
|
-
reportingComponent,
|
|
1733
|
-
reportingInstance
|
|
1734
|
-
});
|
|
1735
|
-
}
|
|
1736
|
-
function getOwnerRefFrom(cr) {
|
|
1737
|
-
const { name, uid } = cr.metadata;
|
|
1738
|
-
return [
|
|
1739
|
-
{
|
|
1740
|
-
apiVersion: cr.apiVersion,
|
|
1741
|
-
kind: cr.kind,
|
|
1742
|
-
uid,
|
|
1743
|
-
name
|
|
1744
|
-
}
|
|
1745
|
-
];
|
|
1746
|
-
}
|
|
1747
|
-
function sanitizeResourceName(name) {
|
|
1748
|
-
return name.toLowerCase().replace(/[^a-z0-9]+/g, "-").slice(0, 250).replace(/^[^a-z]+|[^a-z]+$/g, "");
|
|
1749
|
-
}
|
|
1750
1782
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1751
1783
|
0 && (module.exports = {
|
|
1752
1784
|
Capability,
|