aboutsummaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2021-12-01 14:11:33 +0100
committerMartin Polden <mpolden@mpolden.no>2021-12-01 14:11:33 +0100
commitf3d3d329cf226092ccfbbc5cfea5b7eeede7acc7 (patch)
treeb331d7cc6a68da8a68673d9ea61261dc481b2c50 /node-repository
parent6e701db122b7206f0e535300fab25847dfab9828 (diff)
Read id field when patching or adding nodes
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Node.java14
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodePatcher.java5
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiHandler.java8
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporterTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiTest.java20
5 files changed, 28 insertions, 21 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Node.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Node.java
index e7a20ff54b3..4d63863a917 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Node.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/Node.java
@@ -69,13 +69,13 @@ public final class Node implements Nodelike {
}
/** Creates a node builder in the initial state (provisioned) */
- public static Node.Builder create(String openStackId, IP.Config ipConfig, String hostname, Flavor flavor, NodeType type) {
- return new Node.Builder(openStackId, hostname, flavor, State.provisioned, type).ipConfig(ipConfig);
+ public static Node.Builder create(String id, IP.Config ipConfig, String hostname, Flavor flavor, NodeType type) {
+ return new Node.Builder(id, hostname, flavor, State.provisioned, type).ipConfig(ipConfig);
}
/** Creates a node builder */
- public static Node.Builder create(String openStackId, String hostname, Flavor flavor, Node.State state, NodeType type) {
- return new Node.Builder(openStackId, hostname, flavor, state, type);
+ public static Node.Builder create(String id, String hostname, Flavor flavor, Node.State state, NodeType type) {
+ return new Node.Builder(id, hostname, flavor, state, type);
}
/** DO NOT USE: public for serialization purposes. See {@code create} helper methods. */
@@ -328,9 +328,9 @@ public final class Node implements Nodelike {
allocation, history, type, reports, modelName, reservedTo, exclusiveToApplicationId, exclusiveToClusterType, switchHostname, trustStoreItems);
}
- /** Returns a copy of this with the openStackId set */
- public Node withOpenStackId(String openStackId) {
- return new Node(openStackId, ipConfig, hostname, parentHostname, flavor, status, state,
+ /** Returns a copy of this with given id set */
+ public Node withId(String id) {
+ return new Node(id, ipConfig, hostname, parentHostname, flavor, status, state,
allocation, history, type, reports, modelName, reservedTo, exclusiveToApplicationId, exclusiveToClusterType, switchHostname, trustStoreItems);
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodePatcher.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodePatcher.java
index 673f38229fa..70e31938e95 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodePatcher.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodePatcher.java
@@ -174,8 +174,9 @@ public class NodePatcher {
clock.instant());
case "reports" :
return nodeWithPatchedReports(node, value);
- case "openStackId" :
- return node.withOpenStackId(asString(value));
+ case "id" :
+ case "openStackId" : // TODO(mpolden): Remove when clients stop sending this field
+ return node.withId(asString(value));
case "diskGb":
case "minDiskAvailableGb":
return node.with(node.flavor().with(node.flavor().resources().withDiskGb(value.asDouble())), Agent.operator, clock.instant());
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 2253fcb9ac5..90e92978fb3 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
@@ -267,7 +267,13 @@ public class NodesV2ApiHandler extends LoggingRequestHandler {
inspector.field("additionalHostnames").traverse((ArrayTraverser) (i, item) ->
addressPool.add(new Address(item.asString())));
- Node.Builder builder = Node.create(inspector.field("openStackId").asString(),
+ final String id;
+ if (inspector.field("id").valid()) {
+ id = inspector.field("id").asString();
+ } else {
+ id = inspector.field("openStackId").asString(); // TODO(mpolden): Remove when clients stop sending this field
+ }
+ Node.Builder builder = Node.create(id,
IP.Config.of(ipAddresses, ipAddressPool, addressPool),
inspector.field("hostname").asString(),
flavorFromSlime(inspector),
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporterTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporterTest.java
index f01f98064a0..8c649243d61 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporterTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporterTest.java
@@ -183,7 +183,7 @@ public class MetricsReporterTest {
// Allow 4 containers
Set<String> ipAddressPool = Set.of("::2", "::3", "::4", "::5");
- Node dockerHost = Node.create("openStackId1", new IP.Config(Set.of("::1"), ipAddressPool), "dockerHost",
+ Node dockerHost = Node.create("node-id-1", new IP.Config(Set.of("::1"), ipAddressPool), "dockerHost",
nodeFlavors.getFlavorOrThrow("host"), NodeType.host).build();
nodeRepository.nodes().addNodes(List.of(dockerHost), Agent.system);
nodeRepository.nodes().deallocateRecursively("dockerHost", Agent.system, getClass().getSimpleName());
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiTest.java
index fb5bfbfe66e..7c69d1f5c28 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiTest.java
@@ -198,7 +198,7 @@ public class NodesV2ApiTest {
Utf8.toBytes("{\"currentVespaVersion\": \"6.43.0\",\"currentDockerImage\": \"docker-registry.domain.tld:8080/dist/vespa:6.45.0\"}"), Request.Method.PATCH),
"{\"message\":\"Updated host4.yahoo.com\"}");
assertResponse(new Request("http://localhost:8080/nodes/v2/node/host4.yahoo.com",
- Utf8.toBytes("{\"openStackId\": \"patched-id\"}"), Request.Method.PATCH),
+ Utf8.toBytes("{\"id\": \"patched-id\"}"), Request.Method.PATCH),
"{\"message\":\"Updated host4.yahoo.com\"}");
assertResponse(new Request("http://localhost:8080/nodes/v2/node/dockerhost1.yahoo.com",
Utf8.toBytes("{\"modelName\": \"foo\"}"), Request.Method.PATCH),
@@ -383,7 +383,7 @@ public class NodesV2ApiTest {
@Test
public void post_controller_node() throws Exception {
- String data = "[{\"hostname\":\"controller1.yahoo.com\", \"openStackId\":\"fake-controller1.yahoo.com\"," +
+ String data = "[{\"hostname\":\"controller1.yahoo.com\", \"id\":\"fake-controller1.yahoo.com\"," +
createIpAddresses("127.0.0.1") +
"\"flavor\":\"default\"" +
", \"type\":\"controller\"}]";
@@ -873,14 +873,14 @@ public class NodesV2ApiTest {
String host = "parent2.yahoo.com";
// Test adding with overrides
tester.assertResponse(new Request("http://localhost:8080/nodes/v2/node",
- ("[{\"hostname\":\"" + host + "\"," + createIpAddresses("::1") + "\"openStackId\":\"osid-123\"," +
+ ("[{\"hostname\":\"" + host + "\"," + createIpAddresses("::1") + "\"id\":\"osid-123\"," +
"\"flavor\":\"large-variant\",\"resources\":{\"diskGb\":1234,\"memoryGb\":4321}}]").getBytes(StandardCharsets.UTF_8),
Request.Method.POST),
400,
"{\"error-code\":\"BAD_REQUEST\",\"message\":\"Can only override disk GB for configured flavor\"}");
assertResponse(new Request("http://localhost:8080/nodes/v2/node",
- ("[{\"hostname\":\"" + host + "\"," + createIpAddresses("::1") + "\"openStackId\":\"osid-123\"," +
+ ("[{\"hostname\":\"" + host + "\"," + createIpAddresses("::1") + "\"id\":\"osid-123\"," +
"\"flavor\":\"large-variant\",\"type\":\"host\",\"resources\":{\"diskGb\":1234}}]").
getBytes(StandardCharsets.UTF_8),
Request.Method.POST),
@@ -892,7 +892,7 @@ public class NodesV2ApiTest {
String tenant = "node-1-3.yahoo.com";
String resources = "\"resources\":{\"vcpu\":64.0,\"memoryGb\":128.0,\"diskGb\":1234.0,\"bandwidthGbps\":15.0,\"diskSpeed\":\"slow\",\"storageType\":\"remote\"}";
assertResponse(new Request("http://localhost:8080/nodes/v2/node",
- ("[{\"hostname\":\"" + tenant + "\"," + createIpAddresses("::2") + "\"openStackId\":\"osid-124\"," +
+ ("[{\"hostname\":\"" + tenant + "\"," + createIpAddresses("::2") + "\"id\":\"osid-124\"," +
"\"type\":\"tenant\"," + resources + "}]").
getBytes(StandardCharsets.UTF_8),
Request.Method.POST),
@@ -920,14 +920,14 @@ public class NodesV2ApiTest {
String resources = "\"resources\":{\"vcpu\":5.0,\"memoryGb\":4321.0,\"diskGb\":1234.0,\"bandwidthGbps\":0.3,\"diskSpeed\":\"slow\",\"storageType\":\"local\"}";
// Test adding new node with resources
tester.assertResponse(new Request("http://localhost:8080/nodes/v2/node",
- ("[{\"hostname\":\"" + hostname + "\"," + createIpAddresses("::1") + "\"openStackId\":\"osid-123\"," +
+ ("[{\"hostname\":\"" + hostname + "\"," + createIpAddresses("::1") + "\"id\":\"osid-123\"," +
resources.replace("\"memoryGb\":4321.0,", "") + "}]").getBytes(StandardCharsets.UTF_8),
Request.Method.POST),
400,
"{\"error-code\":\"BAD_REQUEST\",\"message\":\"Required field 'memoryGb' is missing\"}");
assertResponse(new Request("http://localhost:8080/nodes/v2/node",
- ("[{\"hostname\":\"" + hostname + "\"," + createIpAddresses("::1") + "\"openStackId\":\"osid-123\"," + resources + "}]")
+ ("[{\"hostname\":\"" + hostname + "\"," + createIpAddresses("::1") + "\"id\":\"osid-123\"," + resources + "}]")
.getBytes(StandardCharsets.UTF_8),
Request.Method.POST),
"{\"message\":\"Added 1 nodes to the provisioned state\"}");
@@ -1029,13 +1029,13 @@ public class NodesV2ApiTest {
private static String asDockerNodeJson(String hostname, NodeType nodeType, String parentHostname, String... ipAddress) {
return "{\"hostname\":\"" + hostname + "\", \"parentHostname\":\"" + parentHostname + "\"," +
createIpAddresses(ipAddress) +
- "\"openStackId\":\"" + hostname + "\",\"flavor\":\"d-1-1-100\"" +
+ "\"id\":\"" + hostname + "\",\"flavor\":\"d-1-1-100\"" +
(nodeType != NodeType.tenant ? ",\"type\":\"" + nodeType + "\"" : "") +
"}";
}
private static String asNodeJson(String hostname, String flavor, String... ipAddress) {
- return "{\"hostname\":\"" + hostname + "\", \"openStackId\":\"" + hostname + "\"," +
+ return "{\"hostname\":\"" + hostname + "\", \"id\":\"" + hostname + "\"," +
createIpAddresses(ipAddress) +
"\"flavor\":\"" + flavor + "\"}";
}
@@ -1048,7 +1048,7 @@ public class NodesV2ApiTest {
private static String asNodeJson(String hostname, NodeType nodeType, String flavor, Optional<TenantName> reservedTo,
Optional<ApplicationId> exclusiveTo, Optional<String> switchHostname,
List<String> additionalHostnames, String... ipAddress) {
- return "{\"hostname\":\"" + hostname + "\", \"openStackId\":\"" + hostname + "\"," +
+ return "{\"hostname\":\"" + hostname + "\", \"id\":\"" + hostname + "\"," +
createIpAddresses(ipAddress) +
"\"flavor\":\"" + flavor + "\"" +
(reservedTo.map(tenantName -> ", \"reservedTo\":\"" + tenantName.value() + "\"").orElse("")) +