From 056e26dfd3b499ac32abbb866fddc388d3dca0e9 Mon Sep 17 00:00:00 2001 From: James Wynn Date: Thu, 27 Oct 2022 16:53:54 -0500 Subject: [PATCH] Improved handling of empty or disabled kubernetes configuration --- src/pages/api/kubernetes/stats/[...service].js | 6 ++++++ src/pages/api/kubernetes/status/[...service].js | 6 ++++++ src/pages/api/widgets/kubernetes.js | 5 +++++ src/utils/config/kubernetes.js | 5 ++++- src/utils/config/service-helpers.js | 3 +++ 5 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/pages/api/kubernetes/stats/[...service].js b/src/pages/api/kubernetes/stats/[...service].js index c4b5b931d..2ab9ba584 100644 --- a/src/pages/api/kubernetes/stats/[...service].js +++ b/src/pages/api/kubernetes/stats/[...service].js @@ -21,6 +21,12 @@ export default async function handler(req, res) { try { const kc = getKubeConfig(); + if (!kc) { + res.status(500).send({ + error: "No kubernetes configuration" + }); + return; + } const coreApi = kc.makeApiClient(CoreV1Api); const metricsApi = new Metrics(kc); const podsResponse = await coreApi.listNamespacedPod(namespace, null, null, null, null, labelSelector) diff --git a/src/pages/api/kubernetes/status/[...service].js b/src/pages/api/kubernetes/status/[...service].js index aa325e9bb..e76d2d7d8 100644 --- a/src/pages/api/kubernetes/status/[...service].js +++ b/src/pages/api/kubernetes/status/[...service].js @@ -20,6 +20,12 @@ export default async function handler(req, res) { try { const kc = getKubeConfig(); + if (!kc) { + res.status(500).send({ + error: "No kubernetes configuration" + }); + return; + } const coreApi = kc.makeApiClient(CoreV1Api); const podsResponse = await coreApi.listNamespacedPod(namespace, null, null, null, null, labelSelector) .then((response) => response.body) diff --git a/src/pages/api/widgets/kubernetes.js b/src/pages/api/widgets/kubernetes.js index 7ca9f62b1..f589b2b94 100644 --- a/src/pages/api/widgets/kubernetes.js +++ b/src/pages/api/widgets/kubernetes.js @@ -11,6 +11,11 @@ export default async function handler(req, res) { try { const kc = getKubeConfig(); + if (!kc) { + return res.status(500).send({ + error: "No kubernetes configuration" + }); + } const coreApi = kc.makeApiClient(CoreV1Api); const metricsApi = new Metrics(kc); diff --git a/src/utils/config/kubernetes.js b/src/utils/config/kubernetes.js index b6b1adc7f..d44b75f3a 100644 --- a/src/utils/config/kubernetes.js +++ b/src/utils/config/kubernetes.js @@ -19,8 +19,11 @@ export default function getKubeConfig() { kc.loadFromCluster(); break; case 'default': - default: kc.loadFromDefault(); + break; + case 'disabled': + default: + return null; } return kc; diff --git a/src/utils/config/service-helpers.js b/src/utils/config/service-helpers.js index d37423be5..d705b5377 100644 --- a/src/utils/config/service-helpers.js +++ b/src/utils/config/service-helpers.js @@ -125,6 +125,9 @@ export async function servicesFromKubernetes() { try { const kc = getKubeConfig(); + if (!kc) { + return []; + } const networking = kc.makeApiClient(NetworkingV1Api); const ingressList = await networking.listIngressForAllNamespaces(null, null, null, "homepage/enabled=true")