mirror of
https://github.com/gethomepage/homepage.git
synced 2026-01-06 07:22:07 +08:00
Enhancement: Add enablePools option to TrueNAS service widget (#2908)
--------- Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
This commit is contained in:
@@ -1,32 +1,9 @@
|
||||
import { jsonArrayFilter } from "utils/proxy/api-helpers";
|
||||
import credentialedProxyHandler from "utils/proxy/handlers/credentialed";
|
||||
import genericProxyHandler from "utils/proxy/handlers/generic";
|
||||
import getServiceWidget from "utils/config/service-helpers";
|
||||
import { asJson, jsonArrayFilter } from "utils/proxy/api-helpers";
|
||||
|
||||
const widget = {
|
||||
api: "{url}/api/v2.0/{endpoint}",
|
||||
proxyHandler: async (req, res, map) => {
|
||||
// choose proxy handler based on widget settings
|
||||
const { group, service } = req.query;
|
||||
|
||||
if (group && service) {
|
||||
const widgetOpts = await getServiceWidget(group, service);
|
||||
let handler;
|
||||
if (widgetOpts.username && widgetOpts.password) {
|
||||
handler = genericProxyHandler;
|
||||
} else if (widgetOpts.key) {
|
||||
handler = credentialedProxyHandler;
|
||||
}
|
||||
|
||||
if (handler) {
|
||||
return handler(req, res, map);
|
||||
}
|
||||
|
||||
return res.status(500).json({ error: "Username / password or API key required" });
|
||||
}
|
||||
|
||||
return res.status(500).json({ error: "Error parsing widget request" });
|
||||
},
|
||||
proxyHandler: credentialedProxyHandler,
|
||||
|
||||
mappings: {
|
||||
alerts: {
|
||||
@@ -39,6 +16,17 @@ const widget = {
|
||||
endpoint: "system/info",
|
||||
validate: ["loadavg", "uptime_seconds"],
|
||||
},
|
||||
pools: {
|
||||
endpoint: "pool",
|
||||
map: (data) =>
|
||||
asJson(data).map((entry) => ({
|
||||
id: entry.name,
|
||||
name: entry.name,
|
||||
healthy: entry.healthy,
|
||||
allocated: entry.allocated,
|
||||
free: entry.free,
|
||||
})),
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user