diff options
author | Martin Polden <mpolden@mpolden.no> | 2021-03-10 19:34:06 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-10 19:34:06 +0100 |
commit | 511afbfc58b08ce0e729511c8f2df8c81bfe37a6 (patch) | |
tree | 7cb585de87eeecd743f74e47507e31a0f155242f | |
parent | 34868d7ae17aac147c9652983d31080797c9bca3 (diff) | |
parent | 6c82a87b777550c85d16ab8afbd5b9d3c09836ad (diff) |
Merge pull request #16841 from vespa-engine/hakonhall/set-openstackid-in-real-node-repo-client
Set openstackId in real node repo client
4 files changed, 38 insertions, 7 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 d1b70450226..1cf9c2bfb76 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 @@ -15,6 +15,7 @@ import java.util.Set; public class AddNode { public final String hostname; + public final Optional<String> id; public final Optional<String> parentHostname; public final Optional<String> nodeFlavor; public final Optional<FlavorOverrides> flavorOverrides; @@ -23,19 +24,20 @@ public class AddNode { public final Set<String> ipAddresses; public final Set<String> 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); + public static AddNode forHost(String hostname, Optional<String> id, String nodeFlavor, Optional<FlavorOverrides> flavorOverrides, NodeType nodeType, Set<String> ipAddresses, Set<String> additionalIpAddresses) { + return new AddNode(hostname, id, Optional.empty(), Optional.of(nodeFlavor), flavorOverrides, Optional.empty(), nodeType, ipAddresses, additionalIpAddresses); } 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()); + return new AddNode(hostname, Optional.empty(), Optional.of(parentHostname), Optional.empty(), Optional.empty(), Optional.of(nodeResources), nodeType, ipAddresses, Set.of()); } - private AddNode(String hostname, Optional<String> parentHostname, + private AddNode(String hostname, Optional<String> id, Optional<String> parentHostname, Optional<String> nodeFlavor, Optional<FlavorOverrides> flavorOverrides, Optional<NodeResources> nodeResources, NodeType nodeType, Set<String> ipAddresses, Set<String> additionalIpAddresses) { this.hostname = hostname; + this.id = id; this.parentHostname = parentHostname; this.nodeFlavor = nodeFlavor; this.flavorOverrides = flavorOverrides; @@ -51,8 +53,11 @@ public class AddNode { if (o == null || getClass() != o.getClass()) return false; AddNode addNode = (AddNode) o; return Objects.equals(hostname, addNode.hostname) && + Objects.equals(id, addNode.id) && Objects.equals(parentHostname, addNode.parentHostname) && Objects.equals(nodeFlavor, addNode.nodeFlavor) && + Objects.equals(flavorOverrides, addNode.flavorOverrides) && + Objects.equals(nodeResources, addNode.nodeResources) && nodeType == addNode.nodeType && Objects.equals(ipAddresses, addNode.ipAddresses) && Objects.equals(additionalIpAddresses, addNode.additionalIpAddresses); @@ -60,15 +65,18 @@ public class AddNode { @Override public int hashCode() { - return Objects.hash(hostname, parentHostname, nodeFlavor, nodeType, ipAddresses, additionalIpAddresses); + return Objects.hash(hostname, id, parentHostname, nodeFlavor, flavorOverrides, nodeResources, nodeType, ipAddresses, additionalIpAddresses); } @Override public String toString() { return "AddNode{" + "hostname='" + hostname + '\'' + + ", id=" + id + ", parentHostname=" + parentHostname + ", nodeFlavor='" + nodeFlavor + '\'' + + ", flavorOverrides='" + flavorOverrides + '\'' + + ", nodeResources='" + nodeResources + '\'' + ", nodeType=" + nodeType + ", ipAddresses=" + ipAddresses + ", additionalIpAddresses=" + additionalIpAddresses + diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java index f7d68fe87ea..41f0932419b 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java @@ -25,6 +25,7 @@ import static com.yahoo.config.provision.NodeResources.DiskSpeed.slow; public class NodeSpec { private final String hostname; + private final Optional<String> id; private final NodeState state; private final NodeType type; private final String flavor; @@ -66,6 +67,7 @@ public class NodeSpec { public NodeSpec( String hostname, + Optional<String> id, Optional<DockerImage> wantedDockerImage, Optional<DockerImage> currentDockerImage, NodeState state, @@ -102,6 +104,7 @@ public class NodeSpec { } this.hostname = Objects.requireNonNull(hostname); + this.id = Objects.requireNonNull(id); this.wantedDockerImage = Objects.requireNonNull(wantedDockerImage); this.currentDockerImage = Objects.requireNonNull(currentDockerImage); this.state = Objects.requireNonNull(state); @@ -134,6 +137,11 @@ public class NodeSpec { return hostname; } + /** Returns the cloud-specific ID of the host. */ + public Optional<String> id() { + return id; + } + public NodeState state() { return state; } @@ -268,11 +276,13 @@ public class NodeSpec { NodeSpec that = (NodeSpec) o; return Objects.equals(hostname, that.hostname) && + Objects.equals(id, that.id) && Objects.equals(wantedDockerImage, that.wantedDockerImage) && Objects.equals(currentDockerImage, that.currentDockerImage) && Objects.equals(state, that.state) && Objects.equals(type, that.type) && Objects.equals(flavor, that.flavor) && + Objects.equals(modelName, that.modelName) && Objects.equals(wantedVespaVersion, that.wantedVespaVersion) && Objects.equals(currentVespaVersion, that.currentVespaVersion) && Objects.equals(wantedOsVersion, that.wantedOsVersion) && @@ -299,11 +309,13 @@ public class NodeSpec { public int hashCode() { return Objects.hash( hostname, + id, wantedDockerImage, currentDockerImage, state, type, flavor, + modelName, wantedVespaVersion, currentVespaVersion, wantedOsVersion, @@ -330,11 +342,13 @@ public class NodeSpec { public String toString() { return getClass().getSimpleName() + " {" + " hostname=" + hostname + + " id=" + id + " wantedDockerImage=" + wantedDockerImage + " currentDockerImage=" + currentDockerImage + " state=" + state + " type=" + type + " flavor=" + flavor + + " modelName=" + modelName + " wantedVespaVersion=" + wantedVespaVersion + " currentVespaVersion=" + currentVespaVersion + " wantedOsVersion=" + wantedOsVersion @@ -360,6 +374,7 @@ public class NodeSpec { public static class Builder { private String hostname; + private Optional<String> id = Optional.empty(); private NodeState state; private NodeType type; private String flavor; @@ -423,6 +438,11 @@ public class NodeSpec { return this; } + public Builder id(String id) { + this.id = Optional.of(id); + return this; + } + public Builder wantedDockerImage(DockerImage wantedDockerImage) { this.wantedDockerImage = Optional.of(wantedDockerImage); return this; @@ -681,7 +701,7 @@ public class NodeSpec { } public NodeSpec build() { - return new NodeSpec(hostname, wantedDockerImage, currentDockerImage, state, type, flavor, + return new NodeSpec(hostname, id, wantedDockerImage, currentDockerImage, state, type, flavor, wantedVespaVersion, currentVespaVersion, wantedOsVersion, currentOsVersion, orchestratorStatus, owner, membership, wantedRestartGeneration, currentRestartGeneration, 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 0747912bba2..5069f02c6b7 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 @@ -153,6 +153,7 @@ public class RealNodeRepository implements NodeRepository { NodeReports reports = NodeReports.fromMap(Optional.ofNullable(node.reports).orElseGet(Map::of)); return new NodeSpec( node.hostname, + Optional.ofNullable(node.openStackId), Optional.ofNullable(node.wantedDockerImage).map(DockerImage::fromString), Optional.ofNullable(node.currentDockerImage).map(DockerImage::fromString), nodeState, @@ -227,7 +228,7 @@ public class RealNodeRepository implements NodeRepository { private static NodeRepositoryNode nodeRepositoryNodeFromAddNode(AddNode addNode) { NodeRepositoryNode node = new NodeRepositoryNode(); - node.openStackId = "fake-" + addNode.hostname; + node.openStackId = addNode.id.orElse("fake-" + addNode.hostname); node.hostname = addNode.hostname; node.parentHostname = addNode.parentHostname.orElse(null); addNode.nodeFlavor.ifPresent(f -> node.flavor = f); diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java index 6d26e16f314..fe06812c608 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java @@ -163,6 +163,7 @@ public class RealNodeRepositoryTest { @Test public void testAddNodes() { AddNode host = AddNode.forHost("host123.domain.tld", + Optional.of("id1"), "default", Optional.of(FlavorOverrides.ofDisk(123)), NodeType.confighost, @@ -175,6 +176,7 @@ public class RealNodeRepositoryTest { nodeRepositoryApi.addNodes(List.of(host, node)); NodeSpec hostSpec = nodeRepositoryApi.getOptionalNode("host123.domain.tld").orElseThrow(); + assertEquals("id1", hostSpec.id().orElseThrow()); assertEquals("default", hostSpec.flavor()); assertEquals(123, hostSpec.diskGb(), 0); assertEquals(NodeType.confighost, hostSpec.type()); |