102 lines
2.2 KiB
TypeScript
102 lines
2.2 KiB
TypeScript
import { APIClient } from "./ApiClient";
|
|
|
|
export interface VMInfo {
|
|
uiid: string;
|
|
name: string;
|
|
description?: string;
|
|
architecture: string;
|
|
memory: number;
|
|
number_vcpu: number;
|
|
can_get_state: boolean;
|
|
can_start: boolean;
|
|
can_shutdown: boolean;
|
|
can_kill: boolean;
|
|
can_reset: boolean;
|
|
can_suspend: boolean;
|
|
can_resume: boolean;
|
|
can_screenshot: boolean;
|
|
}
|
|
|
|
export type VMState =
|
|
| "NoState"
|
|
| "Running"
|
|
| "Blocked"
|
|
| "Paused"
|
|
| "Shutdown"
|
|
| "Shutoff"
|
|
| "Crashed"
|
|
| "PowerManagementSuspended"
|
|
| "Other";
|
|
|
|
export class VMApi {
|
|
/**
|
|
* Get the list of VM that can be managed by this console
|
|
*/
|
|
static async GetList(): Promise<VMInfo[]> {
|
|
return (await APIClient.exec({ method: "GET", uri: "/vm/list" })).data;
|
|
}
|
|
|
|
/**
|
|
* Get the state of a VM
|
|
*/
|
|
static async State(vm: VMInfo): Promise<VMState> {
|
|
return (
|
|
await APIClient.exec({ method: "GET", uri: `/vm/${vm.uiid}/state` })
|
|
).data.state;
|
|
}
|
|
|
|
/**
|
|
* Request to start VM
|
|
*/
|
|
static async StartVM(vm: VMInfo): Promise<void> {
|
|
await APIClient.exec({ method: "GET", uri: `/vm/${vm.uiid}/start` });
|
|
}
|
|
|
|
/**
|
|
* Request to suspend VM
|
|
*/
|
|
static async SuspendVM(vm: VMInfo): Promise<void> {
|
|
await APIClient.exec({ method: "GET", uri: `/vm/${vm.uiid}/suspend` });
|
|
}
|
|
|
|
/**
|
|
* Request to resume VM
|
|
*/
|
|
static async ResumeVM(vm: VMInfo): Promise<void> {
|
|
await APIClient.exec({ method: "GET", uri: `/vm/${vm.uiid}/resume` });
|
|
}
|
|
|
|
/**
|
|
* Request to shutdown VM
|
|
*/
|
|
static async ShutdownVM(vm: VMInfo): Promise<void> {
|
|
await APIClient.exec({ method: "GET", uri: `/vm/${vm.uiid}/shutdown` });
|
|
}
|
|
|
|
/**
|
|
* Request to kill VM
|
|
*/
|
|
static async KillVM(vm: VMInfo): Promise<void> {
|
|
await APIClient.exec({ method: "GET", uri: `/vm/${vm.uiid}/kill` });
|
|
}
|
|
|
|
/**
|
|
* Request to reset VM
|
|
*/
|
|
static async ResetVM(vm: VMInfo): Promise<void> {
|
|
await APIClient.exec({ method: "GET", uri: `/vm/${vm.uiid}/reset` });
|
|
}
|
|
|
|
/**
|
|
* Get a screenshot of a VM
|
|
*/
|
|
static async Screenshot(vm: VMInfo): Promise<Blob> {
|
|
return (
|
|
await APIClient.exec({
|
|
uri: `/vm/${vm.uiid}/screenshot`,
|
|
method: "GET",
|
|
})
|
|
).data;
|
|
}
|
|
}
|