summaryrefslogtreecommitdiffstats
path: root/config-model-api
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2022-05-20 09:51:54 +0200
committerMartin Polden <mpolden@mpolden.no>2022-05-20 09:51:54 +0200
commit9c83b722862acce9fa018bfde50f9a0c3b1fee5b (patch)
tree824365062501387ee354c937f445a89e0d2f95a9 /config-model-api
parentbff1a34dd62df8033973a8d66815e5960675eda2 (diff)
Finalize cloud account syntax
Diffstat (limited to 'config-model-api')
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/application/api/xml/DeploymentSpecXmlReader.java13
-rw-r--r--config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecTest.java16
-rw-r--r--config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecWithoutInstanceTest.java4
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>" +