mirror of
https://github.com/DI0IK/homepage-plus.git
synced 2025-07-08 06:38:46 +00:00
55 lines
1.7 KiB
JavaScript
55 lines
1.7 KiB
JavaScript
import { CoreV1Api, CustomObjectsApi } from "@kubernetes/client-node";
|
|
|
|
import { getKubeConfig, getKubernetes, HTTPROUTE_API_GROUP, HTTPROUTE_API_VERSION } from "utils/config/kubernetes";
|
|
import createLogger from "utils/logger";
|
|
|
|
const logger = createLogger("httproute-list");
|
|
const kc = getKubeConfig();
|
|
|
|
export default async function listHttpRoute() {
|
|
const crd = kc.makeApiClient(CustomObjectsApi);
|
|
const core = kc.makeApiClient(CoreV1Api);
|
|
const { gateway } = getKubernetes();
|
|
let httpRouteList = [];
|
|
|
|
if (gateway) {
|
|
// httproutes
|
|
const getHttpRoutes = async (namespace) =>
|
|
crd
|
|
.listNamespacedCustomObject({
|
|
group: HTTPROUTE_API_GROUP,
|
|
version: HTTPROUTE_API_VERSION,
|
|
namespace,
|
|
plural: "httproutes",
|
|
})
|
|
.then((response) => {
|
|
return response.items;
|
|
})
|
|
.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.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 httpRoutes = await getHttpRoutes(namespace);
|
|
return httpRoutes;
|
|
}),
|
|
);
|
|
|
|
httpRouteList = httpRouteListUnfiltered.flat().filter((httpRoute) => httpRoute);
|
|
}
|
|
}
|
|
return httpRouteList;
|
|
}
|