30 lines
991 B
TypeScript
30 lines
991 B
TypeScript
import { Scheduler } from "../../core/scheduler";
|
|
import { db } from "../../db/db";
|
|
import { logger } from "@zerobyte/core/node";
|
|
import { stopApplicationRuntime } from "./bootstrap";
|
|
import { decryptVolumeConfig } from "../volumes/volume-config-secrets";
|
|
import {
|
|
createVolumeBackend,
|
|
type AgentVolume,
|
|
type BackendConfig as HostBackendConfig,
|
|
} from "../../../../apps/agent/src/volume-host";
|
|
|
|
export const shutdown = async () => {
|
|
await Scheduler.stop();
|
|
await stopApplicationRuntime();
|
|
|
|
const volumes = await db.query.volumesTable.findMany({
|
|
where: { status: "mounted" },
|
|
});
|
|
|
|
for (const volume of volumes) {
|
|
const backend = createVolumeBackend({
|
|
...volume,
|
|
config: (await decryptVolumeConfig(volume.config)) as HostBackendConfig,
|
|
provisioningId: volume.provisioningId ?? null,
|
|
} satisfies AgentVolume);
|
|
const { status, error } = await backend.unmount();
|
|
|
|
logger.info(`Volume ${volume.name} unmount status: ${status}${error ? `, error: ${error}` : ""}`);
|
|
}
|
|
};
|