diff options
3 files changed, 32 insertions, 5 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java index 1aab98a115f..5a1103de9a3 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java @@ -744,9 +744,14 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { private List<ApplicationContainer> createNodes(ApplicationContainerCluster cluster, Element containerElement, Element nodesElement, ConfigModelContext context) { if (nodesElement.hasAttribute("type")) // internal use for hosted system infrastructure nodes return createNodesFromNodeType(cluster, nodesElement, context); - else if (nodesElement.hasAttribute("of")) // hosted node spec referencing a content cluster - return createNodesFromContentServiceReference(cluster, nodesElement, context); - else if (nodesElement.hasAttribute("count")) // regular, hosted node spec + else if (nodesElement.hasAttribute("of")) {// hosted node spec referencing a content cluster + // TODO: Remove support for combined clusters in Vespa 9 + List<ApplicationContainer> containers = createNodesFromContentServiceReference(cluster, nodesElement, context); + log.log(WARNING, "Declaring combined cluster with <nodes of=\"...\"> is deprecated without " + + "replacement, and the feature will be removed in Vespa 9. Use separate container and " + + "content clusters instead"); + return containers; + } else if (nodesElement.hasAttribute("count")) // regular, hosted node spec return createNodesFromNodeCount(cluster, containerElement, nodesElement, context); else if (cluster.isHostedVespa() && cluster.getZone().environment().isManuallyDeployed()) // default to 1 in manual zones return createNodesFromNodeCount(cluster, containerElement, nodesElement, context); 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 5e56efc4460..f5ff48c0c69 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 @@ -4,6 +4,7 @@ package com.yahoo.config.model.provision; import com.yahoo.cloud.config.ZookeeperServerConfig; import com.yahoo.cloud.config.log.LogdConfig; import com.yahoo.config.application.api.ApplicationPackage; +import com.yahoo.config.application.api.DeployLogger; import com.yahoo.config.model.api.container.ContainerServiceType; import com.yahoo.config.model.deploy.DeployState; import com.yahoo.config.model.deploy.TestProperties; @@ -40,11 +41,13 @@ import com.yahoo.yolean.Exceptions; import org.junit.Test; import java.io.StringReader; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Optional; import java.util.Set; import java.util.function.Function; +import java.util.logging.Level; import java.util.stream.Collectors; import static com.yahoo.config.model.test.TestUtil.joinLines; @@ -268,7 +271,8 @@ public class ModelProvisioningTest { "</services>"; VespaModelTester tester = new VespaModelTester(); tester.addHosts(5); - VespaModel model = tester.createModel(xmlWithNodes, true); + TestLogger logger = new TestLogger(); + VespaModel model = tester.createModel(xmlWithNodes, true, new DeployState.Builder().deployLogger(logger)); assertEquals("Nodes in content1", 2, model.getContentClusters().get("content1").getRootGroup().getNodes().size()); assertEquals("Nodes in container1", 2, model.getContainerClusters().get("container1").getContainers().size()); assertEquals("Heap size is lowered with combined clusters", @@ -278,6 +282,10 @@ public class ModelProvisioningTest { .get("content1"))); assertProvisioned(0, ClusterSpec.Id.from("container1"), ClusterSpec.Type.container, model); assertProvisioned(2, ClusterSpec.Id.from("content1"), ClusterSpec.Id.from("container1"), ClusterSpec.Type.combined, model); + assertEquals(1, logger.msgs().size()); + assertEquals("Declaring combined cluster with <nodes of=\"...\"> is deprecated without replacement, " + + "and the feature will be removed in Vespa 9. Use separate container and content clusters instead", + logger.msgs().get(0).message); } @Test @@ -2295,4 +2303,19 @@ public class ModelProvisioningTest { assertProvisioned(nodeCount, id, null, type, model); } + record TestLogger(List<LogMessage> msgs) implements DeployLogger { + + public TestLogger() { + this(new ArrayList<>()); + } + + @Override + public void log(Level level, String message) { + msgs.add(new LogMessage(level, message)); + } + + record LogMessage(Level level, String message) {} + + } + } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java index d91dba0572f..b65570d29cc 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java @@ -987,7 +987,6 @@ public class ContainerModelBuilderTest extends ContainerModelBuilderTestBase { createModel(root, deployState, null, DomBuilderTest.parse(containerService)); assertFalse(logger.msgs.isEmpty()); - System.out.println(logger.msgs); assertEquals(Level.WARNING, logger.msgs.get(0).getFirst()); assertEquals(Level.WARNING, logger.msgs.get(1).getFirst()); assertEquals("Element 'prod' contains attribute 'global-service-id' deprecated since major version 7. See https://cloud.vespa.ai/en/reference/routing#deprecated-syntax", |