diff options
author | Martin Polden <mpolden@mpolden.no> | 2019-09-30 14:46:14 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-30 14:46:14 +0200 |
commit | cb24c26484ca658d796628edc684d44dc74c0821 (patch) | |
tree | b5fef14eb45fbaedb6c0fb543e87c0bef71a0566 /node-repository/src | |
parent | 633d09e4b279aefc8fa3f47f7186072a7f1f8d30 (diff) | |
parent | 685dc3a8654a4ae9202efb1a20d51f9c328a754b (diff) |
Merge pull request #10816 from vespa-engine/mpolden/container-core-restapi-types
Use response classes from container-core
Diffstat (limited to 'node-repository/src')
6 files changed, 9 insertions, 159 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/ErrorResponse.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/ErrorResponse.java deleted file mode 100644 index 5d7d720a1e2..00000000000 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/ErrorResponse.java +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.vespa.hosted.provision.restapi.v2; - -import com.yahoo.container.jdisc.HttpResponse; -import com.yahoo.slime.Cursor; -import com.yahoo.slime.Slime; -import com.yahoo.slime.JsonFormat; - -import java.io.IOException; -import java.io.OutputStream; - -import static com.yahoo.jdisc.Response.Status.*; - -/** - * Error responses with JSON bodies - * - * @author bratseth - */ -public class ErrorResponse extends HttpResponse { - - private final Slime slime = new Slime(); - private final String message; - - public enum ErrorCode { - FORBIDDEN, - UNAUTHORIZED, - NOT_FOUND, - BAD_REQUEST, - METHOD_NOT_ALLOWED, - INTERNAL_SERVER_ERROR - } - - private ErrorResponse(int code, ErrorCode errorCode, String message) { - super(code); - this.message = message; - Cursor root = slime.setObject(); - root.setString("error-code", errorCode.name()); - root.setString("message", message); - } - - public String message() { return message; } - - public static ErrorResponse notFoundError(String message) { - return new ErrorResponse(NOT_FOUND, ErrorCode.NOT_FOUND, message); - } - - public static ErrorResponse internalServerError(String message) { - return new ErrorResponse(INTERNAL_SERVER_ERROR, ErrorCode.INTERNAL_SERVER_ERROR, message); - } - - public static ErrorResponse badRequest(String message) { - return new ErrorResponse(BAD_REQUEST, ErrorCode.BAD_REQUEST, message); - } - - public static ErrorResponse methodNotAllowed(String message) { - return new ErrorResponse(METHOD_NOT_ALLOWED, ErrorCode.METHOD_NOT_ALLOWED, message); - } - - public static ErrorResponse unauthorized(String message) { - return new ErrorResponse(UNAUTHORIZED, ErrorCode.UNAUTHORIZED, message); - } - - public static ErrorResponse forbidden(String message) { - return new ErrorResponse(FORBIDDEN, ErrorCode.FORBIDDEN, message); - } - - @Override - public void render(OutputStream stream) throws IOException { - new JsonFormat(true).encode(stream, slime); - } - - @Override - public String getContentType() { return "application/json"; } - -} diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/HostCapacityResponse.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/HostCapacityResponse.java index 7b0eb38b628..5402c22498a 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/HostCapacityResponse.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/HostCapacityResponse.java @@ -1,6 +1,5 @@ package com.yahoo.vespa.hosted.provision.restapi.v2; -import com.fasterxml.jackson.databind.ObjectMapper; import com.yahoo.container.jdisc.HttpRequest; import com.yahoo.container.jdisc.HttpResponse; import com.yahoo.slime.Cursor; @@ -16,6 +15,9 @@ import java.util.Arrays; import java.util.List; import java.util.Optional; +/** + * @author mgimle + */ public class HostCapacityResponse extends HttpResponse { private final StringBuilder text; private final Slime slime; diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/LoadBalancersApiHandler.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/LoadBalancersApiHandler.java index 6ffac2c0fbc..24aa1fe0b25 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/LoadBalancersApiHandler.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/LoadBalancersApiHandler.java @@ -4,6 +4,7 @@ package com.yahoo.vespa.hosted.provision.restapi.v2; import com.yahoo.container.jdisc.HttpRequest; import com.yahoo.container.jdisc.HttpResponse; import com.yahoo.container.jdisc.LoggingRequestHandler; +import com.yahoo.restapi.ErrorResponse; import com.yahoo.vespa.hosted.provision.NoSuchNodeException; import com.yahoo.vespa.hosted.provision.NodeRepository; import com.yahoo.yolean.Exceptions; diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/MessageResponse.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/MessageResponse.java deleted file mode 100644 index 51b1eebf55f..00000000000 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/MessageResponse.java +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.vespa.hosted.provision.restapi.v2; - -import com.yahoo.container.jdisc.HttpResponse; -import com.yahoo.slime.JsonFormat; -import com.yahoo.slime.Slime; - -import java.io.IOException; -import java.io.OutputStream; - -/** - * A 200 ok response with a message in JSON - * - * @author bratseth - */ -public class MessageResponse extends HttpResponse { - - private final Slime slime = new Slime(); - - public MessageResponse(String message) { - super(200); - slime.setObject().setString("message", message); - } - - @Override - public void render(OutputStream stream) throws IOException { - new JsonFormat(true).encode(stream, slime); - } - - @Override - public String getContentType() { return "application/json"; } - -} diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesApiHandler.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesApiHandler.java index a2ebcc29078..d12150408c4 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesApiHandler.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesApiHandler.java @@ -12,7 +12,10 @@ import com.yahoo.container.jdisc.HttpRequest; import com.yahoo.container.jdisc.HttpResponse; import com.yahoo.container.jdisc.LoggingRequestHandler; import com.yahoo.io.IOUtils; +import com.yahoo.restapi.ErrorResponse; +import com.yahoo.restapi.MessageResponse; import com.yahoo.restapi.Path; +import com.yahoo.restapi.ResourceResponse; import com.yahoo.slime.ArrayTraverser; import com.yahoo.slime.Inspector; import com.yahoo.slime.Slime; @@ -98,13 +101,13 @@ public class NodesApiHandler extends LoggingRequestHandler { private HttpResponse handleGET(HttpRequest request) { String path = request.getUri().getPath(); - if (path.equals( "/nodes/v2/")) return ResourcesResponse.fromStrings(request.getUri(), "state", "node", "command", "maintenance", "upgrade"); + if (path.equals( "/nodes/v2/")) return new ResourceResponse(request.getUri(), "state", "node", "command", "maintenance", "upgrade"); if (path.equals( "/nodes/v2/node/")) return new NodesResponse(ResponseType.nodeList, request, orchestrator, nodeRepository); if (path.startsWith("/nodes/v2/node/")) return new NodesResponse(ResponseType.singleNode, request, orchestrator, nodeRepository); if (path.equals( "/nodes/v2/state/")) return new NodesResponse(ResponseType.stateList, request, orchestrator, nodeRepository); if (path.startsWith("/nodes/v2/state/")) return new NodesResponse(ResponseType.nodesInStateList, request, orchestrator, nodeRepository); if (path.startsWith("/nodes/v2/acl/")) return new NodeAclResponse(request, nodeRepository); - if (path.equals( "/nodes/v2/command/")) return ResourcesResponse.fromStrings(request.getUri(), "restart", "reboot"); + if (path.equals( "/nodes/v2/command/")) return new ResourceResponse(request.getUri(), "restart", "reboot"); if (path.equals( "/nodes/v2/maintenance/")) return new JobsResponse(nodeRepository.jobControl()); if (path.equals( "/nodes/v2/upgrade/")) return new UpgradeResponse(nodeRepository.infrastructureVersions(), nodeRepository.osVersions(), nodeRepository.dockerImages()); if (path.startsWith("/nodes/v2/capacity")) return new HostCapacityResponse(nodeRepository, request); diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/ResourcesResponse.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/ResourcesResponse.java deleted file mode 100644 index 3cc9a24dce3..00000000000 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/ResourcesResponse.java +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.vespa.hosted.provision.restapi.v2; - -import com.yahoo.container.jdisc.HttpResponse; -import com.yahoo.slime.Cursor; -import com.yahoo.slime.JsonFormat; -import com.yahoo.slime.Slime; - -import java.io.IOException; -import java.io.OutputStream; -import java.net.URI; - -/** A response which lists a set of subresources as full urls */ -public class ResourcesResponse extends HttpResponse { - - private final URI parentUrl; - - private final String[] subResources; - - public ResourcesResponse(URI parentUrl, String[] subResources) { - super(200); - this.parentUrl = parentUrl; - this.subResources = subResources; - } - - @Override - public void render(OutputStream stream) throws IOException { - String parentUrlString = parentUrl.toString(); - if ( ! parentUrlString.endsWith("/")) - parentUrlString = parentUrlString + "/"; - - Slime slime = new Slime(); - Cursor root = slime.setObject(); - Cursor array = root.setArray("resources"); - for (String subResource : subResources) { - array.addObject().setString("url", parentUrlString + subResource + "/"); - } - new JsonFormat(true).encode(stream, slime); - } - - @Override - public String getContentType() { return "application/json"; } - - public static ResourcesResponse fromStrings(URI parentUrl, String ... subResources) { - return new ResourcesResponse(parentUrl, subResources); - } - -} |