Added constant exports and linted new ...list.js files.

This commit is contained in:
djeinstine
2025-02-10 10:55:23 +00:00
parent 8e44424ffc
commit 410b920a7e
5 changed files with 129 additions and 113 deletions

View File

@@ -35,6 +35,9 @@ const extractKubeData = (config) => {
};
};
export const ANNOTATION_BASE = "gethomepage.dev";
export const ANNOTATION_WIDGET_BASE = `${ANNOTATION_BASE}/widget.`;
export default function getKubeArguments() {
checkAndCopyConfig("kubernetes.yaml");
@@ -72,4 +75,4 @@ export async function checkCRD(name,kc,logger) {
});
return exist;
}
}

View File

@@ -8,6 +8,7 @@ import createLogger from "utils/logger";
import checkAndCopyConfig, { CONF_DIR, getSettings, substituteEnvironmentVars } from "utils/config/config";
import getDockerArguments from "utils/config/docker";
import { getUrlSchema, getRouteList } from "utils/kubernetes/kubernetes-routes";
import {ANNOTATION_BASE,ANNOTATION_WIDGET_BASE} from "utils/config/kubernetes"
import * as shvl from "utils/config/shvl";
const logger = createLogger("service-helpers");
@@ -167,8 +168,6 @@ export async function servicesFromDocker() {
}
export async function servicesFromKubernetes() {
const ANNOTATION_BASE = "gethomepage.dev";
const ANNOTATION_WIDGET_BASE = `${ANNOTATION_BASE}/widget.`;
const { instanceName } = getSettings();
checkAndCopyConfig("kubernetes.yaml");

View File

@@ -1,50 +1,54 @@
// import { CustomObjectsApi, CoreV1Api } from "@kubernetes/client-node";
// import createLogger from "utils/logger";
import { CustomObjectsApi, CoreV1Api } from "@kubernetes/client-node";
import createLogger from "utils/logger";
const logger = createLogger("kubernetes-httproute-list");
const HTTPROUTE_API_GROUP = "gateway.networking.k8s.io";
const HTTPROUTE_API_VERSION = "v1";
// export async function getHttpRouteList(kc) {
export default async function listHttpRoute(kubeArguments) {
// const logger = createLogger("service-helpers");
// const crd = kc.makeApiClient(CustomObjectsApi);
// const core = kc.makeApiClient(CoreV1Api);
// let httpRouteList = [];
// // httproutes
// const getHttpRoute = async (namespace) =>
// crd
// .listNamespacedCustomObject(apiGroup, version, namespace, "httproutes")
// .then((response) => {
// const [httpRoute] = response.body.items;
// return httpRoute;
// })
// .catch((error) => {
// logger.error("Error getting httproutes: %d %s %s", error.statusCode, error.body, error.response);
// logger.debug(error);
// return null;
// });
// // namespaces
// const namespaces = await core
// .listNamespace()
// .then((response) => response.body.items.map((ns) => ns.metadata.name))
// .catch((error) => {
// logger.error("Error getting namespaces: %d %s %s", error.statusCode, error.body, error.response);
// logger.debug(error);
// return null;
// });
// if (namespaces) {
// const httpRouteListUnfiltered = await Promise.all(
// namespaces.map(async (namespace) => {
// const httpRoute = await getHttpRoute(namespace);
// return httpRoute;
// }),
// );
// httpRouteList = httpRouteListUnfiltered.filter((httpRoute) => httpRoute !== undefined);
// }
const crd = kubeArguments.config.makeApiClient(CustomObjectsApi);
const core = kubeArguments.config.makeApiClient(CoreV1Api);
const { gateway } = kubeArguments;
let httpRouteList = [];
// return httpRouteList;
// }
if (gateway === true) {
// httproutes
const getHttpRoute = async (namespace) =>
crd
.listNamespacedCustomObject(HTTPROUTE_API_GROUP, HTTPROUTE_API_VERSION, namespace, "httproutes")
.then((response) => {
const [httpRoute] = response.body.items;
return httpRoute;
})
.catch((error) => {
logger.error("Error getting httproutes: %d %s %s", error.statusCode, error.body, error.response);
logger.debug(error);
return null;
});
// namespaces
const namespaces = await core
.listNamespace()
.then((response) => response.body.items.map((ns) => ns.metadata.name))
.catch((error) => {
logger.error("Error getting namespaces: %d %s %s", error.statusCode, error.body, error.response);
logger.debug(error);
return null;
});
if (namespaces) {
const httpRouteListUnfiltered = await Promise.all(
namespaces.map(async (namespace) => {
const httpRoute = await getHttpRoute(namespace);
return httpRoute;
}),
);
httpRouteList = httpRouteListUnfiltered.filter((httpRoute) => httpRoute !== undefined);
}
}
return httpRouteList;
}

View File

@@ -1,18 +1,25 @@
// import NetworkingV1Api from "@kubernetes/client-node";
import NetworkingV1Api from "@kubernetes/client-node";
import createLogger from "utils/logger";
const logger = createLogger("kubernetes-ingress-list");
// export async function listIngress(kc) {
export default async function listIngress(kubeArguments) {
// const networking = kc.makeApiClient(NetworkingV1Api);
// const ingressList = await networking
// .listIngressForAllNamespaces(null, null, null, null)
// .then((response) => response.body)
// .catch((error) => {
// logger.error("Error getting ingresses: %d %s %s", error.statusCode, error.body, error.response);
// logger.debug(error);
// return null;
// });
// return ingressList;
// }
const networking = kubeArguments.config.makeApiClient(NetworkingV1Api);
const { ingress} = kubeArguments;
let ingressList = []
if (ingress===true){
ingressList = await networking
.listIngressForAllNamespaces(null, null, null, null)
.then((response) => response.body)
.catch((error) => {
logger.error("Error getting ingresses: %d %s %s", error.statusCode, error.body, error.response);
logger.debug(error);
return null;
});
}
return ingressList.items;
}

View File

@@ -1,60 +1,63 @@
// import CustomObjectsApi from "@kubernetes/client-node";
// import createLogger from "utils/logger";
import CustomObjectsApi from "@kubernetes/client-node";
// export async function listIngress(annotationBase,kc) {
import { checkCRD,ANNOTATION_BASE } from "utils/config/kubernetes";
import createLogger from "utils/logger";
const logger = createLogger("kubernetes-traefik-list");
export default async function listTraefikIngress(kubeArguments) {
// const logger = createLogger("service-helpers");
// const traefik = kubeArguments.traefik;
// let traefikList = [];
const kc = kubeArguments.config;
const { traefik } = kubeArguments;
const traefikList = [];
// if (traefik) {
// const crd = kc.makeApiClient(CustomObjectsApi);
// const traefikContainoExists = await checkCRD("ingressroutes.traefik.containo.us",kc,logger);
// const traefikExists = await checkCRD("ingressroutes.traefik.io",kc,logger);
if (traefik) {
const crd = kc.makeApiClient(CustomObjectsApi);
const traefikContainoExists = await checkCRD("ingressroutes.traefik.containo.us",kc,logger);
const traefikExists = await checkCRD("ingressroutes.traefik.io",kc,logger);
// const traefikIngressListContaino = await crd
// .listClusterCustomObject("traefik.containo.us", "v1alpha1", "ingressroutes")
// .then((response) => response.body)
// .catch(async (error) => {
// if (traefikContainoExists) {
// logger.error(
// "Error getting traefik ingresses from traefik.containo.us: %d %s %s",
// error.statusCode,
// error.body,
// error.response,
// );
// logger.debug(error);
// }
const traefikIngressListContaino = await crd
.listClusterCustomObject("traefik.containo.us", "v1alpha1", "ingressroutes")
.then((response) => response.body)
.catch(async (error) => {
if (traefikContainoExists) {
logger.error(
"Error getting traefik ingresses from traefik.containo.us: %d %s %s",
error.statusCode,
error.body,
error.response,
);
logger.debug(error);
}
// return [];
// });
return [];
});
// const traefikIngressListIo = await crd
// .listClusterCustomObject("traefik.io", "v1alpha1", "ingressroutes")
// .then((response) => response.body)
// .catch(async (error) => {
// if (traefikExists) {
// logger.error(
// "Error getting traefik ingresses from traefik.io: %d %s %s",
// error.statusCode,
// error.body,
// error.response,
// );
// logger.debug(error);
// }
const traefikIngressListIo = await crd
.listClusterCustomObject("traefik.io", "v1alpha1", "ingressroutes")
.then((response) => response.body)
.catch(async (error) => {
if (traefikExists) {
logger.error(
"Error getting traefik ingresses from traefik.io: %d %s %s",
error.statusCode,
error.body,
error.response,
);
logger.debug(error);
}
// return [];
// });
return [];
});
// const traefikIngressList = [...(traefikIngressListContaino?.items ?? []), ...(traefikIngressListIo?.items ?? [])];
const traefikIngressList = [...(traefikIngressListContaino?.items ?? []), ...(traefikIngressListIo?.items ?? [])];
// if (traefikIngressList.length > 0) {
// const traefikServices = traefikIngressList.filter(
// (ingress) => ingress.metadata.annotations && ingress.metadata.annotations[`${annotationBase}/href`],
// );
// traefikList.items.push(...traefikServices);
// }
// }
// return traefikList;
// }
if (traefikIngressList.length > 0) {
const traefikServices = traefikIngressList.filter(
(ingress) => ingress.metadata.annotations && ingress.metadata.annotations[`${ANNOTATION_BASE}/href`],
);
traefikList.push(...traefikServices);
}
}
return traefikList;
}