aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--container-core/src/main/java/com/yahoo/restapi/ResourceResponse.java14
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesApiHandler.java5
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/ResourcesResponse.java52
3 files changed, 12 insertions, 59 deletions
diff --git a/container-core/src/main/java/com/yahoo/restapi/ResourceResponse.java b/container-core/src/main/java/com/yahoo/restapi/ResourceResponse.java
index 4852bfafa60..ff301d44798 100644
--- a/container-core/src/main/java/com/yahoo/restapi/ResourceResponse.java
+++ b/container-core/src/main/java/com/yahoo/restapi/ResourceResponse.java
@@ -9,6 +9,7 @@ import com.yahoo.slime.Slime;
import java.io.IOException;
import java.io.OutputStream;
+import java.net.URI;
/**
* Returns a response containing an array of links to sub-resources
@@ -19,18 +20,21 @@ public class ResourceResponse extends HttpResponse {
private final Slime slime = new Slime();
- public ResourceResponse(HttpRequest request, String ... subResources) {
+ public ResourceResponse(URI parentUrl, String ... subResources) {
super(200);
Cursor resourceArray = slime.setObject().setArray("resources");
for (String subResource : subResources) {
Cursor resourceEntry = resourceArray.addObject();
- resourceEntry.setString("url", new Uri(request.getUri())
- .append(subResource)
- .withTrailingSlash()
- .toString());
+ resourceEntry.setString("url", new Uri(parentUrl).append(subResource)
+ .withTrailingSlash()
+ .toString());
}
}
+ public ResourceResponse(HttpRequest request, String ... subResources) {
+ this(request.getUri(), subResources);
+ }
+
@Override
public void render(OutputStream stream) throws IOException {
new JsonFormat(true).encode(stream, slime);
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 95893730af9..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
@@ -15,6 +15,7 @@ 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;
@@ -100,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 ceb95ce53e0..00000000000
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/ResourcesResponse.java
+++ /dev/null
@@ -1,52 +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
- *
- * @author bratseth
- */
-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);
- }
-
-}