summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2021-02-16 11:53:26 +0100
committerJon Bratseth <bratseth@gmail.com>2021-02-16 11:53:26 +0100
commit8125df94dc66bf3765fc6335c6dc65c4a0e3a6d5 (patch)
treef987057ee1078092b119c7880dc18d6dac2b96dd
parent4a62c2efe7ab3856e400ed512169cf2c2a78110b (diff)
Generalize error message and make tests more realistic
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java1
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTester.java37
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java1
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/provision/ProvisionerAdapter.java5
4 files changed, 38 insertions, 6 deletions
diff --git a/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java b/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java
index 5a71f83e468..5ffdcaa8bc0 100644
--- a/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java
+++ b/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java
@@ -1403,6 +1403,7 @@ public class ModelProvisioningTest {
"</container>" +
"</services>";
VespaModelTester tester = new VespaModelTester();
+ tester.setHosted(false);
tester.addHosts(1);
VespaModel model = tester.createModel(services, true);
assertEquals(1, model.getRoot().hostSystem().getHosts().size());
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTester.java b/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTester.java
index ce8d2c193b9..90ad240ff73 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTester.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTester.java
@@ -15,8 +15,13 @@ import com.yahoo.config.model.provision.InMemoryProvisioner;
import com.yahoo.config.model.provision.SingleNodeProvisioner;
import com.yahoo.config.provision.AllocatedHosts;
import com.yahoo.config.provision.ApplicationId;
+import com.yahoo.config.provision.Capacity;
+import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.Flavor;
+import com.yahoo.config.provision.HostSpec;
import com.yahoo.config.provision.NodeResources;
+import com.yahoo.config.provision.ProvisionLogger;
+import com.yahoo.config.provision.Provisioner;
import com.yahoo.config.provision.Zone;
import com.yahoo.vespa.model.VespaModel;
import com.yahoo.vespa.model.test.utils.ApplicationPackageUtils;
@@ -47,7 +52,7 @@ public class VespaModelTester {
private final ConfigModelRegistry configModelRegistry;
private boolean hosted = true;
- private Map<NodeResources, Collection<Host>> hostsByResources = new HashMap<>();
+ private final Map<NodeResources, Collection<Host>> hostsByResources = new HashMap<>();
private ApplicationId applicationId = ApplicationId.defaultId();
private boolean useDedicatedNodeForLogserver = false;
@@ -139,9 +144,12 @@ public class VespaModelTester {
ApplicationPackage appPkg = modelCreatorWithMockPkg.appPkg;
HostProvisioner provisioner = hosted ?
- new InMemoryProvisioner(hostsByResources, failOnOutOfCapacity, useMaxResources,
- false,
- startIndexForClusters, retiredHostNames) :
+ new ProvisionerAdapter(new InMemoryProvisioner(hostsByResources,
+ failOnOutOfCapacity,
+ useMaxResources,
+ false,
+ startIndexForClusters,
+ retiredHostNames)) :
new SingleNodeProvisioner();
TestProperties properties = new TestProperties()
@@ -159,4 +167,25 @@ public class VespaModelTester {
return modelCreatorWithMockPkg.create(false, deployState.build(), configModelRegistry);
}
+ /** To verify that we don't call allocateHost(alias) in hosted environments */
+ private static class ProvisionerAdapter implements HostProvisioner {
+
+ private final HostProvisioner provisioner;
+
+ public ProvisionerAdapter(HostProvisioner provisioner) {
+ this.provisioner = provisioner;
+ }
+
+ @Override
+ public HostSpec allocateHost(String alias) {
+ throw new UnsupportedOperationException("Allocating hosts using <node> tags is not supported in hosted environments, " +
+ "use <nodes count='N'> instead, see https://cloud.vespa.ai/en/reference/services");
+ }
+
+ @Override
+ public List<HostSpec> prepare(ClusterSpec cluster, Capacity capacity, ProvisionLogger logger) {
+ return provisioner.prepare(cluster, capacity, logger);
+ }
+
+ }
}
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java b/config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java
index 21c6cc8e795..12010042c79 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java
@@ -218,6 +218,7 @@ public class NodeResources {
sb.append(x10/10).append('.').append(x10%10);
return sb;
}
+
@Override
public String toString() {
if (isUnspecified())
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/provision/ProvisionerAdapter.java b/configserver/src/main/java/com/yahoo/vespa/config/server/provision/ProvisionerAdapter.java
index 9e232a6533f..d0c08d2747d 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/provision/ProvisionerAdapter.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/provision/ProvisionerAdapter.java
@@ -34,8 +34,9 @@ public class ProvisionerAdapter implements HostProvisioner {
@Override
public HostSpec allocateHost(String alias) {
// TODO: Remove this method since hosted/non-hosted needs different interfaces. See also ModelContextImpl.getHostProvisioner
- throw new UnsupportedOperationException("Allocating hosts using <node> tags is not supported in hosted environments, " +
- "use <nodes count='N'> instead, see https://cloud.vespa.ai/en/reference/services");
+ throw new UnsupportedOperationException("Clusters in hosted environments must have a <nodes count='N'> tag " +
+ "matching all zones, and having no <node> subtags, " +
+ "see https://cloud.vespa.ai/en/reference/services");
}
@Override