-
Notifications
You must be signed in to change notification settings - Fork 58
/
PluginManagementRequestHandler.java
71 lines (61 loc) · 2.29 KB
/
PluginManagementRequestHandler.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/*
* Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
* with the License. A copy of the License is located at
*
* http://aws.amazon.com/apache2.0/
*
* or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
* OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
* and limitations under the License.
*/
package ai.djl.serving.plugins;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.QueryStringDecoder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
/**
* A HTTP endpoint handler to return information about the loaded plugins.
*
* <p>This class is registered by the model-server as an HTTP endpoint handler.
*
* @author erik.bamberg@web.de
*/
public class PluginManagementRequestHandler implements RequestHandler<List<PluginMetaData>> {
private static final Logger logger =
LoggerFactory.getLogger(PluginManagementRequestHandler.class);
private PluginManager pluginManager;
private static final Pattern PATTERN = Pattern.compile("^/(plugins)([/?].*)?");
/** {@inheritDoc} */
@Override
public boolean acceptInboundMessage(Object msg) {
if (msg instanceof FullHttpRequest) {
FullHttpRequest req = (FullHttpRequest) msg;
return PATTERN.matcher(req.uri()).matches();
}
return false;
}
/** {@inheritDoc} */
@Override
public List<PluginMetaData> handleRequest(
ChannelHandlerContext ctx,
FullHttpRequest req,
QueryStringDecoder decoder,
String[] segments) {
logger.info("handle plugin management request");
return new ArrayList<>(pluginManager.listPlugins());
}
/**
* inject the pluginManager from the serving instance.
*
* @param pluginManager of the serving instance.
*/
public void setPluginManager(PluginManager pluginManager) {
this.pluginManager = pluginManager;
}
}