summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2022-11-21 09:42:07 +0100
committerGitHub <noreply@github.com>2022-11-21 09:42:07 +0100
commit75463c873ed404ffa39c5b8ac21810819a4b3a62 (patch)
treee67aadace18474458955a8c350e94954d669a1bc /node-repository
parent8f32428bb05196e8b6c9c3855864a9ec51dd250d (diff)
parentd43bbf2ab1016b95a396d38ee855bee09279db9a (diff)
Merge pull request #24940 from vespa-engine/mpolden/fix-ctor
Ensure GPU resources are included in copy methods
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeCandidate.java3
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodeResourcesSerializer.java7
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiHandler.java23
3 files changed, 21 insertions, 12 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeCandidate.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeCandidate.java
index b1b230479ee..55b2bfc8329 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeCandidate.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeCandidate.java
@@ -35,7 +35,8 @@ public abstract class NodeCandidate implements Nodelike, Comparable<NodeCandidat
List.of(Node.State.provisioned, Node.State.ready, Node.State.active);
private static final NodeResources zeroResources =
- new NodeResources(0, 0, 0, 0, NodeResources.DiskSpeed.any, NodeResources.StorageType.any);
+ new NodeResources(0, 0, 0, 0, NodeResources.DiskSpeed.any, NodeResources.StorageType.any,
+ NodeResources.Architecture.getDefault(), NodeResources.GpuResources.getDefault());
/** The free capacity on the parent of this node, before adding this node to it */
protected final NodeResources freeParentCapacity;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodeResourcesSerializer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodeResourcesSerializer.java
index 0d21caa3a06..0f944947440 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodeResourcesSerializer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodeResourcesSerializer.java
@@ -3,6 +3,7 @@ package com.yahoo.vespa.hosted.provision.restapi;
import com.yahoo.config.provision.NodeResources;
import com.yahoo.slime.Cursor;
+import com.yahoo.slime.Inspector;
/**
* @author bratseth
@@ -74,4 +75,10 @@ public class NodeResourcesSerializer {
};
}
+ public static NodeResources.GpuResources gpuResourcesFromSlime(Inspector gpuObject) {
+ if (!gpuObject.valid()) return NodeResources.GpuResources.getDefault();
+ return new NodeResources.GpuResources((int) gpuObject.field("gpuCount").asLong(),
+ gpuObject.field("gpuMemory").asDouble());
+ }
+
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiHandler.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiHandler.java
index a3acb9b95d8..2f35d0e7e81 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiHandler.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiHandler.java
@@ -76,7 +76,6 @@ public class NodesV2ApiHandler extends ThreadedHttpRequestHandler {
private final NodeRepository nodeRepository;
private final MetricsDb metricsDb;
private final NodeFlavors nodeFlavors;
- private final CloudAccount cloudAccount;
@Inject
public NodesV2ApiHandler(ThreadedHttpRequestHandler.Context parentCtx, Orchestrator orchestrator,
@@ -86,20 +85,19 @@ public class NodesV2ApiHandler extends ThreadedHttpRequestHandler {
this.nodeRepository = nodeRepository;
this.metricsDb = metricsDb;
this.nodeFlavors = flavors;
- this.cloudAccount = nodeRepository.zone().cloud().account();
}
@Override
public HttpResponse handle(HttpRequest request) {
try {
- switch (request.getMethod()) {
- case GET: return handleGET(request);
- case PUT: return handlePUT(request);
- case POST: return isPatchOverride(request) ? handlePATCH(request) : handlePOST(request);
- case DELETE: return handleDELETE(request);
- case PATCH: return handlePATCH(request);
- default: return ErrorResponse.methodNotAllowed("Method '" + request.getMethod() + "' is not supported");
- }
+ return switch (request.getMethod()) {
+ case GET -> handleGET(request);
+ case PUT -> handlePUT(request);
+ case POST -> isPatchOverride(request) ? handlePATCH(request) : handlePOST(request);
+ case DELETE -> handleDELETE(request);
+ case PATCH -> handlePATCH(request);
+ default -> ErrorResponse.methodNotAllowed("Method '" + request.getMethod() + "' is not supported");
+ };
}
catch (NotFoundException | NoSuchNodeException e) {
return ErrorResponse.notFoundError(Exceptions.toMessageString(e));
@@ -299,7 +297,8 @@ public class NodesV2ApiHandler extends ThreadedHttpRequestHandler {
requiredField(resourcesInspector, "bandwidthGbps", Inspector::asDouble),
optionalString(resourcesInspector.field("diskSpeed")).map(NodeResourcesSerializer::diskSpeedFrom).orElse(NodeResources.DiskSpeed.getDefault()),
optionalString(resourcesInspector.field("storageType")).map(NodeResourcesSerializer::storageTypeFrom).orElse(NodeResources.StorageType.getDefault()),
- optionalString(resourcesInspector.field("architecture")).map(NodeResourcesSerializer::architectureFrom).orElse(NodeResources.Architecture.getDefault())));
+ optionalString(resourcesInspector.field("architecture")).map(NodeResourcesSerializer::architectureFrom).orElse(NodeResources.Architecture.getDefault()),
+ NodeResourcesSerializer.gpuResourcesFromSlime(inspector.field("gpu"))));
}
Flavor flavor = nodeFlavors.getFlavorOrThrow(flavorInspector.asString());
@@ -318,6 +317,8 @@ public class NodesV2ApiHandler extends ThreadedHttpRequestHandler {
flavor = flavor.with(flavor.resources().with(NodeResourcesSerializer.storageTypeFrom(resourcesInspector.field("storageType").asString())));
if (resourcesInspector.field("architecture").valid())
flavor = flavor.with(flavor.resources().with(NodeResourcesSerializer.architectureFrom(resourcesInspector.field("architecture").asString())));
+ if (resourcesInspector.field("gpu").valid())
+ flavor = flavor.with(flavor.resources().with(NodeResourcesSerializer.gpuResourcesFromSlime(resourcesInspector.field("gpu"))));
}
return flavor;
}