Files
studio-admin-be/src/runtime/runtime.controller.ts
T
chyoo a06d200eac
ci/woodpecker/push/woodpecker Pipeline was successful
add runtime workload env management api
2026-07-06 10:25:12 +09:00

138 lines
3.5 KiB
TypeScript

import { Body, Controller, Delete, Get, Param, Patch, Post, Query } from '@nestjs/common';
import { ScaleWorkloadDto } from './dto/scale-workload.dto';
import { UpdateWorkloadEnvDto } from './dto/update-workload-env.dto';
import { RuntimeService } from './runtime.service';
@Controller('runtime')
export class RuntimeController {
constructor(private readonly runtimeService: RuntimeService) {}
@Get('namespaces')
listNamespaces() {
return this.runtimeService.listNamespaces();
}
@Get('workloads')
listWorkloads(@Query('namespace') namespace?: string) {
return this.runtimeService.listWorkloads(namespace);
}
@Get('metrics/pods')
listPodMetrics(@Query('namespace') namespace?: string) {
return this.runtimeService.listPodMetrics(namespace);
}
@Get('workloads/:namespace/:kind/:name/env')
getWorkloadEnv(
@Param('namespace') namespace: string,
@Param('kind') kind: string,
@Param('name') name: string,
) {
return this.runtimeService.getWorkloadEnv(namespace, kind, name);
}
@Patch('workloads/:namespace/:kind/:name/env')
updateWorkloadEnv(
@Param('namespace') namespace: string,
@Param('kind') kind: string,
@Param('name') name: string,
@Body() body: UpdateWorkloadEnvDto,
) {
return this.runtimeService.updateWorkloadEnv(
namespace,
kind,
name,
body.variables,
);
}
@Post('workloads/:namespace/:kind/:name/restart')
restartWorkload(
@Param('namespace') namespace: string,
@Param('kind') kind: string,
@Param('name') name: string,
) {
return this.runtimeService.restartWorkload(namespace, kind, name);
}
@Post('workloads/:namespace/:kind/:name/scale')
scaleWorkload(
@Param('namespace') namespace: string,
@Param('kind') kind: string,
@Param('name') name: string,
@Body() body: ScaleWorkloadDto,
) {
return this.runtimeService.scaleWorkload(
namespace,
kind,
name,
body.replicas,
);
}
@Delete('workloads/:namespace/:kind/:name')
deleteWorkload(
@Param('namespace') namespace: string,
@Param('kind') kind: string,
@Param('name') name: string,
@Query('deleteService') deleteService?: string,
) {
return this.runtimeService.deleteWorkload(
namespace,
kind,
name,
deleteService === 'true',
);
}
@Get('workloads/:namespace/:kind/:name/pvcs')
listWorkloadPersistentVolumeClaims(
@Param('namespace') namespace: string,
@Param('kind') kind: string,
@Param('name') name: string,
) {
return this.runtimeService.listWorkloadPersistentVolumeClaims(
namespace,
kind,
name,
);
}
@Delete('workloads/:namespace/:kind/:name/pvcs/:claimName')
deleteWorkloadPersistentVolumeClaim(
@Param('namespace') namespace: string,
@Param('kind') kind: string,
@Param('name') name: string,
@Param('claimName') claimName: string,
) {
return this.runtimeService.deleteWorkloadPersistentVolumeClaim(
namespace,
kind,
name,
claimName,
);
}
@Get('workloads/:namespace/:kind/:name/logs')
getWorkloadLogs(
@Param('namespace') namespace: string,
@Param('kind') kind: string,
@Param('name') name: string,
@Query('tail') tail?: string,
) {
return this.runtimeService.getWorkloadLogs(
namespace,
kind,
name,
tail ? Number(tail) : 200,
);
}
@Get('events')
listEvents(@Query('namespace') namespace?: string) {
return this.runtimeService.listEvents(namespace);
}
}