UNPKG

@xrengine/server-core

Version:

Shared components for XREngine server

76 lines (66 loc) 2.35 kB
import { SpawnTestBot, TestBot } from '@xrengine/common/src/interfaces/TestBot' import config from '@xrengine/server-core/src/appconfig' import serverLogger from '@xrengine/server-core/src/ServerLogger' import { Application } from '../../../declarations' export const getTestbotPod = async (app: Application) => { if (app.k8DefaultClient) { try { const jobName = `${config.server.releaseName}-xrengine-testbot` const podsResult = await app.k8DefaultClient.listNamespacedPod('default') let pods: TestBot[] = [] for (const pod of podsResult.body.items) { let labels = pod.metadata!.labels if (labels && labels['job-name'] && labels['job-name'] === jobName) { pods.push({ name: pod.metadata!.name!, status: pod.status!.phase! }) } } return pods } catch (e) { serverLogger.error(e) return e } } } /** * Reference: * https://serverfault.com/a/888819 * https://stackoverflow.com/a/61864881 * @param app * @returns */ export const runTestbotJob = async (app: Application): Promise<SpawnTestBot> => { if (app.k8BatchClient) { try { const jobName = `${config.server.releaseName}-xrengine-testbot` const oldJobResult = await app.k8BatchClient.readNamespacedJob(jobName, 'default') if (oldJobResult && oldJobResult.body) { // Removed unused properties delete oldJobResult.body.metadata!.managedFields delete oldJobResult.body.metadata!.resourceVersion delete oldJobResult.body.spec!.selector delete oldJobResult.body.spec!.template!.metadata!.labels oldJobResult.body.spec!.suspend = false const deleteJobResult = await app.k8BatchClient.deleteNamespacedJob( jobName, 'default', undefined, undefined, 0, undefined, 'Background' ) if (deleteJobResult.body.status === 'Success') { await app.k8BatchClient.createNamespacedJob('default', oldJobResult.body) return { status: true, message: 'Bot spawned successfully' } } } } catch (e) { serverLogger.error(e) return { status: false, message: `Failed to spawn bot. (${e.body.reason})` } } } return { status: false, message: 'Failed to spawn bot' } }