refactor: move hwlab gitops observability helper
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
// Native helper injected into HWLAB runtime GitOps postprocess/verify scripts.
|
||||
// It intentionally avoids imports so it can also run inside `node -` heredocs.
|
||||
(function installRuntimeGitopsObservability(globalObject) {
|
||||
const prometheusOperatorKinds = new Set(["ServiceMonitor", "PrometheusRule", "PodMonitor", "Probe"]);
|
||||
|
||||
function isObject(value) {
|
||||
return value !== null && typeof value === "object" && !Array.isArray(value);
|
||||
}
|
||||
|
||||
function isPrometheusOperatorResource(item) {
|
||||
return isObject(item)
|
||||
&& typeof item.apiVersion === "string"
|
||||
&& item.apiVersion.startsWith("monitoring.coreos.com/")
|
||||
&& prometheusOperatorKinds.has(String(item.kind));
|
||||
}
|
||||
|
||||
function prometheusOperatorDisabled(overlay) {
|
||||
return isObject(overlay?.observability) && overlay.observability.prometheusOperator === false;
|
||||
}
|
||||
|
||||
function stripPrometheusOperatorResources(doc, overlay) {
|
||||
if (!prometheusOperatorDisabled(overlay)) return { docs: [doc], changed: false };
|
||||
if (isObject(doc) && doc.kind === "List" && Array.isArray(doc.items)) {
|
||||
const items = doc.items.filter((item) => !isPrometheusOperatorResource(item));
|
||||
return { docs: items.length > 0 ? [{ ...doc, items }] : [], changed: items.length !== doc.items.length };
|
||||
}
|
||||
return isPrometheusOperatorResource(doc) ? { docs: [], changed: true } : { docs: [doc], changed: false };
|
||||
}
|
||||
|
||||
function prometheusOperatorResourceRef(item, file) {
|
||||
return {
|
||||
file,
|
||||
kind: item && item.kind,
|
||||
name: item && item.metadata && item.metadata.name,
|
||||
container: null,
|
||||
};
|
||||
}
|
||||
|
||||
globalObject.unideskRuntimeGitopsObservability = {
|
||||
isPrometheusOperatorResource,
|
||||
stripPrometheusOperatorResources,
|
||||
prometheusOperatorResourceRef,
|
||||
};
|
||||
})(globalThis);
|
||||
Reference in New Issue
Block a user