in frontend/server/src/main/java/com/amazonaws/ml/mms/http/ManagementRequestHandler.java [175:245]
private void handleRegisterModel(
ChannelHandlerContext ctx, QueryStringDecoder decoder, FullHttpRequest req)
throws ModelException {
RegisterModelRequest registerModelRequest = parseRequest(req, decoder);
String modelUrl = registerModelRequest.getModelUrl();
if (modelUrl == null) {
throw new BadRequestException("Parameter url is required.");
}
String modelName = registerModelRequest.getModelName();
String runtime = registerModelRequest.getRuntime();
String handler = registerModelRequest.getHandler();
int batchSize = registerModelRequest.getBatchSize();
int maxBatchDelay = registerModelRequest.getMaxBatchDelay();
int initialWorkers = registerModelRequest.getInitialWorkers();
boolean synchronous = registerModelRequest.isSynchronous();
int responseTimeout = registerModelRequest.getResponseTimeout();
String preloadModel = registerModelRequest.getPreloadModel();
if (preloadModel == null) {
preloadModel = ConfigManager.getInstance().getPreloadModel();
}
if (responseTimeout == -1) {
responseTimeout = ConfigManager.getInstance().getDefaultResponseTimeout();
}
Manifest.RuntimeType runtimeType = null;
if (runtime != null) {
try {
runtimeType = Manifest.RuntimeType.fromValue(runtime);
} catch (IllegalArgumentException e) {
throw new BadRequestException(e);
}
}
ModelManager modelManager = ModelManager.getInstance();
final ModelArchive archive;
try {
archive =
modelManager.registerModel(
modelUrl,
modelName,
runtimeType,
handler,
batchSize,
maxBatchDelay,
responseTimeout,
null,
preloadModel);
} catch (IOException | InterruptedException | ExecutionException | TimeoutException e) {
throw new InternalServerException("Failed to save model: " + modelUrl, e);
}
modelName = archive.getModelName();
final String msg = "Model \"" + modelName + "\" registered";
if (initialWorkers <= 0) {
NettyUtils.sendJsonResponse(ctx, new StatusResponse(msg));
return;
}
updateModelWorkers(
ctx,
modelName,
initialWorkers,
initialWorkers,
synchronous,
f -> {
modelManager.unregisterModel(archive.getModelName());
return null;
});
}