(feature) Update UI & Resource Availability

This commit is contained in:
Elijah Dunemask 2023-03-15 15:20:08 +00:00
parent 11d8229eb5
commit 929193d272
44 changed files with 4747 additions and 27 deletions

View file

@ -0,0 +1,19 @@
import { Router, json as jsonMiddleware } from "express";
import {
startServer,
stopServer,
serverList,
getServers,
} from "../k8s/server-control.js";
import createServer from "../k8s/server-create.js";
import deleteServer from "../k8s/server-delete.js";
const router = Router();
router.use(jsonMiddleware());
// Routes
router.post("/create", createServer);
router.delete("/delete", deleteServer);
router.post("/start", startServer);
router.post("/stop", stopServer);
router.get("/list", serverList);
router.get("/instances", getServers);
export default router;

View file

@ -0,0 +1,27 @@
import { Router } from "express";
import k8s from "@kubernetes/client-node";
import { WARN } from "../util/logging.js";
const router = Router();
const kc = new k8s.KubeConfig();
kc.loadFromDefault();
const k8sApi = kc.makeApiClient(k8s.CoreV1Api);
// Get Routes
router.get("/available", (req, res) => {
k8sApi.listNode().then((nodeRes) => {
const nodeAllocatable = nodeRes.body.items.map((i) => i.status.allocatable);
const nodeResources = nodeAllocatable.map(({ cpu, memory }) => ({
cpu,
memory,
}));
const { cpu: clusterCpu, memory: clusterMemory } = nodeResources[0];
const isIdentical = ({ cpu, memory }) =>
clusterMemory === memory && clusterCpu === cpu;
if (!nodeResources.every(isIdentical))
WARN("ROUTES", "Warning, node resources were non-consistent");
const availableCpu = parseInt(clusterCpu) * 1000;
const availableMemory = parseInt(clusterMemory) / 1024;
res.json({ cpu: availableCpu, memory: availableMemory });
});
});
export default router;

View file

@ -0,0 +1,6 @@
import { Router } from "express";
const router = Router();
// Get Routes
router.get("/healthz", (req, res) => res.sendStatus(200));
export default router;