diff options
author | Valerij Fredriksen <valerijf@verizonmedia.com> | 2019-08-26 15:43:16 +0200 |
---|---|---|
committer | Valerij Fredriksen <valerijf@verizonmedia.com> | 2019-08-26 15:43:16 +0200 |
commit | cfbfe5956483acd28c0b38121ce2d14ab742f756 (patch) | |
tree | 2a62fad443d742e56122fad17fb2db354af7f429 /node-admin/src/main | |
parent | 46c23316a8c728d7aede2c243ac2823b3938f023 (diff) |
Update AddNode with resources and flavor overrides
Diffstat (limited to 'node-admin/src/main')
2 files changed, 24 insertions, 14 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/AddNode.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/AddNode.java index b83bd9895fc..233fe8318ae 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/AddNode.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/AddNode.java @@ -1,9 +1,10 @@ // Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.node.admin.configserver.noderepository; +import com.yahoo.config.provision.NodeResources; import com.yahoo.config.provision.NodeType; +import com.yahoo.config.provision.host.FlavorOverrides; -import java.util.Collections; import java.util.Objects; import java.util.Optional; import java.util.Set; @@ -15,29 +16,29 @@ public class AddNode { public final String hostname; public final Optional<String> parentHostname; - public final String nodeFlavor; + public final Optional<String> nodeFlavor; + public final Optional<FlavorOverrides> flavorOverrides; + public final Optional<NodeResources> nodeResources; public final NodeType nodeType; public final Set<String> ipAddresses; public final Set<String> additionalIpAddresses; - /** - * Constructor for a host node (has no parent) - */ - public AddNode(String hostname, String nodeFlavor, NodeType nodeType, Set<String> ipAddresses, Set<String> additionalIpAddresses) { - this(hostname, Optional.empty(), nodeFlavor, nodeType, ipAddresses, additionalIpAddresses); + public static AddNode forHost(String hostname, String nodeFlavor, Optional<FlavorOverrides> flavorOverrides, NodeType nodeType, Set<String> ipAddresses, Set<String> additionalIpAddresses) { + return new AddNode(hostname, Optional.empty(), Optional.of(nodeFlavor), flavorOverrides, Optional.empty(), nodeType, ipAddresses, additionalIpAddresses); } - /** - * Constructor for a child node (Must set parentHostname, no additionalIpAddresses) - */ - public AddNode(String hostname, String parentHostname, String nodeFlavor, NodeType nodeType, Set<String> ipAddresses) { - this(hostname, Optional.of(parentHostname), nodeFlavor, nodeType, ipAddresses, Collections.emptySet()); + public static AddNode forNode(String hostname, String parentHostname, NodeResources nodeResources, NodeType nodeType, Set<String> ipAddresses) { + return new AddNode(hostname, Optional.of(parentHostname), Optional.empty(), Optional.empty(), Optional.of(nodeResources), nodeType, ipAddresses, Set.of()); } - public AddNode(String hostname, Optional<String> parentHostname, String nodeFlavor, NodeType nodeType, Set<String> ipAddresses, Set<String> additionalIpAddresses) { + private AddNode(String hostname, Optional<String> parentHostname, + Optional<String> nodeFlavor, Optional<FlavorOverrides> flavorOverrides, Optional<NodeResources> nodeResources, + NodeType nodeType, Set<String> ipAddresses, Set<String> additionalIpAddresses) { this.hostname = hostname; this.parentHostname = parentHostname; this.nodeFlavor = nodeFlavor; + this.flavorOverrides = flavorOverrides; + this.nodeResources = nodeResources; this.nodeType = nodeType; this.ipAddresses = ipAddresses; this.additionalIpAddresses = additionalIpAddresses; diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java index 547aee3518e..9e43b3fa2de 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java @@ -8,6 +8,7 @@ import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.NodeResources; import com.yahoo.config.provision.NodeType; +import com.yahoo.config.provision.host.FlavorOverrides; import com.yahoo.vespa.hosted.node.admin.configserver.ConfigServerApi; import com.yahoo.vespa.hosted.node.admin.configserver.HttpException; import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.bindings.GetAclResponse; @@ -192,7 +193,15 @@ public class RealNodeRepository implements NodeRepository { node.openStackId = "fake-" + addNode.hostname; node.hostname = addNode.hostname; node.parentHostname = addNode.parentHostname.orElse(null); - node.flavor = addNode.nodeFlavor; + addNode.nodeFlavor.ifPresent(f -> node.flavor = f); + addNode.flavorOverrides.flatMap(FlavorOverrides::diskGb).ifPresent(d -> node.minDiskAvailableGb = d); + addNode.nodeResources.ifPresent(resources -> { + node.minCpuCores = resources.vcpu(); + node.minMainMemoryAvailableGb = resources.memoryGb(); + node.minDiskAvailableGb = resources.diskGb(); + node.bandwidth = resources.bandwidthGbps() * 1000; + node.fastDisk = resources.diskSpeed() == NodeResources.DiskSpeed.fast; + }); node.type = addNode.nodeType.name(); node.ipAddresses = addNode.ipAddresses; node.additionalIpAddresses = addNode.additionalIpAddresses; |