pepr 0.29.2 → 0.30.1
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.map +1 -1
- package/dist/lib.js +88 -83
- package/dist/lib.js.map +4 -4
- package/package.json +7 -7
- package/src/lib/helpers.ts +11 -0
- package/src/lib/watch-processor.ts +8 -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,30 +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
|
});
|
|
1146
|
-
watcher.events.on(
|
|
1213
|
+
watcher.events.on(import_kubernetes_fluent_client5.WatchEvent.CONNECT, () => logEvent(import_kubernetes_fluent_client5.WatchEvent.CONNECT));
|
|
1147
1214
|
watcher.events.on(
|
|
1148
|
-
|
|
1149
|
-
(obj) => logEvent(
|
|
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)
|
|
1150
1217
|
);
|
|
1151
|
-
watcher.events.on(
|
|
1218
|
+
watcher.events.on(import_kubernetes_fluent_client5.WatchEvent.DATA_ERROR, (err) => logEvent(import_kubernetes_fluent_client5.WatchEvent.DATA_ERROR, err.message));
|
|
1152
1219
|
watcher.events.on(
|
|
1153
|
-
|
|
1154
|
-
(resourceVersion) => logEvent(
|
|
1220
|
+
import_kubernetes_fluent_client5.WatchEvent.RESOURCE_VERSION,
|
|
1221
|
+
(resourceVersion) => logEvent(import_kubernetes_fluent_client5.WatchEvent.RESOURCE_VERSION, `Resource version: ${resourceVersion}`)
|
|
1155
1222
|
);
|
|
1156
1223
|
watcher.events.on(
|
|
1157
|
-
|
|
1158
|
-
(err, retryCount) => logEvent(
|
|
1224
|
+
import_kubernetes_fluent_client5.WatchEvent.RECONNECT,
|
|
1225
|
+
(err, retryCount) => logEvent(import_kubernetes_fluent_client5.WatchEvent.RECONNECT, `Reconnecting after ${retryCount} attempts`, err)
|
|
1159
1226
|
);
|
|
1160
|
-
watcher.events.on(
|
|
1161
|
-
watcher.events.on(
|
|
1162
|
-
watcher.events.on(
|
|
1163
|
-
watcher.events.on(
|
|
1164
|
-
watcher.events.on(
|
|
1165
|
-
watcher.events.on(
|
|
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));
|
|
1166
1233
|
try {
|
|
1167
1234
|
await watcher.start();
|
|
1168
1235
|
} catch (err) {
|
|
@@ -1607,7 +1674,7 @@ var Capability = class {
|
|
|
1607
1674
|
* @returns
|
|
1608
1675
|
*/
|
|
1609
1676
|
When = (model, kind4) => {
|
|
1610
|
-
const matchedKind = (0,
|
|
1677
|
+
const matchedKind = (0, import_kubernetes_fluent_client6.modelToGroupVersionKind)(model.name);
|
|
1611
1678
|
if (!matchedKind && !kind4) {
|
|
1612
1679
|
throw new Error(`Kind not specified for ${model.name}`);
|
|
1613
1680
|
}
|
|
@@ -1712,68 +1779,6 @@ var Capability = class {
|
|
|
1712
1779
|
};
|
|
1713
1780
|
};
|
|
1714
1781
|
};
|
|
1715
|
-
|
|
1716
|
-
// src/sdk/sdk.ts
|
|
1717
|
-
var sdk_exports = {};
|
|
1718
|
-
__export(sdk_exports, {
|
|
1719
|
-
containers: () => containers,
|
|
1720
|
-
getOwnerRefFrom: () => getOwnerRefFrom,
|
|
1721
|
-
sanitizeResourceName: () => sanitizeResourceName,
|
|
1722
|
-
writeEvent: () => writeEvent
|
|
1723
|
-
});
|
|
1724
|
-
var import_kubernetes_fluent_client6 = require("kubernetes-fluent-client");
|
|
1725
|
-
function containers(request, containerType) {
|
|
1726
|
-
const containers2 = request.Raw.spec?.containers || [];
|
|
1727
|
-
const initContainers = request.Raw.spec?.initContainers || [];
|
|
1728
|
-
const ephemeralContainers = request.Raw.spec?.ephemeralContainers || [];
|
|
1729
|
-
if (containerType === "containers") {
|
|
1730
|
-
return containers2;
|
|
1731
|
-
}
|
|
1732
|
-
if (containerType === "initContainers") {
|
|
1733
|
-
return initContainers;
|
|
1734
|
-
}
|
|
1735
|
-
if (containerType === "ephemeralContainers") {
|
|
1736
|
-
return ephemeralContainers;
|
|
1737
|
-
}
|
|
1738
|
-
return [...containers2, ...initContainers, ...ephemeralContainers];
|
|
1739
|
-
}
|
|
1740
|
-
async function writeEvent(cr, event, eventType, eventReason, reportingComponent, reportingInstance) {
|
|
1741
|
-
logger_default.debug(cr.metadata, `Writing event: ${event.message}`);
|
|
1742
|
-
await (0, import_kubernetes_fluent_client6.K8s)(import_kubernetes_fluent_client6.kind.CoreEvent).Create({
|
|
1743
|
-
type: eventType,
|
|
1744
|
-
reason: eventReason,
|
|
1745
|
-
...event,
|
|
1746
|
-
// Fixed values
|
|
1747
|
-
metadata: {
|
|
1748
|
-
namespace: cr.metadata.namespace,
|
|
1749
|
-
generateName: cr.metadata.name
|
|
1750
|
-
},
|
|
1751
|
-
involvedObject: {
|
|
1752
|
-
apiVersion: cr.apiVersion,
|
|
1753
|
-
kind: cr.kind,
|
|
1754
|
-
name: cr.metadata.name,
|
|
1755
|
-
namespace: cr.metadata.namespace,
|
|
1756
|
-
uid: cr.metadata.uid
|
|
1757
|
-
},
|
|
1758
|
-
firstTimestamp: /* @__PURE__ */ new Date(),
|
|
1759
|
-
reportingComponent,
|
|
1760
|
-
reportingInstance
|
|
1761
|
-
});
|
|
1762
|
-
}
|
|
1763
|
-
function getOwnerRefFrom(cr) {
|
|
1764
|
-
const { name, uid } = cr.metadata;
|
|
1765
|
-
return [
|
|
1766
|
-
{
|
|
1767
|
-
apiVersion: cr.apiVersion,
|
|
1768
|
-
kind: cr.kind,
|
|
1769
|
-
uid,
|
|
1770
|
-
name
|
|
1771
|
-
}
|
|
1772
|
-
];
|
|
1773
|
-
}
|
|
1774
|
-
function sanitizeResourceName(name) {
|
|
1775
|
-
return name.toLowerCase().replace(/[^a-z0-9]+/g, "-").slice(0, 250).replace(/^[^a-z]+|[^a-z]+$/g, "");
|
|
1776
|
-
}
|
|
1777
1782
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1778
1783
|
0 && (module.exports = {
|
|
1779
1784
|
Capability,
|