summaryrefslogtreecommitdiffstats
path: root/config-application-package
diff options
context:
space:
mode:
authorAndreas Eriksen <andreer@yahooinc.com>2024-01-06 09:01:48 +0100
committerAndreas Eriksen <andreer@yahooinc.com>2024-01-11 15:29:36 +0100
commit649a5ba83bf0ab9f05674e12eca2da51da473847 (patch)
tree126af9889a547522caef64ae99083bf788f63eb6 /config-application-package
parent1cd0dd73f86ef05bf3ea5bcead430b6a9e112df9 (diff)
cloud deployment variant
Diffstat (limited to 'config-application-package')
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/application/OverrideProcessor.java50
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/application/XmlPreProcessor.java12
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java1
-rw-r--r--config-application-package/src/test/java/com/yahoo/config/application/HostedOverrideProcessorComplexTest.java15
-rw-r--r--config-application-package/src/test/java/com/yahoo/config/application/HostedOverrideProcessorTagsTest.java3
-rw-r--r--config-application-package/src/test/java/com/yahoo/config/application/HostedOverrideProcessorTest.java3
-rw-r--r--config-application-package/src/test/java/com/yahoo/config/application/MultiOverrideProcessorTest.java5
-rw-r--r--config-application-package/src/test/java/com/yahoo/config/application/OverrideProcessorTest.java5
-rw-r--r--config-application-package/src/test/java/com/yahoo/config/application/XmlPreprocessorTest.java16
-rw-r--r--config-application-package/src/test/resources/complex-app/services.xml5
10 files changed, 86 insertions, 29 deletions
diff --git a/config-application-package/src/main/java/com/yahoo/config/application/OverrideProcessor.java b/config-application-package/src/main/java/com/yahoo/config/application/OverrideProcessor.java
index 6f76343d6ed..bb456d95326 100644
--- a/config-application-package/src/main/java/com/yahoo/config/application/OverrideProcessor.java
+++ b/config-application-package/src/main/java/com/yahoo/config/application/OverrideProcessor.java
@@ -1,6 +1,7 @@
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application;
+import com.yahoo.config.provision.CloudName;
import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.InstanceName;
import com.yahoo.config.provision.RegionName;
@@ -41,18 +42,21 @@ class OverrideProcessor implements PreProcessor {
private final InstanceName instance;
private final Environment environment;
private final RegionName region;
+ private final CloudName cloud;
private final Tags tags;
private static final String ID_ATTRIBUTE = "id";
private static final String INSTANCE_ATTRIBUTE = "instance";
private static final String ENVIRONMENT_ATTRIBUTE = "environment";
private static final String REGION_ATTRIBUTE = "region";
+ private static final String CLOUD_ATTRIBUTE = "cloud";
private static final String TAGS_ATTRIBUTE = "tags";
- public OverrideProcessor(InstanceName instance, Environment environment, RegionName region, Tags tags) {
+ public OverrideProcessor(InstanceName instance, Environment environment, RegionName region, CloudName cloud, Tags tags) {
this.instance = instance;
this.environment = environment;
this.region = region;
+ this.cloud = cloud;
this.tags = tags;
}
@@ -83,6 +87,7 @@ class OverrideProcessor implements PreProcessor {
child.removeAttributeNS(XmlPreProcessor.deployNamespaceUri, INSTANCE_ATTRIBUTE);
child.removeAttributeNS(XmlPreProcessor.deployNamespaceUri, ENVIRONMENT_ATTRIBUTE);
child.removeAttributeNS(XmlPreProcessor.deployNamespaceUri, REGION_ATTRIBUTE);
+ child.removeAttributeNS(XmlPreProcessor.deployNamespaceUri, CLOUD_ATTRIBUTE);
child.removeAttributeNS(XmlPreProcessor.deployNamespaceUri, TAGS_ATTRIBUTE);
}
}
@@ -91,6 +96,7 @@ class OverrideProcessor implements PreProcessor {
Set<InstanceName> instances = context.instances;
Set<Environment> environments = context.environments;
Set<RegionName> regions = context.regions;
+ Set<CloudName> clouds = context.clouds;
Tags tags = context.tags;
if (instances.isEmpty())
instances = getInstances(parent);
@@ -98,9 +104,11 @@ class OverrideProcessor implements PreProcessor {
environments = getEnvironments(parent);
if (regions.isEmpty())
regions = getRegions(parent);
+ if(clouds.isEmpty())
+ clouds = getClouds(parent);
if (tags.isEmpty())
tags = getTags(parent);
- return Context.create(instances, environments, regions, tags);
+ return Context.create(instances, environments, regions, clouds, tags);
}
/**
@@ -108,7 +116,7 @@ class OverrideProcessor implements PreProcessor {
*
* @param parent parent {@link Element} above children.
* @param children children where one {@link Element} will remain as the overriding element
- * @param context current context with instance, environment and region.
+ * @param context current context with instance, environment, region and cloud
*/
private void pruneOverrides(Element parent, List<Element> children, Context context) {
checkConsistentInheritance(children, context);
@@ -136,6 +144,12 @@ class OverrideProcessor implements PreProcessor {
") are not a subset of those of the parent (" + context.regions + ") at " + child);
}
+ Set<CloudName> clouds = getClouds(child);
+ if ( ! clouds.isEmpty() && ! context.clouds.isEmpty() && ! context.clouds.containsAll(clouds)) {
+ throw new IllegalArgumentException("Clouds in child (" + regions +
+ ") are not a subset of those of the parent (" + context.clouds + ") at " + child);
+ }
+
Tags tags = getTags(child);
if ( ! tags.isEmpty() && ! context.tags.isEmpty() && ! context.tags.containsAll(tags)) {
throw new IllegalArgumentException("Tags in child (" + environments +
@@ -149,7 +163,7 @@ class OverrideProcessor implements PreProcessor {
Iterator<Element> elemIt = children.iterator();
while (elemIt.hasNext()) {
Element child = elemIt.next();
- if ( ! matches(getInstances(child), getEnvironments(child), getRegions(child), getTags(child))) {
+ if ( ! matches(getInstances(child), getEnvironments(child), getRegions(child), getClouds(child), getTags(child))) {
parent.removeChild(child);
elemIt.remove();
}
@@ -159,6 +173,7 @@ class OverrideProcessor implements PreProcessor {
private boolean matches(Set<InstanceName> elementInstances,
Set<Environment> elementEnvironments,
Set<RegionName> elementRegions,
+ Set<CloudName> elementClouds,
Tags elementTags) {
if ( ! elementInstances.isEmpty()) { // match instance
if ( ! elementInstances.contains(instance)) return false;
@@ -172,6 +187,10 @@ class OverrideProcessor implements PreProcessor {
if ( ! elementRegions.contains(region)) return false;
}
+ if ( ! elementClouds.isEmpty()) { // match cloud
+ if ( ! elementClouds.contains(cloud)) return false;
+ }
+
if ( ! elementTags.isEmpty()) { // match tags
if ( ! elementTags.intersects(tags)) return false;
}
@@ -215,6 +234,7 @@ class OverrideProcessor implements PreProcessor {
Set<InstanceName> elementInstances = hasInstance(child) ? getInstances(child) : context.instances;
Set<Environment> elementEnvironments = hasEnvironment(child) ? getEnvironments(child) : context.environments;
Set<RegionName> elementRegions = hasRegion(child) ? getRegions(child) : context.regions;
+ Set<CloudName> elementClouds = hasCloud(child) ? getClouds(child) : context.clouds;
Tags elementTags = hasTag(child) ? getTags(child) : context.tags;
if ( ! elementInstances.isEmpty() && elementInstances.contains(instance))
currentMatch++;
@@ -222,6 +242,8 @@ class OverrideProcessor implements PreProcessor {
currentMatch++;
if ( ! elementRegions.isEmpty() && elementRegions.contains(region))
currentMatch++;
+ if ( ! elementClouds.isEmpty() && elementClouds.contains(cloud))
+ currentMatch++;
if ( elementTags.intersects(tags))
currentMatch++;
return currentMatch;
@@ -253,7 +275,7 @@ class OverrideProcessor implements PreProcessor {
List<Element> elements = it.next().getValue();
boolean hasOverrides = false;
for (Element element : elements) {
- if (hasInstance(element) || hasEnvironment(element) || hasRegion(element) || hasTag(element)) {
+ if (hasInstance(element) || hasEnvironment(element) || hasRegion(element) || hasCloud(element) || hasTag(element)) {
hasOverrides = true;
}
}
@@ -271,6 +293,10 @@ class OverrideProcessor implements PreProcessor {
return element.hasAttributeNS(XmlPreProcessor.deployNamespaceUri, REGION_ATTRIBUTE);
}
+ private boolean hasCloud(Element element) {
+ return element.hasAttributeNS(XmlPreProcessor.deployNamespaceUri, CLOUD_ATTRIBUTE);
+ }
+
private boolean hasEnvironment(Element element) {
return element.hasAttributeNS(XmlPreProcessor.deployNamespaceUri, ENVIRONMENT_ATTRIBUTE);
}
@@ -297,6 +323,12 @@ class OverrideProcessor implements PreProcessor {
return Arrays.stream(reg.split(" ")).map(RegionName::from).collect(Collectors.toSet());
}
+ private Set<CloudName> getClouds(Element element) {
+ String reg = element.getAttributeNS(XmlPreProcessor.deployNamespaceUri, CLOUD_ATTRIBUTE);
+ if (reg == null || reg.isEmpty()) return Set.of();
+ return Arrays.stream(reg.split(" ")).map(CloudName::from).collect(Collectors.toSet());
+ }
+
private Tags getTags(Element element) {
String env = element.getAttributeNS(XmlPreProcessor.deployNamespaceUri, TAGS_ATTRIBUTE);
if (env == null || env.isEmpty()) return Tags.empty();
@@ -357,27 +389,31 @@ class OverrideProcessor implements PreProcessor {
final Set<InstanceName> instances;
final Set<Environment> environments;
final Set<RegionName> regions;
+ final Set<CloudName> clouds;
final Tags tags;
private Context(Set<InstanceName> instances,
Set<Environment> environments,
Set<RegionName> regions,
+ Set<CloudName> clouds,
Tags tags) {
this.instances = Set.copyOf(instances);
this.environments = Set.copyOf(environments);
this.regions = Set.copyOf(regions);
+ this.clouds = Set.copyOf(clouds);
this.tags = tags;
}
static Context empty() {
- return new Context(Set.of(), Set.of(), Set.of(), Tags.empty());
+ return new Context(Set.of(), Set.of(), Set.of(), Set.of(), Tags.empty());
}
public static Context create(Set<InstanceName> instances,
Set<Environment> environments,
Set<RegionName> regions,
+ Set<CloudName> clouds,
Tags tags) {
- return new Context(instances, environments, regions, tags);
+ return new Context(instances, environments, regions, clouds, tags);
}
}
diff --git a/config-application-package/src/main/java/com/yahoo/config/application/XmlPreProcessor.java b/config-application-package/src/main/java/com/yahoo/config/application/XmlPreProcessor.java
index b07ea0a7ee1..3b5f9c14b69 100644
--- a/config-application-package/src/main/java/com/yahoo/config/application/XmlPreProcessor.java
+++ b/config-application-package/src/main/java/com/yahoo/config/application/XmlPreProcessor.java
@@ -2,6 +2,7 @@
package com.yahoo.config.application;
import com.yahoo.config.application.FileSystemWrapper.FileWrapper;
+import com.yahoo.config.provision.CloudName;
import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.InstanceName;
import com.yahoo.config.provision.RegionName;
@@ -20,7 +21,6 @@ import java.io.IOException;
import java.io.Reader;
import java.util.ArrayList;
import java.util.List;
-import java.util.Set;
/**
* A preprocessor for services.xml files that handles deploy:environment, deploy:region, preprocess:properties, preprocess:include
@@ -40,6 +40,7 @@ public class XmlPreProcessor {
private final InstanceName instance;
private final Environment environment;
private final RegionName region;
+ private final CloudName cloud;
private final Tags tags;
private final List<PreProcessor> chain;
@@ -48,8 +49,9 @@ public class XmlPreProcessor {
InstanceName instance,
Environment environment,
RegionName region,
+ CloudName cloud,
Tags tags) throws IOException {
- this(applicationDir, new FileReader(xmlInput), instance, environment, region, tags);
+ this(applicationDir, new FileReader(xmlInput), instance, environment, region, cloud, tags);
}
public XmlPreProcessor(File applicationDir,
@@ -57,12 +59,14 @@ public class XmlPreProcessor {
InstanceName instance,
Environment environment,
RegionName region,
+ CloudName cloud,
Tags tags) {
this(FileSystemWrapper.getDefault(applicationDir.toPath()).wrap(applicationDir.toPath()),
xmlInput,
instance,
environment,
region,
+ cloud,
tags);
}
@@ -71,12 +75,14 @@ public class XmlPreProcessor {
InstanceName instance,
Environment environment,
RegionName region,
+ CloudName cloud,
Tags tags) {
this.applicationDir = applicationDir;
this.xmlInput = xmlInput;
this.instance = instance;
this.environment = environment;
this.region = region;
+ this.cloud = cloud;
this.tags = tags;
this.chain = setupChain();
}
@@ -97,7 +103,7 @@ public class XmlPreProcessor {
private List<PreProcessor> setupChain() {
List<PreProcessor> chain = new ArrayList<>();
chain.add(new IncludeProcessor(applicationDir));
- chain.add(new OverrideProcessor(instance, environment, region, tags));
+ chain.add(new OverrideProcessor(instance, environment, region, cloud, tags));
chain.add(new PropertiesProcessor());
chain.add(new ValidationProcessor()); // must be last in chain
return chain;
diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java
index ab5645eb50d..7d8f827bf31 100644
--- a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java
+++ b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java
@@ -598,6 +598,7 @@ public class FilesApplicationPackage extends AbstractApplicationPackage {
instance,
zone.environment(),
zone.region(),
+ zone.cloud().name(),
getDeploymentSpec().instance(instance)
.map(DeploymentInstanceSpec::tags)
.orElse(Tags.empty()))
diff --git a/config-application-package/src/test/java/com/yahoo/config/application/HostedOverrideProcessorComplexTest.java b/config-application-package/src/test/java/com/yahoo/config/application/HostedOverrideProcessorComplexTest.java
index 5687084713c..9fac08c29d9 100644
--- a/config-application-package/src/test/java/com/yahoo/config/application/HostedOverrideProcessorComplexTest.java
+++ b/config-application-package/src/test/java/com/yahoo/config/application/HostedOverrideProcessorComplexTest.java
@@ -3,8 +3,8 @@ package com.yahoo.config.application;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.application.api.DeploymentInstanceSpec;
-import com.yahoo.config.application.api.xml.DeploymentSpecXmlReader;
import com.yahoo.config.model.application.provider.FilesApplicationPackage;
+import com.yahoo.config.provision.CloudName;
import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.InstanceName;
import com.yahoo.config.provision.RegionName;
@@ -14,7 +14,6 @@ import org.w3c.dom.Document;
import javax.xml.transform.TransformerException;
import java.io.File;
-import java.io.IOException;
import static org.junit.Assert.assertEquals;
@@ -52,8 +51,8 @@ public class HostedOverrideProcessorComplexTest {
<redundancy>1</redundancy>
</content>
<content id="filedocument" version="1.0">
- <nodes count="2" groups="2">
- <resources disk="32Gb" memory="8Gb" vcpu="4"/>
+ <nodes count="2" groups="2" required="true">
+ <resources disk="37Gb" memory="9Gb" vcpu="3"/>
</nodes>
<redundancy>1</redundancy>
</content>
@@ -62,6 +61,7 @@ public class HostedOverrideProcessorComplexTest {
assertOverride(InstanceName.from("beta1"),
Environment.prod,
RegionName.from("aws-us-west-2a"),
+ CloudName.GCP,
expected);
}
@@ -95,7 +95,7 @@ public class HostedOverrideProcessorComplexTest {
<redundancy>1</redundancy>
</content>
<content id="filedocument" version="1.0">
- <nodes count="2" groups="2">
+ <nodes count="2" groups="2" required="true">
<resources disk="32Gb" memory="8Gb" vcpu="4"/>
</nodes>
<redundancy>1</redundancy>
@@ -105,14 +105,15 @@ public class HostedOverrideProcessorComplexTest {
assertOverride(InstanceName.from("beta1"),
Environment.prod,
RegionName.from("aws-us-east-1b"),
+ CloudName.AWS,
expected);
}
- private void assertOverride(InstanceName instance, Environment environment, RegionName region, String expected) throws TransformerException {
+ private void assertOverride(InstanceName instance, Environment environment, RegionName region, CloudName cloud, String expected) throws TransformerException {
ApplicationPackage app = FilesApplicationPackage.fromFile(new File(servicesFile).getParentFile());
Document inputDoc = Xml.getDocument(app.getServices());
Tags tags = app.getDeploymentSpec().instance(instance).map(DeploymentInstanceSpec::tags).orElse(Tags.empty());
- Document newDoc = new OverrideProcessor(instance, environment, region, tags).process(inputDoc);
+ Document newDoc = new OverrideProcessor(instance, environment, region, cloud, tags).process(inputDoc);
assertEquals(expected, Xml.documentAsString(newDoc, true));
}
diff --git a/config-application-package/src/test/java/com/yahoo/config/application/HostedOverrideProcessorTagsTest.java b/config-application-package/src/test/java/com/yahoo/config/application/HostedOverrideProcessorTagsTest.java
index 88e207c662d..0cdbed3999c 100644
--- a/config-application-package/src/test/java/com/yahoo/config/application/HostedOverrideProcessorTagsTest.java
+++ b/config-application-package/src/test/java/com/yahoo/config/application/HostedOverrideProcessorTagsTest.java
@@ -1,6 +1,7 @@
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application;
+import com.yahoo.config.provision.Cloud;
import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.InstanceName;
import com.yahoo.config.provision.RegionName;
@@ -112,7 +113,7 @@ public class HostedOverrideProcessorTagsTest {
private void assertOverride(InstanceName instance, Environment environment, RegionName region, Tags tags, String expected) throws TransformerException {
Document inputDoc = Xml.getDocument(new StringReader(input));
- Document newDoc = new OverrideProcessor(instance, environment, region, tags).process(inputDoc);
+ Document newDoc = new OverrideProcessor(instance, environment, region, Cloud.defaultCloud().name(), tags).process(inputDoc);
TestBase.assertDocument(expected, newDoc);
}
diff --git a/config-application-package/src/test/java/com/yahoo/config/application/HostedOverrideProcessorTest.java b/config-application-package/src/test/java/com/yahoo/config/application/HostedOverrideProcessorTest.java
index 262c315923d..66aec3a333e 100644
--- a/config-application-package/src/test/java/com/yahoo/config/application/HostedOverrideProcessorTest.java
+++ b/config-application-package/src/test/java/com/yahoo/config/application/HostedOverrideProcessorTest.java
@@ -1,6 +1,7 @@
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application;
+import com.yahoo.config.provision.Cloud;
import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.InstanceName;
import com.yahoo.config.provision.RegionName;
@@ -211,7 +212,7 @@ public class HostedOverrideProcessorTest {
private void assertOverride(InstanceName instance, Environment environment, RegionName region, Tags tags, String expected) throws TransformerException {
Document inputDoc = Xml.getDocument(new StringReader(input));
- Document newDoc = new OverrideProcessor(instance, environment, region, tags).process(inputDoc);
+ Document newDoc = new OverrideProcessor(instance, environment, region, Cloud.defaultCloud().name(), tags).process(inputDoc);
TestBase.assertDocument(expected, newDoc);
}
diff --git a/config-application-package/src/test/java/com/yahoo/config/application/MultiOverrideProcessorTest.java b/config-application-package/src/test/java/com/yahoo/config/application/MultiOverrideProcessorTest.java
index a2ba99fb21a..5382576edc1 100644
--- a/config-application-package/src/test/java/com/yahoo/config/application/MultiOverrideProcessorTest.java
+++ b/config-application-package/src/test/java/com/yahoo/config/application/MultiOverrideProcessorTest.java
@@ -1,6 +1,7 @@
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application;
+import com.yahoo.config.provision.Cloud;
import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.InstanceName;
import com.yahoo.config.provision.RegionName;
@@ -126,13 +127,13 @@ public class MultiOverrideProcessorTest {
private void assertOverride(Environment environment, RegionName region, String expected) throws TransformerException {
Document inputDoc = Xml.getDocument(new StringReader(input));
- Document newDoc = new OverrideProcessor(InstanceName.from("default"), environment, region, Tags.empty()).process(inputDoc);
+ Document newDoc = new OverrideProcessor(InstanceName.from("default"), environment, region, Cloud.defaultCloud().name(), Tags.empty()).process(inputDoc);
TestBase.assertDocument(expected, newDoc);
}
private void assertOverrideWithIds(Environment environment, RegionName region, String expected) throws TransformerException {
Document inputDoc = Xml.getDocument(new StringReader(inputWithIds));
- Document newDoc = new OverrideProcessor(InstanceName.from("default"), environment, region, Tags.empty()).process(inputDoc);
+ Document newDoc = new OverrideProcessor(InstanceName.from("default"), environment, region, Cloud.defaultCloud().name(), Tags.empty()).process(inputDoc);
TestBase.assertDocument(expected, newDoc);
}
diff --git a/config-application-package/src/test/java/com/yahoo/config/application/OverrideProcessorTest.java b/config-application-package/src/test/java/com/yahoo/config/application/OverrideProcessorTest.java
index 034d494d96e..e5e36615b09 100644
--- a/config-application-package/src/test/java/com/yahoo/config/application/OverrideProcessorTest.java
+++ b/config-application-package/src/test/java/com/yahoo/config/application/OverrideProcessorTest.java
@@ -1,6 +1,7 @@
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application;
+import com.yahoo.config.provision.Cloud;
import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.InstanceName;
import com.yahoo.config.provision.RegionName;
@@ -299,6 +300,7 @@ public class OverrideProcessorTest {
new OverrideProcessor(InstanceName.from("default"),
Environment.from("prod"),
RegionName.from("us-west"),
+ Cloud.defaultCloud().name(),
Tags.empty()).process(inputDoc);
}
@@ -314,6 +316,7 @@ public class OverrideProcessorTest {
new OverrideProcessor(InstanceName.from("default"),
Environment.defaultEnvironment(),
RegionName.from("us-west"),
+ Cloud.defaultCloud().name(),
Tags.empty()).process(inputDoc);
}
@@ -369,7 +372,7 @@ public class OverrideProcessorTest {
private void assertOverride(String input, Environment environment, RegionName region, String expected) throws TransformerException {
Document inputDoc = Xml.getDocument(new StringReader(input));
- Document newDoc = new OverrideProcessor(InstanceName.from("default"), environment, region, Tags.empty()).process(inputDoc);
+ Document newDoc = new OverrideProcessor(InstanceName.from("default"), environment, region, Cloud.defaultCloud().name(), Tags.empty()).process(inputDoc);
TestBase.assertDocument(expected, newDoc);
}
diff --git a/config-application-package/src/test/java/com/yahoo/config/application/XmlPreprocessorTest.java b/config-application-package/src/test/java/com/yahoo/config/application/XmlPreprocessorTest.java
index b187c4c8837..247c81a24ad 100644
--- a/config-application-package/src/test/java/com/yahoo/config/application/XmlPreprocessorTest.java
+++ b/config-application-package/src/test/java/com/yahoo/config/application/XmlPreprocessorTest.java
@@ -1,6 +1,7 @@
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.application;
+import com.yahoo.config.provision.Cloud;
import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.InstanceName;
import com.yahoo.config.provision.RegionName;
@@ -53,6 +54,7 @@ public class XmlPreprocessorTest {
InstanceName.defaultName(),
Environment.dev,
RegionName.defaultName(),
+ Cloud.defaultCloud().name(),
Tags.empty()).run());
// Difference from dev: node1
@@ -88,6 +90,7 @@ public class XmlPreprocessorTest {
InstanceName.defaultName(),
Environment.staging,
RegionName.defaultName(),
+ Cloud.defaultCloud().name(),
Tags.empty()).run());
String expectedPerfUsWest =
@@ -121,7 +124,7 @@ public class XmlPreprocessorTest {
InstanceName.defaultName(),
Environment.perf,
RegionName.from("us-west"),
- Tags.empty()).run());
+ Cloud.defaultCloud().name(), Tags.empty()).run());
String expectedPerfUsEastAndCentral =
"""
@@ -155,14 +158,14 @@ public class XmlPreprocessorTest {
InstanceName.defaultName(),
Environment.perf,
RegionName.from("us-east"),
- Tags.empty()).run());
+ Cloud.defaultCloud().name(), Tags.empty()).run());
TestBase.assertDocument(expectedPerfUsEastAndCentral,
new XmlPreProcessor(appDir,
services,
InstanceName.defaultName(),
Environment.perf,
RegionName.from("us-central"),
- Tags.empty()).run());
+ Cloud.defaultCloud().name(), Tags.empty()).run());
String expectedProdUsWest =
"""
@@ -204,7 +207,7 @@ public class XmlPreprocessorTest {
InstanceName.defaultName(),
Environment.prod,
RegionName.from("us-west"),
- Tags.empty()).run());
+ Cloud.defaultCloud().name(), Tags.empty()).run());
String expectedProdUsEastAndCentral =
"""
@@ -246,14 +249,14 @@ public class XmlPreprocessorTest {
InstanceName.defaultName(),
Environment.prod,
RegionName.from("us-east"),
- Tags.empty()).run());
+ Cloud.defaultCloud().name(), Tags.empty()).run());
TestBase.assertDocument(expectedProdUsEastAndCentral,
new XmlPreProcessor(appDir,
services,
InstanceName.defaultName(),
Environment.prod,
RegionName.from("us-central"),
- Tags.empty()).run());
+ Cloud.defaultCloud().name(), Tags.empty()).run());
}
@Test
@@ -304,6 +307,7 @@ public class XmlPreprocessorTest {
InstanceName.defaultName(),
Environment.prod,
RegionName.defaultName(),
+ Cloud.defaultCloud().name(),
Tags.empty()).run());
TestBase.assertDocument(expectedProd, docDev);
}
diff --git a/config-application-package/src/test/resources/complex-app/services.xml b/config-application-package/src/test/resources/complex-app/services.xml
index f3ef31dd361..70cd48963c8 100644
--- a/config-application-package/src/test/resources/complex-app/services.xml
+++ b/config-application-package/src/test/resources/complex-app/services.xml
@@ -260,9 +260,12 @@
</content>
<content id="filedocument" version="1.0">
- <nodes count="2" groups="2">
+ <nodes count="2" groups="2" deploy:cloud="aws">
<resources vcpu="4" memory="8Gb" disk="32Gb" />
</nodes>
+ <nodes count="2" groups="2" deploy:cloud="gcp">
+ <resources vcpu="3" memory="9Gb" disk="37Gb" />
+ </nodes>
<redundancy>1</redundancy>
</content>