diff options
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("")) + |