Remove host files and uninstall agent when deleting hosts
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
import { json } from '@sveltejs/kit';
|
||||
import { HostDeletionError, receiveDecommissionReceipt } from '$lib/server/hosts/index.js';
|
||||
import { objectBody, requireAgentTransport } from '$lib/server/hosts/http.js';
|
||||
|
||||
/** The uninstall worker retains only this narrowly scoped credential after removing the agent. */
|
||||
export async function POST({ request, params }: { request: Request; params: { id: string } }) {
|
||||
requireAgentTransport(request);
|
||||
const token = request.headers.get('authorization')?.match(/^Bearer ([A-Za-z0-9_-]+)$/i)?.[1] ?? '';
|
||||
try { return json(receiveDecommissionReceipt(params.id, token, await objectBody(request, 8192)), { headers: { 'Cache-Control': 'no-store' } }); }
|
||||
catch (cause) {
|
||||
if (cause instanceof HostDeletionError) return json({ error: cause.message }, { status: cause.status });
|
||||
throw cause;
|
||||
}
|
||||
}
|
||||
@@ -15,7 +15,7 @@ export async function PATCH({ request, params }: Event) {
|
||||
|
||||
export function DELETE({ request, params }: Event) {
|
||||
requireManagementOrigin(request);
|
||||
try { deleteHost(params.id); return json({ deleted: true }); }
|
||||
try { const result = deleteHost(params.id); return json(result, { status: result.deleted ? 200 : 202 }); }
|
||||
catch (cause) {
|
||||
if (cause instanceof HostDeletionError) return json({ error: cause.message, blockers: cause.blockers }, { status: cause.status });
|
||||
return hostApiError(cause);
|
||||
|
||||
Reference in New Issue
Block a user