Add possibility for admin to suspend/delete
This commit is contained in:
39
src/app/api/admin/tenants/[name]/delete/route.ts
Normal file
39
src/app/api/admin/tenants/[name]/delete/route.ts
Normal file
@@ -0,0 +1,39 @@
|
||||
import { NextResponse } from "next/server";
|
||||
import { requirePlatformRole } from "@/lib/session";
|
||||
import { getTenant, deleteTenant } from "@/lib/k8s";
|
||||
|
||||
/**
|
||||
* POST /api/admin/tenants/[name]/delete
|
||||
* Delete a PiecedTenant CR. The operator handles cleanup
|
||||
* (namespace, vault, litellm team, etc.).
|
||||
*/
|
||||
export async function POST(
|
||||
_request: Request,
|
||||
{ params }: { params: Promise<{ name: string }> }
|
||||
) {
|
||||
try {
|
||||
await requirePlatformRole();
|
||||
} catch {
|
||||
return NextResponse.json({ error: "Forbidden" }, { status: 403 });
|
||||
}
|
||||
|
||||
const { name } = await params;
|
||||
|
||||
const tenant = await getTenant(name);
|
||||
if (!tenant) {
|
||||
return NextResponse.json({ error: "Tenant not found" }, { status: 404 });
|
||||
}
|
||||
|
||||
try {
|
||||
await deleteTenant(name);
|
||||
return NextResponse.json({
|
||||
message: "Tenant deletion initiated. The operator will clean up all resources.",
|
||||
});
|
||||
} catch (e: any) {
|
||||
console.error("Failed to delete tenant:", e);
|
||||
return NextResponse.json(
|
||||
{ error: `Failed to delete tenant: ${e.message}` },
|
||||
{ status: 500 }
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user