A simple, powerful CLI tool to spin up OpenIndiana virtual machines with QEMU
1import { ctx } from "./context.ts";
2import type { VirtualMachine } from "./db.ts";
3import type { STATUS } from "./types.ts";
4
5export async function saveInstanceState(vm: VirtualMachine) {
6 await ctx.db.insertInto("virtual_machines")
7 .values(vm)
8 .execute();
9}
10
11export async function updateInstanceState(
12 name: string,
13 status: STATUS,
14 pid?: number,
15) {
16 await ctx.db.updateTable("virtual_machines")
17 .set({ status, pid })
18 .where((eb) =>
19 eb.or([
20 eb("name", "=", name),
21 eb("id", "=", name),
22 ])
23 )
24 .execute();
25}
26
27export async function removeInstanceState(name: string) {
28 await ctx.db.deleteFrom("virtual_machines")
29 .where((eb) =>
30 eb.or([
31 eb("name", "=", name),
32 eb("id", "=", name),
33 ])
34 )
35 .execute();
36}
37
38export async function getInstanceState(
39 name: string,
40): Promise<VirtualMachine | undefined> {
41 const vm = await ctx.db.selectFrom("virtual_machines")
42 .selectAll()
43 .where((eb) =>
44 eb.or([
45 eb("name", "=", name),
46 eb("id", "=", name),
47 ])
48 )
49 .executeTakeFirst();
50
51 return vm;
52}