27 lines
788 B
TypeScript
27 lines
788 B
TypeScript
import { exec } from 'child_process';
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
const body = await readBody(event);
|
|
const { action, vm } = body;
|
|
|
|
try {
|
|
|
|
const command = action === 'start'
|
|
? `virsh start ${vm.name}`
|
|
: `virsh shutdown ${vm.name}`;
|
|
|
|
await new Promise((resolve, reject) => {
|
|
exec(command, (error, stdout, stderr) => {
|
|
if (error || stderr) {
|
|
reject(`Error: ${stderr || error?.message}`);
|
|
}
|
|
resolve(stdout);
|
|
});
|
|
});
|
|
|
|
return { status: 'success', message: `VM ${action} successful`, vm };
|
|
} catch (error) {
|
|
return { status: 'error', message: `Failed to ${action} VM`, error: error };
|
|
}
|
|
});
|
|
|