summaryrefslogtreecommitdiffstats
path: root/config-model-api
diff options
context:
space:
mode:
authorMorten Tokle <mortent@oath.com>2017-11-22 13:44:48 +0100
committerMorten Tokle <mortent@oath.com>2017-11-22 13:44:48 +0100
commit4fa8521f1d23a64c0c0bc1b8fb11c1be7a7c3762 (patch)
tree02c33d68d7c6c209643e57249b4bb71bc47f88d5 /config-model-api
parent28f6fb192d3ba9d019fa9265b2770cc4325d5240 (diff)
Move deployment spec ContainerCluster -> ContainerModelBuilder
Diffstat (limited to 'config-model-api')
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/application/api/DeploymentSpec.java27
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/application/api/xml/DeploymentSpecXmlReader.java10
-rw-r--r--config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecTest.java8
3 files changed, 25 insertions, 20 deletions
diff --git a/config-model-api/src/main/java/com/yahoo/config/application/api/DeploymentSpec.java b/config-model-api/src/main/java/com/yahoo/config/application/api/DeploymentSpec.java
index 1a2335c82db..64e986abf9b 100644
--- a/config-model-api/src/main/java/com/yahoo/config/application/api/DeploymentSpec.java
+++ b/config-model-api/src/main/java/com/yahoo/config/application/api/DeploymentSpec.java
@@ -3,6 +3,8 @@ package com.yahoo.config.application.api;
import com.google.common.collect.ImmutableList;
import com.yahoo.config.application.api.xml.DeploymentSpecXmlReader;
+import com.yahoo.config.provision.AthenzDomain;
+import com.yahoo.config.provision.AthenzService;
import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.RegionName;
@@ -48,8 +50,8 @@ public class DeploymentSpec {
private final List<ChangeBlocker> changeBlockers;
private final List<Step> steps;
private final String xmlForm;
- private final Optional<String> athenzDomain;
- private final Optional<String> athenzService;
+ private final Optional<AthenzDomain> athenzDomain;
+ private final Optional<AthenzService> athenzService;
public DeploymentSpec(Optional<String> globalServiceId, UpgradePolicy upgradePolicy,
List<ChangeBlocker> changeBlockers, List<Step> steps) {
@@ -58,7 +60,7 @@ public class DeploymentSpec {
public DeploymentSpec(Optional<String> globalServiceId, UpgradePolicy upgradePolicy,
List<ChangeBlocker> changeBlockers, List<Step> steps, String xmlForm,
- Optional<String> athenzDomain, Optional<String> athenzService) {
+ Optional<AthenzDomain> athenzDomain, Optional<AthenzService> athenzService) {
validateTotalDelay(steps);
this.globalServiceId = globalServiceId;
this.upgradePolicy = upgradePolicy;
@@ -103,7 +105,7 @@ public class DeploymentSpec {
throw new IllegalArgumentException("Athenz service configured for zone: " + zone + ", but Athenz domain is not configured");
}
}
- // if athenz domain is configured, athenz service must be set implicitly or directly on all zones.
+ // if athenz domain is not set, athenz service must be set implicitly or directly on all zones.
} else if(! athenzService.isPresent()) {
for (DeclaredZone zone : zones()) {
if(! zone.athenzService().isPresent()) {
@@ -244,17 +246,18 @@ public class DeploymentSpec {
}
/** Returns the athenz domain if configured */
- public Optional<String> athenzDomain() {
+ public Optional<AthenzDomain> athenzDomain() {
return athenzDomain;
}
/** Returns the athenz service for environment/region if configured */
- public Optional<String> athenzService(Environment environment, RegionName region) {
- return zones().stream()
+ public Optional<AthenzService> athenzService(Environment environment, RegionName region) {
+ AthenzService athenzService = zones().stream()
.filter(zone -> zone.deploysTo(environment, Optional.of(region)))
.findFirst()
- .map(DeclaredZone::athenzService)
- .orElse(athenzService);
+ .flatMap(DeclaredZone::athenzService)
+ .orElse(this.athenzService.orElse(null));
+ return Optional.ofNullable(athenzService);
}
/** This may be invoked by a continuous build */
@@ -321,7 +324,7 @@ public class DeploymentSpec {
private final boolean active;
- private Optional<String> athenzService;
+ private Optional<AthenzService> athenzService;
public DeclaredZone(Environment environment) {
this(environment, Optional.empty(), false);
@@ -331,7 +334,7 @@ public class DeploymentSpec {
this(environment, region, active, Optional.empty());
}
- public DeclaredZone(Environment environment, Optional<RegionName> region, boolean active, Optional<String> athenzService) {
+ public DeclaredZone(Environment environment, Optional<RegionName> region, boolean active, Optional<AthenzService> athenzService) {
if (environment != Environment.prod && region.isPresent())
throw new IllegalArgumentException("Non-prod environments cannot specify a region");
if (environment == Environment.prod && ! region.isPresent())
@@ -350,7 +353,7 @@ public class DeploymentSpec {
/** Returns whether this zone should receive production traffic */
public boolean active() { return active; }
- public Optional<String> athenzService() { return athenzService; }
+ public Optional<AthenzService> athenzService() { return athenzService; }
@Override
public List<DeclaredZone> zones() { return Collections.singletonList(this); }
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 1a970e53713..8bc4e0026a6 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
@@ -7,6 +7,8 @@ import com.yahoo.config.application.api.DeploymentSpec.Delay;
import com.yahoo.config.application.api.DeploymentSpec.ParallelZones;
import com.yahoo.config.application.api.DeploymentSpec.Step;
import com.yahoo.config.application.api.TimeWindow;
+import com.yahoo.config.provision.AthenzDomain;
+import com.yahoo.config.provision.AthenzService;
import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.RegionName;
import com.yahoo.io.IOUtils;
@@ -72,7 +74,7 @@ public class DeploymentSpecXmlReader {
if (environment == Environment.prod) {
for (Element stepTag : XML.getChildren(environmentTag)) {
- Optional<String> athenzService = stringAttribute("athenz-service", environmentTag);
+ Optional<AthenzService> athenzService = stringAttribute("athenz-service", environmentTag).map(AthenzService::from);
if (stepTag.getTagName().equals("delay")) {
steps.add(new Delay(Duration.ofSeconds(longAttribute("hours", stepTag) * 60 * 60 +
longAttribute("minutes", stepTag) * 60 +
@@ -97,8 +99,8 @@ public class DeploymentSpecXmlReader {
throw new IllegalArgumentException("Attribute 'global-service-id' is only valid on 'prod' tag.");
}
- Optional<String> athenzDomain = stringAttribute("athenz-domain", root);
- Optional<String> athenzService = stringAttribute("athenz-service", root);
+ Optional<AthenzDomain> athenzDomain = stringAttribute("athenz-domain", root).map(AthenzDomain::from);
+ Optional<AthenzService> athenzService = stringAttribute("athenz-service", root).map(AthenzService::from);
return new DeploymentSpec(globalServiceId, readUpgradePolicy(root), readChangeBlockers(root), steps, xmlForm, athenzDomain, athenzService);
}
@@ -146,7 +148,7 @@ public class DeploymentSpecXmlReader {
return tagName.equals(testTag) || tagName.equals(stagingTag) || tagName.equals(prodTag);
}
- private DeclaredZone readDeclaredZone(Environment environment, Optional<String> athenzService, Element regionTag) {
+ private DeclaredZone readDeclaredZone(Environment environment, Optional<AthenzService> athenzService, Element regionTag) {
return new DeclaredZone(environment, Optional.of(RegionName.from(XML.getValue(regionTag).trim())),
readActive(regionTag), athenzService);
}
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 5dcb3bc1ebe..99243125f9c 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
@@ -368,7 +368,7 @@ public class DeploymentSpecTest {
}
@Test
- public void deploymentSpecWithAthenzIdentity() {
+ public void athenz_config_is_read_from_deployment() {
StringReader r = new StringReader(
"<deployment athenz-domain='domain' athenz-service='service'>\n" +
" <prod>\n" +
@@ -382,7 +382,7 @@ public class DeploymentSpecTest {
}
@Test
- public void deploymentSpecUsesServiceFromEnvironment() {
+ public void athenz_service_is_overridden_from_environment() {
StringReader r = new StringReader(
"<deployment athenz-domain='domain' athenz-service='service'>\n" +
" <test/>\n" +
@@ -397,7 +397,7 @@ public class DeploymentSpecTest {
}
@Test(expected = IllegalArgumentException.class)
- public void athenzDomainMissingService() {
+ public void it_fails_when_athenz_service_is_not_defined() {
StringReader r = new StringReader(
"<deployment athenz-domain='domain'>\n" +
" <prod>\n" +
@@ -409,7 +409,7 @@ public class DeploymentSpecTest {
}
@Test(expected = IllegalArgumentException.class)
- public void athenzDomainMissingDomain() {
+ public void it_fails_when_athenz_service_is_configured_but_not_athenz_domain() {
StringReader r = new StringReader(
"<deployment>\n" +
" <prod athenz-service='service'>\n" +