[FEATURE] Adjust server control

This commit is contained in:
Dunemask 2023-12-17 12:25:14 -07:00
parent 7348b07352
commit 62c966a6bd
8 changed files with 109 additions and 57 deletions

View file

@ -1,5 +1,5 @@
import k8s from "@kubernetes/client-node";
import { VERB } from "../util/logging.js";
import { VERB, ERR } from "../util/logging.js";
const kc = new k8s.KubeConfig();
kc.loadFromDefault();
@ -13,7 +13,7 @@ const mineclusterManaged = (o) =>
o.metadata.annotations &&
o.metadata.annotations["minecluster.dunemask.net/server-name"] !== undefined;
const serverMatch = (serverName) => (o) =>
export const serverMatch = (serverName) => (o) =>
o.metadata.annotations["minecluster.dunemask.net/server-name"] === serverName;
export async function getDeployments() {
@ -72,7 +72,7 @@ export function getServerAssets(serverName) {
for (var k in serverAssets) if (serverAssets[k]) return serverAssets;
// If no assets exist, return nothing
})
.catch((e) => console.log(e));
.catch((e) => ERR("SERVER ASSETS", e));
}
export async function getDeployment(serverName) {
@ -82,13 +82,26 @@ export async function getDeployment(serverName) {
s.metadata.annotations["minecluster.dunemask.net/server-name"] ===
serverName,
);
if (!serverDeployment) {
console.log(servers.map((s) => s.metadata.annotations));
if (!serverDeployment)
throw Error(`MCL Deployment '${serverName}' could not be found!`);
}
return serverDeployment;
}
export async function toggleServer(serverName, scaleUp = false) {
const deployment = await getDeployment(serverName);
const { containers } = deployment.spec.template.spec;
const ftpContainer = containers.find((c) => c.name.endsWith("-ftp"));
res.sendStatus(200);
deployment.spec.template.spec.containers = containers;
return k8sDeps.replaceNamespacedDeployment(
deployment.metadata.name,
namespace,
deployment,
);
}
export async function scaleDeployment(serverName, scaleUp = false) {
const deployment = await getDeployment(serverName);
if (deployment.spec.replicas === 1 && scaleUp)
@ -97,6 +110,7 @@ export async function scaleDeployment(serverName, scaleUp = false) {
`MCL Deployment '${serverName}' is already scaled! Ignoring scale adjustment.`,
);
deployment.spec.replicas = scaleUp ? 1 : 0;
return k8sDeps.replaceNamespacedDeployment(
deployment.metadata.name,
namespace,