summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2021-03-10 19:34:06 +0100
committerGitHub <noreply@github.com>2021-03-10 19:34:06 +0100
commit511afbfc58b08ce0e729511c8f2df8c81bfe37a6 (patch)
tree7cb585de87eeecd743f74e47507e31a0f155242f
parent34868d7ae17aac147c9652983d31080797c9bca3 (diff)
parent6c82a87b777550c85d16ab8afbd5b9d3c09836ad (diff)
Merge pull request #16841 from vespa-engine/hakonhall/set-openstackid-in-real-node-repo-client
Set openstackId in real node repo client
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/AddNode.java18
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java22
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java3
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java2
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());