diff options
Diffstat (limited to 'node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesApiHandler.java')
-rw-r--r-- | node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesApiHandler.java | 15 |
1 files changed, 14 insertions, 1 deletions
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 418a3b16e2d..7f1959d548e 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 @@ -37,6 +37,7 @@ import javax.inject.Inject; import java.io.IOException; import java.io.InputStream; import java.io.UncheckedIOException; +import java.time.Instant; import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -170,6 +171,7 @@ public class NodesApiHandler extends LoggingRequestHandler { if (path.matches("/nodes/v2/maintenance/inactive/{job}")) return setJobActive(path.get("job"), false); if (path.matches("/nodes/v2/flags/{flag}")) return setFlag(path.get("flag"), true, "", ""); if (path.matches("/nodes/v2/flags/{flag}/{dimension}/{value}")) return setFlag(path.get("flag"), true, path.get("dimension"), path.get("value")); + if (path.matches("/nodes/v2/upgrade/firmware")) return requestFirmwareCheckResponse(); throw new NotFoundException("Nothing at path '" + request.getUri().getPath() + "'"); } @@ -184,6 +186,7 @@ public class NodesApiHandler extends LoggingRequestHandler { if (path.matches("/nodes/v2/maintenance/inactive/{job}")) return setJobActive(path.get("job"), true); if (path.matches("/nodes/v2/flags/{flag}")) return setFlag(path.get("flag"), false, "", ""); if (path.matches("/nodes/v2/flags/{flag}/{dimension}/{value}")) return setFlag(path.get("flag"), false, path.get("dimension"), path.get("value")); + if (path.matches("/nodes/v2/upgrade/firmware")) return cancelFirmwareCheckResponse(); throw new NotFoundException("Nothing at path '" + request.getUri().getPath() + "'"); } @@ -299,7 +302,7 @@ public class NodesApiHandler extends LoggingRequestHandler { private MessageResponse setTargetVersions(HttpRequest request) { NodeType nodeType = NodeType.valueOf(lastElement(request.getUri().getPath()).toLowerCase()); Inspector inspector = toSlime(request.getData()).get(); - List<String> messageParts = new ArrayList<>(2); + List<String> messageParts = new ArrayList<>(3); boolean force = inspector.field("force").asBool(); Inspector versionField = inspector.field("version"); @@ -331,6 +334,16 @@ public class NodesApiHandler extends LoggingRequestHandler { " for nodes of type " + nodeType); } + private MessageResponse cancelFirmwareCheckResponse() { + nodeRepository.firmwareChecks().cancel(); + return new MessageResponse("Cancelled outstanding requests for firmware checks"); + } + + private MessageResponse requestFirmwareCheckResponse() { + nodeRepository.firmwareChecks().request(); + return new MessageResponse("Will request firmware checks on all hosts."); + } + private static String hostnamesAsString(List<Node> nodes) { return nodes.stream().map(Node::hostname).sorted().collect(Collectors.joining(", ")); } |