From 8e2ff61f1cf809c98af06dcfa8913f29819a8728 Mon Sep 17 00:00:00 2001 From: Michael Shamoon <4887959+shamoon@users.noreply.github.com> Date: Tue, 11 Oct 2022 09:34:59 -0700 Subject: [PATCH] Allow multiple glances widgets with optional `id` property --- src/pages/api/widgets/glances.js | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/src/pages/api/widgets/glances.js b/src/pages/api/widgets/glances.js index bf00862b2..86992dd10 100644 --- a/src/pages/api/widgets/glances.js +++ b/src/pages/api/widgets/glances.js @@ -5,24 +5,35 @@ import { getSettings } from "utils/config/config"; const logger = createLogger("glances"); export default async function handler(req, res) { - const settings = getSettings()?.glances; - if (!settings) { - logger.error("There is no glances section in settings.yaml"); - return res.status(400).json({ error: "There is no glances section in settings.yaml" }); + const { id } = req.query; + + let errorMessage; + + let instanceID = "glances"; + if (id) { // multiple instances + instanceID = id; + } + const settings = getSettings(); + const instanceSettings = settings[instanceID]; + if (!instanceSettings) { + errorMessage = id ? `There is no glances section with id '${id}' in settings.yaml` : "There is no glances section in settings.yaml"; + logger.error(errorMessage); + return res.status(400).json({ error: errorMessage }); } - const url = settings?.url; + const url = instanceSettings?.url; if (!url) { - logger.error("Missing Glances URL"); - return res.status(400).json({ error: "Missing Glances URL" }); + errorMessage = "Missing Glances URL"; + logger.error(errorMessage); + return res.status(400).json({ error: errorMessage }); } const apiUrl = `${url}/api/3/quicklook`; const headers = { "Accept-Encoding": "application/json" }; - if (settings.username && settings.password) { - headers.Authorization = `Basic ${Buffer.from(`${settings.username}:${settings.password}`).toString("base64")}` + if (instanceSettings.username && instanceSettings.password) { + headers.Authorization = `Basic ${Buffer.from(`${instanceSettings.username}:${instanceSettings.password}`).toString("base64")}` } const params = { method: "GET", headers };