138 lines
3.5 KiB
TypeScript
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);
|
|
}
|
|
}
|