aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@oath.com>2018-08-10 12:51:12 +0200
committerolaaun <ola.aunroe@gmail.com>2018-08-10 12:51:12 +0200
commitbc41b0e6489e3002d75c400e4dda4f4218306554 (patch)
tree9f9b1fd110d1587c5baeaac9f074ab46e939ff65
parent8e43b0a8b6ac17ddd067e50649e05e80e22425f9 (diff)
Add handler skeleton (#6541)
-rw-r--r--container-core/src/main/java/com/yahoo/container/handler/test/MockService.java2
-rw-r--r--model-inference/pom.xml18
-rw-r--r--model-inference/src/main/java/ai/vespa/models/handler/ModelsEvaluationHandler.java57
3 files changed, 76 insertions, 1 deletions
diff --git a/container-core/src/main/java/com/yahoo/container/handler/test/MockService.java b/container-core/src/main/java/com/yahoo/container/handler/test/MockService.java
index 7bd18c519eb..eef80e95b3d 100644
--- a/container-core/src/main/java/com/yahoo/container/handler/test/MockService.java
+++ b/container-core/src/main/java/com/yahoo/container/handler/test/MockService.java
@@ -38,7 +38,7 @@ import java.util.logging.Logger;
* The file formats supported out of the box is text, see {@link com.yahoo.container.handler.test.MockService.TextFileHandler}.
* for descriptions of the format.
*
- * @author lulf
+ * @author Ulf Lilleengen
*/
@Beta
public class MockService extends LoggingRequestHandler {
diff --git a/model-inference/pom.xml b/model-inference/pom.xml
index ad258d1edf4..f97045f88ff 100644
--- a/model-inference/pom.xml
+++ b/model-inference/pom.xml
@@ -28,6 +28,24 @@
</dependency>
<dependency>
<groupId>com.yahoo.vespa</groupId>
+ <artifactId>jdisc_core</artifactId>
+ <version>${project.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.yahoo.vespa</groupId>
+ <artifactId>container-core</artifactId>
+ <version>${project.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.yahoo.vespa</groupId>
+ <artifactId>config</artifactId>
+ <version>${project.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.yahoo.vespa</groupId>
<artifactId>configdefinitions</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
diff --git a/model-inference/src/main/java/ai/vespa/models/handler/ModelsEvaluationHandler.java b/model-inference/src/main/java/ai/vespa/models/handler/ModelsEvaluationHandler.java
new file mode 100644
index 00000000000..78c46864d7b
--- /dev/null
+++ b/model-inference/src/main/java/ai/vespa/models/handler/ModelsEvaluationHandler.java
@@ -0,0 +1,57 @@
+package ai.vespa.models.handler;
+
+import ai.vespa.models.evaluation.ModelsEvaluator;
+import com.yahoo.container.jdisc.HttpRequest;
+import com.yahoo.container.jdisc.HttpResponse;
+import com.yahoo.container.jdisc.LoggingRequestHandler;
+import com.yahoo.tensor.Tensor;
+import com.yahoo.tensor.serialization.JsonFormat;
+
+import java.io.IOException;
+import java.io.OutputStream;
+
+public class ModelsEvaluationHandler extends LoggingRequestHandler {
+
+ private final ModelsEvaluator modelsEvaluator;
+
+ public ModelsEvaluationHandler(ModelsEvaluator modelsEvaluator, Context context) {
+ super(context);
+ this.modelsEvaluator = modelsEvaluator;
+ }
+
+ @Override
+ public HttpResponse handle(HttpRequest request) {
+ Tensor result = modelsEvaluator.evaluatorOf(property("model", "serving_default", request),
+ request.getProperty("function"))
+ .evaluate();
+ return new RawResponse(JsonFormat.encode(result));
+ }
+
+ private String property(String name, String defaultValue, HttpRequest request) {
+ String value = request.getProperty(name);
+ if (value == null) return defaultValue;
+ return value;
+ }
+
+ private static class RawResponse extends HttpResponse {
+
+ private final byte[] data;
+
+ RawResponse(byte[] data) {
+ super(200);
+ this.data = data;
+ }
+
+ @Override
+ public String getContentType() {
+ return "application/json";
+ }
+
+ @Override
+ public void render(OutputStream outputStream) throws IOException {
+ outputStream.write(data);
+ }
+ }
+
+}
+