summaryrefslogtreecommitdiffstats
path: root/config-application-package
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2023-01-10 16:10:44 +0100
committerJon Bratseth <bratseth@gmail.com>2023-01-10 16:10:44 +0100
commita2e23868e501b58d05bf6057e7ffe73266a354d1 (patch)
tree68117d9235501e1d4c99d095b34cb56c89f2e486 /config-application-package
parentf9e53171bbafa3c78abcde4a36d45dabec37ac2d (diff)
Add a test
Diffstat (limited to 'config-application-package')
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/application/OverrideProcessor.java1
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/application/Xml.java7
-rw-r--r--config-application-package/src/test/java/com/yahoo/config/application/HostedOverrideProcessorComplexTest.java119
-rw-r--r--config-application-package/src/test/resources/complex-app/deployment.xml140
-rw-r--r--config-application-package/src/test/resources/complex-app/services.xml268
5 files changed, 533 insertions, 2 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 21bb193ef93..169b1c8557b 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
@@ -13,7 +13,6 @@ import org.w3c.dom.NamedNodeMap;
import javax.xml.transform.TransformerException;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
diff --git a/config-application-package/src/main/java/com/yahoo/config/application/Xml.java b/config-application-package/src/main/java/com/yahoo/config/application/Xml.java
index 2cc5e1ac4e2..cf391f2dd0e 100644
--- a/config-application-package/src/main/java/com/yahoo/config/application/Xml.java
+++ b/config-application-package/src/main/java/com/yahoo/config/application/Xml.java
@@ -101,7 +101,12 @@ public class Xml {
}
StringWriter writer = new StringWriter();
transformer.transform(new DOMSource(document), new StreamResult(writer));
- return writer.toString();
+ String[] lines = writer.toString().split("\n");
+ var b = new StringBuilder();
+ for (String line : lines)
+ if ( ! line.isBlank())
+ b.append(line).append("\n");
+ return b.toString();
}
static String documentAsString(Document document) throws TransformerException {
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
new file mode 100644
index 00000000000..902b4126a29
--- /dev/null
+++ b/config-application-package/src/test/java/com/yahoo/config/application/HostedOverrideProcessorComplexTest.java
@@ -0,0 +1,119 @@
+package com.yahoo.config.application;
+
+import com.yahoo.config.provision.Environment;
+import com.yahoo.config.provision.InstanceName;
+import com.yahoo.config.provision.RegionName;
+import com.yahoo.config.provision.Tags;
+import com.yahoo.io.IOUtils;
+import org.custommonkey.xmlunit.XMLUnit;
+import org.junit.Test;
+import org.w3c.dom.Document;
+
+import javax.xml.transform.TransformerException;
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+
+public class HostedOverrideProcessorComplexTest {
+
+ private static final String servicesFile = "src/test/resources/complex-app/services.xml";
+
+ static {
+ XMLUnit.setIgnoreWhitespace(true);
+ }
+
+ @Test
+ public void testProdBetaUsWest2a() throws TransformerException, IOException {
+ String expected =
+ """
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
+ <services xmlns:deploy="vespa" xmlns:preprocess="properties" version="1.0">
+ <container id="docsgateway" version="1.0">
+ <nodes count="3">
+ <resources disk="1800Gb" disk-speed="fast" memory="96Gb" storage-type="local" vcpu="48"/>
+ </nodes>
+ </container>
+ <container id="qrs" version="1.0">
+ <nodes count="3" required="true">
+ <resources disk="64Gb" memory="32Gb" vcpu="16"/>
+ </nodes>
+ <search/>
+ </container>
+ <container id="visitor" version="1.0">
+ <nodes count="2">
+ <resources disk="32Gb" memory="16Gb" vcpu="8"/>
+ </nodes>
+ <search/>
+ </container>
+ <content id="all" version="1.0">
+ <nodes count="3" groups="3" required="true">
+ <resources disk="1800Gb" disk-speed="fast" memory="96Gb" storage-type="local" vcpu="48"/>
+ </nodes>
+ <redundancy>1</redundancy>
+ </content>
+ <content id="filedocument" version="1.0">
+ <nodes count="2" groups="2">
+ <resources disk="32Gb" memory="8Gb" vcpu="4"/>
+ </nodes>
+ <redundancy>1</redundancy>
+ </content>
+ </services>
+ """;
+ assertOverride(InstanceName.from("beta1"),
+ Environment.prod,
+ RegionName.from("aws-us-west-2a"),
+ Tags.fromString("beta beta-prod beta-prod-cd"),
+ expected);
+ }
+
+ @Test
+ public void testProdBetaUsEast1b() throws TransformerException, IOException {
+ String expected =
+ """
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
+ <services xmlns:deploy="vespa" xmlns:preprocess="properties" version="1.0">
+ <container id="docsgateway" version="1.0">
+ <nodes count="3">
+ <resources disk="1800Gb" disk-speed="fast" memory="96Gb" storage-type="local" vcpu="48"/>
+ </nodes>
+ </container>
+ <container id="qrs" version="1.0">
+ <nodes count="5" required="true">
+ <resources disk="64Gb" memory="32Gb" vcpu="16"/>
+ </nodes>
+ <search/>
+ </container>
+ <container id="visitor" version="1.0">
+ <nodes count="2">
+ <resources disk="32Gb" memory="16Gb" vcpu="8"/>
+ </nodes>
+ <search/>
+ </container>
+ <content id="all" version="1.0">
+ <nodes count="10" groups="10" required="true">
+ <resources disk="1800Gb" disk-speed="fast" memory="96Gb" storage-type="local" vcpu="48"/>
+ </nodes>
+ <redundancy>1</redundancy>
+ </content>
+ <content id="filedocument" version="1.0">
+ <nodes count="2" groups="2">
+ <resources disk="32Gb" memory="8Gb" vcpu="4"/>
+ </nodes>
+ <redundancy>1</redundancy>
+ </content>
+ </services>
+ """;
+ assertOverride(InstanceName.from("beta1"),
+ Environment.prod,
+ RegionName.from("aws-us-east-1b"),
+ Tags.fromString("beta beta-prod beta-prod-cd"),
+ expected);
+ }
+
+ private void assertOverride(InstanceName instance, Environment environment, RegionName region, Tags tags, String expected) throws TransformerException, IOException {
+ Document inputDoc = Xml.getDocument(IOUtils.createReader(servicesFile));
+ Document newDoc = new OverrideProcessor(instance, environment, region, tags).process(inputDoc);
+ assertEquals(expected, Xml.documentAsString(newDoc, true));
+ }
+
+}
diff --git a/config-application-package/src/test/resources/complex-app/deployment.xml b/config-application-package/src/test/resources/complex-app/deployment.xml
new file mode 100644
index 00000000000..1fa3a3a6f78
--- /dev/null
+++ b/config-application-package/src/test/resources/complex-app/deployment.xml
@@ -0,0 +1,140 @@
+<deployment version="1.0" major-version="8"
+ athenz-domain="gemini-native.aws-core-dev" athenz-service="csp"
+ cloud-account="337717828807">
+
+ <parallel>
+ <instance id="instance0" cloud-account="417744444827">
+ <test tester-flavor="d-8-16-10" />
+ <block-change version="true" revision="false" days="mon-fri,sun" hours="4-23" time-zone="UTC" />
+ </instance>
+
+ <instance id="instance1" cloud-account="417744444827">
+ <test tester-flavor="d-8-16-10" />
+ <block-change version="true" revision="false" days="mon-fri,sun" hours="4-23" time-zone="UTC" />
+ </instance>
+
+ <instance id="instance2" cloud-account="417744444827">
+ <test tester-flavor="d-8-16-10" />
+ <block-change version="true" revision="false" days="mon-fri,sun" hours="4-23" time-zone="UTC" />
+ </instance>
+
+ <instance id="instance3" cloud-account="417744444827">
+ <test tester-flavor="d-8-16-10" />
+ <block-change version="true" revision="false" days="mon-fri,sun" hours="4-23" time-zone="UTC" />
+ </instance>
+
+ <instance id="stress" cloud-account="417744444827">
+ <staging />
+ <block-change version="true" revision="false" days="mon-fri,sun" hours="4-23" time-zone="UTC" />
+ </instance>
+ </parallel>
+
+ <instance id="beta1" cloud-account="417744444827" tags="beta beta-prod beta-prod-cd">
+ <block-change version="true" revision="false" days="mon-fri,sun" hours="4-23" time-zone="UTC" />
+ <block-change version="true" revision="false" days="sat" hours="0-23" time-zone="UTC" />
+ <upgrade revision-change='when-clear' rollout='separate' revision-target='next' policy='conservative'/>
+ <prod>
+ <parallel>
+ <steps>
+ <region>aws-us-west-2a</region>
+ <test>aws-us-west-2a</test>
+ </steps>
+ <steps>
+ <region>aws-us-east-1b</region>
+ <test>aws-us-east-1b</test>
+ </steps>
+ <steps>
+ <region>aws-eu-west-1a</region>
+ <test>aws-eu-west-1a</test>
+ </steps>
+ <steps>
+ <region>aws-ap-southeast-1a</region>
+ <test>aws-ap-southeast-1a</test>
+ </steps>
+ </parallel>
+ </prod>
+ </instance>
+
+ <instance id="gamma5" cloud-account="417744444827" tags="gamma prod beta-prod beta-prod-cd">
+ <block-change version="true" revision="false" days="mon-fri,sun" hours="4-23" time-zone="UTC" />
+ <block-change version="true" revision="false" days="sat" hours="0-23" time-zone="UTC" />
+ <upgrade revision-change='when-clear' rollout='separate' revision-target='next' policy='conservative'/>
+ <prod>
+ <parallel>
+ <steps>
+ <region>aws-us-west-2a</region>
+ <test>aws-us-west-2a</test>
+ </steps>
+ <steps>
+ <region>aws-us-east-1b</region>
+ <test>aws-us-east-1b</test>
+ </steps>
+ <steps>
+ <region>aws-eu-west-1a</region>
+ <test>aws-eu-west-1a</test>
+ </steps>
+ <steps>
+ <region>aws-ap-southeast-1a</region>
+ <test>aws-ap-southeast-1a</test>
+ </steps>
+ </parallel>
+ </prod>
+ </instance>
+
+ <instance id="delta21" cloud-account="417744444827" tags="delta prod beta-prod beta-prod-cd">
+ <block-change version="true" revision="false" days="mon-fri,sun" hours="4-23" time-zone="UTC" />
+ <block-change version="true" revision="false" days="sat" hours="0-23" time-zone="UTC" />
+ <upgrade revision-change='when-clear' rollout='separate' revision-target='next' policy='conservative'/>
+ <prod>
+ <parallel>
+ <steps>
+ <region>aws-us-west-2a</region>
+ <test>aws-us-west-2a</test>
+ </steps>
+ <steps>
+ <region>aws-us-east-1b</region>
+ <test>aws-us-east-1b</test>
+ </steps>
+ <steps>
+ <region>aws-eu-west-1a</region>
+ <test>aws-eu-west-1a</test>
+ </steps>
+ <steps>
+ <region>aws-ap-southeast-1a</region>
+ <test>aws-ap-southeast-1a</test>
+ </steps>
+ </parallel>
+ </prod>
+ </instance>
+
+ <instance id="prod21a" cloud-account="417744444827" tags="prod-a prod beta-prod beta-prod-cd">
+ <block-change version="true" revision="false" days="mon-fri,sun" hours="4-23" time-zone="UTC" />
+ <block-change version="true" revision="false" days="sat" hours="0-23" time-zone="UTC" />
+ <upgrade revision-change='when-clear' rollout='separate' revision-target='next' policy='conservative'/>
+ </instance>
+
+ <instance id="prod21b" cloud-account="417744444827" tags="prod-b prod beta-prod beta-prod-cd">
+ <block-change version="true" revision="false" days="mon-fri,sun" hours="4-23" time-zone="UTC" />
+ <block-change version="true" revision="false" days="sat" hours="0-23" time-zone="UTC" />
+ <upgrade revision-change='when-clear' rollout='separate' revision-target='next' policy='conservative'/>
+ </instance>
+
+ <instance id="prod21c" cloud-account="417744444827" tags="prod-c prod beta-prod beta-prod-cd">
+ <block-change version="true" revision="false" days="mon-fri,sun" hours="4-23" time-zone="UTC" />
+ <block-change version="true" revision="false" days="sat" hours="0-23" time-zone="UTC" />
+ <upgrade revision-change='when-clear' rollout='separate' revision-target='next' policy='conservative'/>
+ </instance>
+
+ <instance id="cd10" cloud-account="417744444827" tags="cd beta-prod-cd">
+ <block-change version="true" revision="false" days="mon-fri,sun" hours="4-23" time-zone="UTC" />
+ <block-change version="true" revision="false" days="sat" hours="0-23" time-zone="UTC" />
+ <upgrade revision-change='when-clear' rollout='separate' revision-target='next' policy='conservative'/>
+ </instance>
+
+ <instance id="prod1" cloud-account="417744444827">
+ <block-change version="true" revision="false" days="mon-fri,sun" hours="4-23" time-zone="UTC" />
+ <block-change version="true" revision="false" days="sat" hours="0-23" time-zone="UTC" />
+ <upgrade revision-change='when-clear' rollout='separate' revision-target='next' policy='conservative'/>
+ </instance>
+
+</deployment>
diff --git a/config-application-package/src/test/resources/complex-app/services.xml b/config-application-package/src/test/resources/complex-app/services.xml
new file mode 100644
index 00000000000..23b5a90e5a2
--- /dev/null
+++ b/config-application-package/src/test/resources/complex-app/services.xml
@@ -0,0 +1,268 @@
+<services version="1.0" xmlns:deploy="vespa" xmlns:preprocess="properties">
+
+ <container id="docsgateway" version="1.0">
+
+ <nodes count="1" deploy:environment="dev" deploy:instance="staging1">
+ <resources vcpu="48" memory="96Gb" disk="1800Gb" disk-speed="fast" storage-type="local" />
+ </nodes>
+
+ <nodes count="1" deploy:environment="dev" deploy:instance="staging1-root">
+ <resources vcpu="48" memory="96Gb" disk="1800Gb" disk-speed="fast" storage-type="local" />
+ </nodes>
+
+ <nodes count="3">
+ <resources deploy:environment="prod perf" vcpu="48" memory="96Gb" disk="1800Gb" disk-speed="fast" storage-type="local" />
+ <resources vcpu="8" memory="16Gb" disk="32Gb" />
+ </nodes>
+
+ <nodes deploy:environment="staging" count="3">
+ <resources vcpu="8" memory="16Gb" disk="32Gb" />
+ </nodes>
+
+ </container>
+
+ <container id="qrs" version="1.0">
+ <nodes count="1" deploy:environment="dev" deploy:instance="staging1">
+ <resources vcpu="16" memory="32Gb" disk="64Gb" />
+ </nodes>
+
+ <nodes count="1" deploy:environment="dev" deploy:instance="staging1-root">
+ <resources vcpu="16" memory="32Gb" disk="64Gb" />
+ </nodes>
+
+ <nodes count="2">
+ <resources vcpu="8" memory="16Gb" disk="10Gb" />
+ <resources deploy:environment="prod perf" vcpu="16" memory="32Gb" disk="64Gb" />
+ </nodes>
+
+ <nodes count="25" deploy:tags="gamma" deploy:region="aws-us-east-1b">
+ <resources vcpu="16" memory="32Gb" disk="64Gb" />
+ </nodes>
+
+ <nodes count="2" deploy:tags="cd" deploy:region="aws-ap-southeast-1a">
+ <resources vcpu="16" memory="32Gb" disk="64Gb" />
+ </nodes>
+
+ <nodes count="2" deploy:tags="delta" deploy:region="aws-ap-southeast-1a">
+ <resources vcpu="16" memory="32Gb" disk="64Gb" />
+ </nodes>
+
+ <nodes count="2" deploy:tags="prod-a" deploy:region="aws-ap-southeast-1a">
+ <resources vcpu="16" memory="32Gb" disk="64Gb" />
+ </nodes>
+
+ <nodes count="2" deploy:tags="prod-b" deploy:region="aws-ap-southeast-1a">
+ <resources vcpu="16" memory="32Gb" disk="64Gb" />
+ </nodes>
+
+ <nodes count="2" deploy:tags="prod-c" deploy:region="aws-ap-southeast-1a">
+ <resources vcpu="16" memory="32Gb" disk="64Gb" />
+ </nodes>
+
+ <nodes count="2" deploy:tags="cd" deploy:region="aws-us-east-1b">
+ <resources vcpu="16" memory="32Gb" disk="64Gb" />
+ </nodes>
+
+ <nodes count="2" deploy:tags="delta" deploy:region="aws-us-east-1b">
+ <resources vcpu="16" memory="32Gb" disk="64Gb" />
+ </nodes>
+
+ <nodes count="2" deploy:tags="prod-a" deploy:region="aws-us-east-1b">
+ <resources vcpu="16" memory="32Gb" disk="64Gb" />
+ </nodes>
+
+ <nodes count="2" deploy:tags="prod-b" deploy:region="aws-us-east-1b">
+ <resources vcpu="16" memory="32Gb" disk="64Gb" />
+ </nodes>
+
+ <nodes count="2" deploy:tags="prod-c" deploy:region="aws-us-east-1b">
+ <resources vcpu="16" memory="32Gb" disk="64Gb" />
+ </nodes>
+
+ <nodes count="2" deploy:tags="cd" deploy:region="aws-us-west-2a aws-eu-west-1a">
+ <resources vcpu="16" memory="32Gb" disk="64Gb" />
+ </nodes>
+
+ <nodes count="2" deploy:tags="delta" deploy:region="aws-us-west-2a aws-eu-west-1a">
+ <resources vcpu="16" memory="32Gb" disk="64Gb" />
+ </nodes>
+
+ <nodes count="2" deploy:tags="prod-a" deploy:region="aws-us-west-2a aws-eu-west-1a">
+ <resources vcpu="16" memory="32Gb" disk="64Gb" />
+ </nodes>
+
+ <nodes count="2" deploy:tags="prod-b" deploy:region="aws-us-west-2a aws-eu-west-1a">
+ <resources vcpu="16" memory="32Gb" disk="64Gb" />
+ </nodes>
+
+ <nodes count="2" deploy:tags="prod-c" deploy:region="aws-us-west-2a aws-eu-west-1a">
+ <resources vcpu="16" memory="32Gb" disk="64Gb" />
+ </nodes>
+
+ <nodes count="3" deploy:tags="beta" deploy:region="aws-us-west-2a aws-eu-west-1a aws-ap-southeast-1a">
+ <resources vcpu="16" memory="32Gb" disk="64Gb" />
+ </nodes>
+
+ <nodes count="5" deploy:tags="beta" deploy:region="aws-us-east-1b">
+ <resources vcpu="16" memory="32Gb" disk="64Gb" />
+ </nodes>
+
+ <nodes count="5" deploy:tags="gamma" deploy:region="aws-us-west-2a aws-eu-west-1a">
+ <resources vcpu="16" memory="32Gb" disk="64Gb" />
+ </nodes>
+
+ <nodes count="7" deploy:tags="gamma" deploy:region="aws-ap-southeast-1a">
+ <resources vcpu="16" memory="32Gb" disk="64Gb" />
+ </nodes>
+
+ <search/>
+
+ </container>
+
+ <container id="visitor" version="1.0">
+ <nodes count="2">
+ <resources vcpu="8" memory="16Gb" disk="32Gb" />
+ </nodes>
+
+ <search/>
+ </container>
+
+ <content id="all" version="1.0">
+ <nodes deploy:tags="gamma" deploy:region="aws-ap-southeast-1a" count="10" groups="10">
+ <resources vcpu="72" memory="144Gb" disk="1800Gb" disk-speed="fast" storage-type="local" />
+ </nodes>
+
+ <nodes deploy:tags="beta" deploy:region="aws-us-east-1b" count="10" groups="10">
+ <resources vcpu="48" memory="96Gb" disk="1800Gb" disk-speed="fast" storage-type="local" />
+ </nodes>
+
+ <nodes deploy:environment="dev" deploy:instance="staging1" count="1" groups="1">
+ <resources vcpu="48" memory="96Gb" disk="1800Gb" disk-speed="fast" storage-type="local" />
+ </nodes>
+
+ <nodes deploy:tags="gamma" deploy:region="aws-us-east-1b" count="25" groups="25">
+ <resources vcpu="96" memory="192Gb" disk="3600Gb" disk-speed="fast" storage-type="local" />
+ </nodes>
+
+ <nodes count="2" groups="2" />
+
+ <nodes deploy:environment="dev" deploy:instance="staging1-root" count="2" groups="2">
+ <resources vcpu="48" memory="96Gb" disk="1800Gb" disk-speed="fast" storage-type="local" />
+ </nodes>
+
+ <nodes deploy:tags="cd" deploy:region="aws-ap-southeast-1a" count="2" groups="2">
+ <resources vcpu="72" memory="144Gb" disk="1800Gb" disk-speed="fast" storage-type="local" />
+ </nodes>
+
+ <nodes deploy:tags="delta" deploy:region="aws-ap-southeast-1a" count="2" groups="2">
+ <resources vcpu="72" memory="144Gb" disk="1800Gb" disk-speed="fast" storage-type="local" />
+ </nodes>
+
+ <nodes deploy:tags="prod-a" deploy:region="aws-ap-southeast-1a" count="2" groups="2">
+ <resources vcpu="72" memory="144Gb" disk="1800Gb" disk-speed="fast" storage-type="local" />
+ </nodes>
+
+ <nodes deploy:tags="prod-b" deploy:region="aws-ap-southeast-1a" count="2" groups="2">
+ <resources vcpu="72" memory="144Gb" disk="1800Gb" disk-speed="fast" storage-type="local" />
+ </nodes>
+
+ <nodes deploy:tags="prod-c" deploy:region="aws-ap-southeast-1a" count="2" groups="2">
+ <resources vcpu="72" memory="144Gb" disk="1800Gb" disk-speed="fast" storage-type="local" />
+ </nodes>
+
+ <nodes deploy:tags="cd" deploy:region="aws-eu-west-1a" count="2" groups="2">
+ <resources vcpu="72" memory="144Gb" disk="1800Gb" disk-speed="fast" storage-type="local" />
+ </nodes>
+
+ <nodes deploy:tags="delta" deploy:region="aws-eu-west-1a" count="2" groups="2">
+ <resources vcpu="72" memory="144Gb" disk="1800Gb" disk-speed="fast" storage-type="local" />
+ </nodes>
+
+ <nodes deploy:tags="prod-a" deploy:region="aws-eu-west-1a" count="2" groups="2">
+ <resources vcpu="72" memory="144Gb" disk="1800Gb" disk-speed="fast" storage-type="local" />
+ </nodes>
+
+ <nodes deploy:tags="prod-b" deploy:region="aws-eu-west-1a" count="2" groups="2">
+ <resources vcpu="72" memory="144Gb" disk="1800Gb" disk-speed="fast" storage-type="local" />
+ </nodes>
+
+ <nodes deploy:tags="prod-c" deploy:region="aws-eu-west-1a" count="2" groups="2">
+ <resources vcpu="72" memory="144Gb" disk="1800Gb" disk-speed="fast" storage-type="local" />
+ </nodes>
+
+ <nodes deploy:tags="cd" deploy:region="aws-us-east-1b" count="2" groups="2">
+ <resources vcpu="96" memory="192Gb" disk="3600Gb" disk-speed="fast" storage-type="local" />
+ </nodes>
+
+ <nodes deploy:tags="delta" deploy:region="aws-us-east-1b" count="2" groups="2">
+ <resources vcpu="96" memory="192Gb" disk="3600Gb" disk-speed="fast" storage-type="local" />
+ </nodes>
+
+ <nodes deploy:tags="prod-a" deploy:region="aws-us-east-1b" count="2" groups="2">
+ <resources vcpu="96" memory="192Gb" disk="3600Gb" disk-speed="fast" storage-type="local" />
+ </nodes>
+
+ <nodes deploy:tags="prod-b" deploy:region="aws-us-east-1b" count="2" groups="2">
+ <resources vcpu="96" memory="192Gb" disk="3600Gb" disk-speed="fast" storage-type="local" />
+ </nodes>
+
+ <nodes deploy:tags="prod-c" deploy:region="aws-us-east-1b" count="2" groups="2">
+ <resources vcpu="96" memory="192Gb" disk="3600Gb" disk-speed="fast" storage-type="local" />
+ </nodes>
+
+ <nodes deploy:tags="cd" deploy:region="aws-us-west-2a" count="2" groups="2">
+ <resources vcpu="96" memory="192Gb" disk="3600Gb" disk-speed="fast" storage-type="local" />
+ </nodes>
+
+ <nodes deploy:tags="delta" deploy:region="aws-us-west-2a" count="2" groups="2">
+ <resources vcpu="96" memory="192Gb" disk="3600Gb" disk-speed="fast" storage-type="local" />
+ </nodes>
+
+ <nodes deploy:tags="prod-a" deploy:region="aws-us-west-2a" count="2" groups="2">
+ <resources vcpu="96" memory="192Gb" disk="3600Gb" disk-speed="fast" storage-type="local" />
+ </nodes>
+
+ <nodes deploy:tags="prod-b" deploy:region="aws-us-west-2a" count="2" groups="2">
+ <resources vcpu="96" memory="192Gb" disk="3600Gb" disk-speed="fast" storage-type="local" />
+ </nodes>
+
+ <nodes deploy:tags="prod-c" deploy:region="aws-us-west-2a" count="2" groups="2">
+ <resources vcpu="96" memory="192Gb" disk="3600Gb" disk-speed="fast" storage-type="local" />
+ </nodes>
+
+ <nodes deploy:tags="beta" deploy:region="aws-eu-west-1a" count="3" groups="3">
+ <resources vcpu="36" memory="72Gb" disk="900Gb" disk-speed="fast" storage-type="local" />
+ </nodes>
+
+ <nodes deploy:tags="beta" deploy:region="aws-us-west-2a" count="3" groups="3">
+ <resources vcpu="48" memory="96Gb" disk="1800Gb" disk-speed="fast" storage-type="local" />
+ </nodes>
+
+ <nodes deploy:environment="perf" count="4" groups="4">
+ <resources vcpu="48" memory="96Gb" disk="1800Gb" disk-speed="fast" storage-type="local" />
+ </nodes>
+
+ <nodes deploy:tags="beta" deploy:region="aws-ap-southeast-1a" count="4" groups="4">
+ <resources vcpu="36" memory="72Gb" disk="900Gb" disk-speed="fast" storage-type="local" />
+ </nodes>
+
+ <nodes deploy:tags="gamma" deploy:region="aws-us-west-2a" count="5" groups="5">
+ <resources vcpu="96" memory="192Gb" disk="3600Gb" disk-speed="fast" storage-type="local" />
+ </nodes>
+
+ <nodes deploy:tags="gamma" deploy:region="aws-eu-west-1a" count="8" groups="8">
+ <resources vcpu="72" memory="144Gb" disk="1800Gb" disk-speed="fast" storage-type="local" />
+ </nodes>
+
+ <redundancy>1</redundancy>
+
+ </content>
+
+ <content id="filedocument" version="1.0">
+ <nodes count="2" groups="2">
+ <resources vcpu="4" memory="8Gb" disk="32Gb" />
+ </nodes>
+ <redundancy>1</redundancy>
+ </content>
+
+</services> \ No newline at end of file