[FEATURE} Adjust error handling and bump versions
This commit is contained in:
parent
d47a8c3cc4
commit
360dd32860
19 changed files with 1052 additions and 455 deletions
|
@ -8,21 +8,35 @@ const k8sCore = kc.makeApiClient(k8s.CoreV1Api);
|
|||
const k8sMetrics = new k8s.Metrics(kc);
|
||||
const namespace = process.env.MCL_SERVER_NAMESPACE;
|
||||
|
||||
async function findDeployment(serverName) {
|
||||
try {
|
||||
const deploymentRes = await k8sDeps.listNamespacedDeployment(namespace);
|
||||
return deploymentRes.body.items.find(
|
||||
(i) => i.metadata.name === `mcl-${serverName}`,
|
||||
);
|
||||
} catch (e) {
|
||||
ERR("SERVER CONTROL", `Error finding deployment: mcl-${serverName}`);
|
||||
}
|
||||
}
|
||||
|
||||
export async function startServer(req, res) {
|
||||
const serverSpec = req.body;
|
||||
if (!serverSpec) return res.sendStatus(400);
|
||||
if (!serverSpec.name) return res.status(400).send("Server name required!");
|
||||
const { name } = serverSpec;
|
||||
const deploymentRes = await k8sDeps.listNamespacedDeployment(namespace);
|
||||
const dep = deploymentRes.body.items.find(
|
||||
(i) => i.metadata.name === `mcl-${name}`
|
||||
);
|
||||
if (!dep) return res.status(409).send("Server does not exist!");
|
||||
const dep = await findDeployment(name);
|
||||
|
||||
if (!dep || !dep.spec) return res.status(409).send("Server does not exist!");
|
||||
if (dep.spec.replicas === 1)
|
||||
return res.status(409).send("Server already started!");
|
||||
dep.spec.replicas = 1;
|
||||
k8sDeps.replaceNamespacedDeployment(`mcl-${name}`, namespace, dep);
|
||||
res.sendStatus(200);
|
||||
k8sDeps
|
||||
.replaceNamespacedDeployment(`mcl-${name}`, namespace, dep)
|
||||
.then(() => res.sendStatus(200))
|
||||
.catch((e) => {
|
||||
ERR("SERVER CONTROL", e);
|
||||
res.status(500).send("Error updating server!");
|
||||
});
|
||||
}
|
||||
|
||||
export async function stopServer(req, res) {
|
||||
|
@ -32,7 +46,7 @@ export async function stopServer(req, res) {
|
|||
const { name } = serverSpec;
|
||||
const deploymentRes = await k8sDeps.listNamespacedDeployment(namespace);
|
||||
const dep = deploymentRes.body.items.find(
|
||||
(i) => i.metadata.name === `mcl-${name}`
|
||||
(i) => i.metadata.name === `mcl-${name}`,
|
||||
);
|
||||
if (!dep) return res.status(409).send("Server does not exist!");
|
||||
if (dep.spec.replicas === 0)
|
||||
|
@ -56,7 +70,7 @@ export async function getServers(req, res) {
|
|||
const podMetricsResponse = await k8sMetrics.getPodMetrics(namespace);
|
||||
// TODO Add an annotation and manage using that
|
||||
const serverDeployments = deployments.filter((d) =>
|
||||
d.metadata.name.startsWith("mcl-")
|
||||
d.metadata.name.startsWith("mcl-"),
|
||||
);
|
||||
var name, metrics, started;
|
||||
const servers = serverDeployments.map((s) => {
|
||||
|
@ -68,10 +82,10 @@ export async function getServers(req, res) {
|
|||
});
|
||||
if (pod) {
|
||||
const podCpus = pod.containers.map(
|
||||
({ usage }) => parseInt(usage.cpu) / 1_000_000
|
||||
({ usage }) => parseInt(usage.cpu) / 1_000_000,
|
||||
);
|
||||
const podMems = pod.containers.map(
|
||||
({ usage }) => parseInt(usage.memory) / 1024
|
||||
({ usage }) => parseInt(usage.memory) / 1024,
|
||||
);
|
||||
metrics = {
|
||||
cpu: Math.ceil(podCpus.reduce((a, b) => a + b)),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue