A simple, powerful CLI tool to spin up OpenIndiana virtual machines with QEMU
at main 1.1 kB view raw
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}