diff options
Diffstat (limited to 'config-model-api/src')
3 files changed, 14 insertions, 19 deletions
diff --git a/config-model-api/src/main/java/com/yahoo/config/application/api/xml/DeploymentSpecXmlReader.java b/config-model-api/src/main/java/com/yahoo/config/application/api/xml/DeploymentSpecXmlReader.java index 8166fb33b78..2f73bff83b8 100644 --- a/config-model-api/src/main/java/com/yahoo/config/application/api/xml/DeploymentSpecXmlReader.java +++ b/config-model-api/src/main/java/com/yahoo/config/application/api/xml/DeploymentSpecXmlReader.java @@ -181,6 +181,7 @@ public class DeploymentSpecXmlReader { int maxIdleHours = getWithFallback(instanceTag, parentTag, upgradeTag, "max-idle-hours", Integer::parseInt, 8); List<DeploymentSpec.ChangeBlocker> changeBlockers = readChangeBlockers(instanceTag, parentTag); Optional<AthenzService> athenzService = mostSpecificAttribute(instanceTag, athenzServiceAttribute).map(AthenzService::from); + Optional<CloudAccount> cloudAccount = mostSpecificAttribute(instanceTag, cloudAccountAttribute).map(CloudAccount::new); Notifications notifications = readNotifications(instanceTag, parentTag); // Values where there is no default @@ -203,8 +204,7 @@ public class DeploymentSpecXmlReader { changeBlockers, Optional.ofNullable(prodAttributes.get(globalServiceIdAttribute)), athenzService, - Optional.ofNullable(prodAttributes.get(cloudAccountAttribute)) - .map(CloudAccount::new), + cloudAccount, notifications, endpoints, now)) @@ -226,10 +226,8 @@ public class DeploymentSpecXmlReader { if (prodTag.equals(stepTag.getTagName())) { readGlobalServiceId(stepTag).ifPresent(id -> prodAttributes.put(globalServiceIdAttribute, id)); - readCloudAccount(stepTag).ifPresent(account -> prodAttributes.put(cloudAccountAttribute, account)); } else { if (readGlobalServiceId(stepTag).isPresent()) illegal("Attribute '" + globalServiceIdAttribute + "' is only valid on 'prod' tag"); - if (!regionTag.equals(stepTag.getTagName()) && readCloudAccount(stepTag).isPresent()) illegal("Attribute '" + cloudAccountAttribute + "' is only valid on 'prod' or 'region' tag"); } switch (stepTag.getTagName()) { @@ -435,12 +433,7 @@ public class DeploymentSpecXmlReader { Optional<String> testerFlavor, Element regionTag) { return new DeclaredZone(environment, Optional.of(RegionName.from(XML.getValue(regionTag).trim())), readActive(regionTag), athenzService, testerFlavor, - readCloudAccount(regionTag).map(CloudAccount::new)); - } - - private Optional<String> readCloudAccount(Element tag) { - return Optional.of(tag.getAttribute(cloudAccountAttribute)) - .filter(account -> !account.isEmpty()); + stringAttribute(cloudAccountAttribute, regionTag).map(CloudAccount::new)); } private Optional<String> readGlobalServiceId(Element environmentTag) { diff --git a/config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecTest.java b/config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecTest.java index dfe8b324d1c..7f0e9b4cae8 100644 --- a/config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecTest.java +++ b/config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecTest.java @@ -1513,22 +1513,24 @@ public class DeploymentSpecTest { @Test public void cloudAccount() { StringReader r = new StringReader( - "<deployment version='1.0'>" + - " <instance id='beta'>" + - " <prod cloud-account='219876543210'>" + + "<deployment version='1.0' cloud-account='100000000000'>" + + " <instance id='beta' cloud-account='200000000000'>" + + " <prod>" + " <region>us-west-1</region>" + " </prod>" + " </instance>" + " <instance id='main'>" + - " <prod cloud-account='012345678912'>" + - " <region>us-east-1</region>" + + " <prod>" + + " <region cloud-account='300000000000'>us-east-1</region>" + + " <region>eu-west-1</region>" + " </prod>" + " </instance>" + "</deployment>" ); DeploymentSpec spec = DeploymentSpec.fromXml(r); - assertEquals(Optional.of(new CloudAccount("219876543210")), spec.requireInstance("beta").cloudAccount(Environment.prod, RegionName.from("us-east-1"))); - assertEquals(Optional.of(new CloudAccount("012345678912")), spec.requireInstance("main").cloudAccount(Environment.prod, RegionName.from("us-west-1"))); + assertEquals(Optional.of(new CloudAccount("200000000000")), spec.requireInstance("beta").cloudAccount(Environment.prod, RegionName.from("us-west-1"))); + assertEquals(Optional.of(new CloudAccount("300000000000")), spec.requireInstance("main").cloudAccount(Environment.prod, RegionName.from("us-east-1"))); + assertEquals(Optional.of(new CloudAccount("100000000000")), spec.requireInstance("main").cloudAccount(Environment.prod, RegionName.from("eu-west-1"))); } private static void assertInvalid(String deploymentSpec, String errorMessagePart) { diff --git a/config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecWithoutInstanceTest.java b/config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecWithoutInstanceTest.java index aa8946a9dca..1232f700fee 100644 --- a/config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecWithoutInstanceTest.java +++ b/config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecWithoutInstanceTest.java @@ -706,8 +706,8 @@ public class DeploymentSpecWithoutInstanceTest { @Test public void productionSpecWithCloudAccount() { StringReader r = new StringReader( - "<deployment version='1.0'>" + - " <prod cloud-account='012345678912'>" + + "<deployment version='1.0' cloud-account='012345678912'>" + + " <prod>" + " <region cloud-account='219876543210'>us-east-1</region>" + " <region>us-west-1</region>" + " </prod>" + |