diff options
6 files changed, 14 insertions, 11 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 4d0617c02fd..5135ae73ea1 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 @@ -96,17 +96,17 @@ public final class Node implements Nodelike { if (state == State.active) requireNonEmpty(ipConfig.primary(), "Active node " + hostname + " must have at least one valid IP address"); + if (state == State.ready && type.isHost()) { + requireNonEmpty(ipConfig.primary(), "A " + type + " must have at least one primary IP address in state " + state); + requireNonEmpty(ipConfig.pool().ipSet(), "A " + type + " must have a non-empty IP address pool in state " + state); + } + if (parentHostname.isPresent()) { if (!ipConfig.pool().ipSet().isEmpty()) throw new IllegalArgumentException("A child node cannot have an IP address pool"); if (modelName.isPresent()) throw new IllegalArgumentException("A child node cannot have model name set"); if (switchHostname.isPresent()) throw new IllegalArgumentException("A child node cannot have switch hostname set"); } - if (type.isHost() && state == State.ready) { - requireNonEmpty(ipConfig.primary(), "A " + type + " must have at least one primary IP address in state " + state); - if (type == NodeType.host) requireNonEmpty(ipConfig.pool().asSet(), "A " + type + " must have a non-empty IP address pool in state " + state); - } - if (type != NodeType.host && reservedTo.isPresent()) throw new IllegalArgumentException("Only tenant hosts can be reserved to a tenant"); diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java index 6beeb2f3578..305f1b5952e 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java @@ -452,7 +452,7 @@ public class DynamicProvisioningMaintainerTest { dynamicProvisioningTester.hostProvisioner.overrideHostFlavor("default"); // Initial config server hosts are provisioned manually - List<Node> provisionedHosts = tester.makeReadyNodes(3, "default", hostType).stream() + List<Node> provisionedHosts = tester.makeReadyNodes(3, "default", hostType, 1).stream() .sorted(Comparator.comparing(Node::hostname)) .collect(Collectors.toList()); tester.prepareAndActivateInfraApplication(hostApp, hostType); diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailTester.java index 9801233f396..27f5b45173b 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailTester.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailTester.java @@ -251,9 +251,12 @@ public class NodeFailTester { private List<Node> createReadyNodes(int count, int startIndex, Optional<String> parentHostname, Flavor flavor, NodeType nodeType) { List<Node> nodes = new ArrayList<>(count); + int lastOctetOfPoolAddress = 0; for (int i = startIndex; i < startIndex + count; i++) { String hostname = "host" + i; - IP.Config ipConfig = new IP.Config(nodeRepository.nameResolver().resolveAll(hostname), Set.of()); + Set<String> ipPool = nodeType.isHost() ? Set.of("127.0." + i + "." + (++lastOctetOfPoolAddress)) : Set.of(); + IP.Config ipConfig = new IP.Config(nodeRepository.nameResolver().resolveAll(hostname), + ipPool); Node.Builder builder = Node.create("node" + i, ipConfig, hostname, flavor, nodeType); parentHostname.ifPresent(builder::parentHostname); nodes.add(builder.build()); diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/OsUpgradeActivatorTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/OsUpgradeActivatorTest.java index 3f0b94170f6..5e8ce1ed328 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/OsUpgradeActivatorTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/OsUpgradeActivatorTest.java @@ -39,11 +39,11 @@ public class OsUpgradeActivatorTest { // Create infrastructure nodes var configHostApplication = ApplicationId.from("hosted-vespa", "configserver-host", "default"); - var configHostNodes = tester.makeReadyNodes(3, "default", NodeType.confighost); + var configHostNodes = tester.makeReadyNodes(3, "default", NodeType.confighost, 1); tester.prepareAndActivateInfraApplication(configHostApplication, NodeType.confighost, version0); var tenantHostApplication = ApplicationId.from("hosted-vespa", "tenant-host", "default"); - var tenantHostNodes = tester.makeReadyNodes(3, "default", NodeType.host); + var tenantHostNodes = tester.makeReadyNodes(3, "default", NodeType.host, 1); tester.prepareAndActivateInfraApplication(tenantHostApplication, NodeType.host, version0); var allNodes = new ArrayList<>(configHostNodes); diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/os/OsVersionsTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/os/OsVersionsTest.java index 8dbfbf44604..26c6f742052 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/os/OsVersionsTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/os/OsVersionsTest.java @@ -255,7 +255,7 @@ public class OsVersionsTest { } private List<Node> provisionInfraApplication(int nodeCount, NodeType nodeType) { - var nodes = tester.makeReadyNodes(nodeCount, "default", nodeType); + var nodes = tester.makeReadyNodes(nodeCount, "default", nodeType, 1); tester.prepareAndActivateInfraApplication(infraApplication, nodeType); return nodes.stream() .map(Node::hostname) diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ContainerImagesTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ContainerImagesTest.java index d8df7721717..7b84b7a31f3 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ContainerImagesTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ContainerImagesTest.java @@ -42,7 +42,7 @@ public class ContainerImagesTest { } // Proxy host uses image used by child nodes (proxy nodes), which is overridden in this case (for preload purposes) - var proxyHosts = tester.makeReadyNodes(2, "default", NodeType.proxyhost); + var proxyHosts = tester.makeReadyNodes(2, "default", NodeType.proxyhost, 1); for (var host : proxyHosts) { assertEquals(proxyImage, tester.nodeRepository().containerImages().imageFor(host.type())); } |