Files
multiverse/jumpa-iam/app/api/admin/cluster/scale/route.ts
T

27 lines
918 B
TypeScript

import { NextResponse } from 'next/server';
import { exec } from 'child_process';
import util from 'util';
const execPromise = util.promisify(exec);
export async function POST(_req: Request) {
try {
// Ideally we should verify JWT role: admin here, but for demonstration of the architecture:
// Command to scale up by 1 instance
const { stdout, stderr } = await execPromise('pm2 scale jumpa-chat +1');
console.log('[CLUSTER SCALE] stdout:', stdout);
if (stderr) console.error('[CLUSTER SCALE] stderr:', stderr);
// Give it 1 second to warm up
await new Promise(resolve => setTimeout(resolve, 1000));
return NextResponse.json({ success: true, message: 'Node scaled successfully', stdout }, { status: 200 });
} catch (error) {
console.error('[CLUSTER SCALE ERROR]', error);
return NextResponse.json({ error: 'Failed to scale cluster' }, { status: 500 });
}
}