in frontend/server/src/main/java/org/pytorch/serve/http/api/rest/ManagementRequestHandler.java [51:107]
public void handleRequest(
ChannelHandlerContext ctx,
FullHttpRequest req,
QueryStringDecoder decoder,
String[] segments)
throws ModelException, DownloadArchiveException, WorkflowException {
if (isManagementReq(segments)) {
if (endpointMap.getOrDefault(segments[1], null) != null) {
handleCustomEndpoint(ctx, req, segments, decoder);
} else {
if (!"models".equals(segments[1])) {
throw new ResourceNotFoundException();
}
HttpMethod method = req.method();
if (segments.length < 3) {
if (HttpMethod.GET.equals(method)) {
handleListModels(ctx, decoder);
return;
} else if (HttpMethod.POST.equals(method)) {
handleRegisterModel(ctx, decoder, req);
return;
}
throw new MethodNotAllowedException();
}
String modelVersion = null;
if (segments.length == 4) {
modelVersion = segments[3];
}
if (HttpMethod.GET.equals(method)) {
handleDescribeModel(ctx, segments[2], modelVersion);
} else if (HttpMethod.PUT.equals(method)) {
if (segments.length == 5 && "set-default".equals(segments[4])) {
setDefaultModelVersion(ctx, segments[2], segments[3]);
} else {
handleScaleModel(ctx, decoder, segments[2], modelVersion);
}
} else if (HttpMethod.DELETE.equals(method)) {
handleUnregisterModel(ctx, segments[2], modelVersion);
} else {
throw new MethodNotAllowedException();
}
}
} else if (isKFV1ManagementReq(segments)) {
String modelVersion = null;
String modelName = segments[3].split(":")[0];
HttpMethod method = req.method();
if (HttpMethod.GET.equals(method)) {
handleKF1ModelReady(ctx, modelName, modelVersion);
} else {
throw new MethodNotAllowedException();
}
} else {
chain.handleRequest(ctx, req, decoder, segments);
}
}