diff options
author | Andreas Eriksen <andreer@yahooinc.com> | 2024-01-06 09:01:48 +0100 |
---|---|---|
committer | Andreas Eriksen <andreer@yahooinc.com> | 2024-01-11 15:29:36 +0100 |
commit | 649a5ba83bf0ab9f05674e12eca2da51da473847 (patch) | |
tree | 126af9889a547522caef64ae99083bf788f63eb6 | |
parent | 1cd0dd73f86ef05bf3ea5bcead430b6a9e112df9 (diff) |
cloud deployment variant
12 files changed, 88 insertions, 30 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> diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java index 5c049c61c1a..bd22936b8d1 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java @@ -321,6 +321,7 @@ public class SessionPreparer { instance, zone.environment(), zone.region(), + zone.cloud().name(), tags) .run(); } catch (ParserConfigurationException | IOException | SAXException | TransformerException e) { diff --git a/vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/EffectiveServicesMojo.java b/vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/EffectiveServicesMojo.java index a09af2e5654..f3c7a23d8bc 100644 --- a/vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/EffectiveServicesMojo.java +++ b/vespa-maven-plugin/src/main/java/ai/vespa/hosted/plugin/EffectiveServicesMojo.java @@ -59,7 +59,7 @@ public class EffectiveServicesMojo extends AbstractVespaDeploymentMojo { instance, zone.environment(), zone.region(), - tags) + zone.cloud(), tags) .run(); Transformer transformer = TransformerFactory.newInstance().newTransformer(); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); |