[FEATURE] Fixed file manager and adjusted starting display (#5)
Co-authored-by: Dunemask <dunemask@gmail.com> Reviewed-on: https://gitea.dunemask.dev/elysium/minecluster/pulls/5
This commit is contained in:
parent
4f19cf19d9
commit
fb57c03ba7
9 changed files with 63 additions and 45 deletions
|
@ -11,7 +11,6 @@ const kc = new k8s.KubeConfig();
|
|||
kc.loadFromDefault();
|
||||
|
||||
const k8sMetrics = new k8s.Metrics(kc);
|
||||
const k8sDeps = kc.makeApiClient(k8s.AppsV1Api);
|
||||
const namespace = process.env.MCL_SERVER_NAMESPACE;
|
||||
|
||||
export async function startServerContainer(serverSpec) {
|
||||
|
@ -43,17 +42,26 @@ export async function stopServerContainer(serverSpec) {
|
|||
export async function getInstances() {
|
||||
const serverDeployments = await getDeployments();
|
||||
const podMetricsResponse = await k8sMetrics.getPodMetrics(namespace);
|
||||
var name, metrics, started;
|
||||
var name, metrics, services, serverAvailable, ftpAvailable;
|
||||
const serverInstances = serverDeployments.map((s) => {
|
||||
name = s.metadata.annotations["minecluster.dunemask.net/server-name"];
|
||||
metrics = null;
|
||||
started = !!s.spec.template.spec.containers.find((c) =>
|
||||
c.name.includes(`mcl-${name}-server`),
|
||||
const { containers } = s.spec.template.spec;
|
||||
services = containers.map(({ name }) => name.split("-").pop());
|
||||
const serverStatusList = s.status.conditions.map(
|
||||
({ type: statusType, status: sts }) => ({ statusType, sts }),
|
||||
);
|
||||
const deploymentAvailable =
|
||||
serverStatusList.find(
|
||||
(ss) => ss.statusType === "Available" && ss.sts === "True",
|
||||
) !== undefined;
|
||||
serverAvailable = services.includes(`server`) && deploymentAvailable;
|
||||
ftpAvailable = services.includes("ftp") && deploymentAvailable;
|
||||
|
||||
const pod = podMetricsResponse.items.find(({ metadata: md }) => {
|
||||
return md.labels && md.labels.app && md.labels.app === `mcl-${name}-app`;
|
||||
});
|
||||
if (started && pod) {
|
||||
if (serverAvailable && pod) {
|
||||
const podCpus = pod.containers.map(
|
||||
({ usage }) => parseInt(usage.cpu) / 1_000_000,
|
||||
);
|
||||
|
@ -65,7 +73,7 @@ export async function getInstances() {
|
|||
memory: Math.ceil(podMems.reduce((a, b) => a + b)),
|
||||
};
|
||||
}
|
||||
return { name, metrics, started };
|
||||
return { name, metrics, services, serverAvailable, ftpAvailable };
|
||||
});
|
||||
return serverInstances;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue