summaryrefslogtreecommitdiffstats
path: root/config-model-api
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@verizonmedia.com>2019-10-08 11:03:11 +0200
committerJon Bratseth <bratseth@verizonmedia.com>2019-10-08 11:03:11 +0200
commitb7cbd0e7b2afe292bf85ad6eb887f4c502688ab2 (patch)
tree496a778103bf89b84aa0ff82df57d2e38e4c9d67 /config-model-api
parent07d4f467957373ac25c173cfcd0667206da2733b (diff)
Allow non-existing instances when appropriate
Diffstat (limited to 'config-model-api')
-rw-r--r--config-model-api/abi-spec.json6
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/application/api/DeploymentSpec.java81
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/application/api/xml/DeploymentSpecXmlReader.java2
-rw-r--r--config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecTest.java198
-rw-r--r--config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecWithoutInstanceTest.java170
5 files changed, 252 insertions, 205 deletions
diff --git a/config-model-api/abi-spec.json b/config-model-api/abi-spec.json
index 315b03c301a..d08cda06e5d 100644
--- a/config-model-api/abi-spec.json
+++ b/config-model-api/abi-spec.json
@@ -329,7 +329,7 @@
"public"
],
"methods": [
- "public void <init>(java.util.List, java.util.Optional, java.lang.String)",
+ "public void <init>(java.util.List, java.util.Optional, java.util.Optional, java.util.Optional, java.lang.String)",
"public void <init>(java.util.Optional, com.yahoo.config.application.api.DeploymentSpec$UpgradePolicy, java.util.Optional, java.util.List, java.util.List, java.lang.String, java.util.Optional, java.util.Optional, com.yahoo.config.application.api.Notifications, java.util.List)",
"public java.util.Optional globalServiceId()",
"public com.yahoo.config.application.api.DeploymentSpec$UpgradePolicy upgradePolicy()",
@@ -341,12 +341,12 @@
"public java.util.List zones()",
"public java.util.Optional athenzDomain()",
"public java.util.Optional athenzService(com.yahoo.config.provision.Environment, com.yahoo.config.provision.RegionName)",
+ "public java.util.Optional athenzService(com.yahoo.config.provision.InstanceName, com.yahoo.config.provision.Environment, com.yahoo.config.provision.RegionName)",
"public com.yahoo.config.application.api.Notifications notifications()",
"public java.util.List endpoints()",
"public java.lang.String xmlForm()",
"public boolean includes(com.yahoo.config.provision.Environment, java.util.Optional)",
- "public com.yahoo.config.application.api.DeploymentInstanceSpec instance(java.lang.String)",
- "public com.yahoo.config.application.api.DeploymentInstanceSpec instance(com.yahoo.config.provision.InstanceName)",
+ "public java.util.Optional instance(com.yahoo.config.provision.InstanceName)",
"public com.yahoo.config.application.api.DeploymentInstanceSpec requireInstance(java.lang.String)",
"public com.yahoo.config.application.api.DeploymentInstanceSpec requireInstance(com.yahoo.config.provision.InstanceName)",
"public java.util.List instances()",
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 71af050174b..9b0454cffee 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
@@ -47,11 +47,18 @@ public class DeploymentSpec {
List.of());
private final List<Step> steps;
+
+ // Attributes which can be set on the root tag and which must be available outside of any particular instance
private final Optional<Integer> majorVersion;
+ private final Optional<AthenzDomain> athenzDomain;
+ private final Optional<AthenzService> athenzService;
+
private final String xmlForm;
public DeploymentSpec(List<Step> steps,
Optional<Integer> majorVersion,
+ Optional<AthenzDomain> athenzDomain,
+ Optional<AthenzService> athenzService,
String xmlForm) {
if (singleInstance(steps)) { // TODO: Remove this clause after November 2019
var singleInstance = (DeploymentInstanceSpec)steps.get(0);
@@ -61,6 +68,8 @@ public class DeploymentSpec {
this.steps = List.copyOf(completeSteps(steps));
}
this.majorVersion = majorVersion;
+ this.athenzDomain = athenzDomain;
+ this.athenzService = athenzService;
this.xmlForm = xmlForm;
validateTotalDelay(steps);
}
@@ -81,6 +90,8 @@ public class DeploymentSpec {
notifications,
endpoints)),
majorVersion,
+ athenzDomain,
+ athenzService,
xmlForm);
}
@@ -137,7 +148,7 @@ public class DeploymentSpec {
}
// TODO: Remove after October 2019
- private DeploymentInstanceSpec defaultInstance() {
+ private DeploymentInstanceSpec singleInstance() {
if (singleInstance(steps)) return (DeploymentInstanceSpec)steps.get(0);
throw new IllegalArgumentException("This deployment spec does not support the legacy API " +
"as it has multiple instances: " +
@@ -145,56 +156,74 @@ public class DeploymentSpec {
}
// TODO: Remove after October 2019
- public Optional<String> globalServiceId() { return defaultInstance().globalServiceId(); }
+ public Optional<String> globalServiceId() { return singleInstance().globalServiceId(); }
// TODO: Remove after October 2019
- public UpgradePolicy upgradePolicy() { return defaultInstance().upgradePolicy(); }
+ public UpgradePolicy upgradePolicy() { return singleInstance().upgradePolicy(); }
/** Returns the major version this application is pinned to, or empty (default) to allow all major versions */
public Optional<Integer> majorVersion() { return majorVersion; }
// TODO: Remove after November 2019
- public boolean canUpgradeAt(Instant instant) { return defaultInstance().canUpgradeAt(instant); }
+ public boolean canUpgradeAt(Instant instant) { return singleInstance().canUpgradeAt(instant); }
// TODO: Remove after November 2019
- public boolean canChangeRevisionAt(Instant instant) { return defaultInstance().canChangeRevisionAt(instant); }
+ public boolean canChangeRevisionAt(Instant instant) { return singleInstance().canChangeRevisionAt(instant); }
// TODO: Remove after November 2019
- public List<ChangeBlocker> changeBlocker() { return defaultInstance().changeBlocker(); }
+ public List<ChangeBlocker> changeBlocker() { return singleInstance().changeBlocker(); }
/** Returns the deployment steps of this in the order they will be performed */
public List<Step> steps() {
- if (singleInstance(steps)) return defaultInstance().steps(); // TODO: Remove line after November 2019
+ if (singleInstance(steps)) return singleInstance().steps(); // TODO: Remove line after November 2019
return steps;
}
// TODO: Remove after November 2019
public List<DeclaredZone> zones() {
- return defaultInstance().steps().stream()
- .flatMap(step -> step.zones().stream())
- .collect(Collectors.toList());
+ return singleInstance().steps().stream()
+ .flatMap(step -> step.zones().stream())
+ .collect(Collectors.toList());
}
- // TODO: Remove after November 2019
- public Optional<AthenzDomain> athenzDomain() { return defaultInstance().athenzDomain(); }
+ /** Returns the Athenz domain set on the root tag, if any */
+ public Optional<AthenzDomain> athenzDomain() { return athenzDomain; }
+ /** Returns the Athenz service to use for the given environment and region, if any */
// TODO: Remove after November 2019
public Optional<AthenzService> athenzService(Environment environment, RegionName region) {
- return defaultInstance().athenzService(environment, region);
+ Optional<AthenzService> service = Optional.empty();
+ if (singleInstance(steps))
+ service = singleInstance().athenzService(environment, region);
+ if (service.isPresent())
+ return service;
+ return this.athenzService;
+ }
+
+ /**
+ * Returns the Athenz service to use for the given instance, environment and region, if any.
+ * This returns the default set on the deploy tag (if any) if nothing is set for this particular
+ * combination of instance, environment and region, and also if that combination is not specified
+ * at all in services.
+ */
+ public Optional<AthenzService> athenzService(InstanceName instanceName, Environment environment, RegionName region) {
+ Optional<DeploymentInstanceSpec> instance = instance(instanceName);
+ if (instance.isEmpty()) return this.athenzService;
+ return instance.get().athenzService(environment, region).or(() -> this.athenzService);
}
// TODO: Remove after November 2019
- public Notifications notifications() { return defaultInstance().notifications(); }
+ public Notifications notifications() { return singleInstance().notifications(); }
// TODO: Remove after November 2019
- public List<Endpoint> endpoints() { return defaultInstance().endpoints(); }
+ public List<Endpoint> endpoints() { return singleInstance().endpoints(); }
/** Returns the XML form of this spec, or null if it was not created by fromXml, nor is empty */
public String xmlForm() { return xmlForm; }
// TODO: Remove after November 2019
public boolean includes(Environment environment, Optional<RegionName> region) {
- return defaultInstance().deploysTo(environment, region);
+ return singleInstance().deploysTo(environment, region);
}
// TODO: Remove after November 2019
@@ -202,31 +231,25 @@ public class DeploymentSpec {
return steps.size() == 1 && steps.get(0) instanceof DeploymentInstanceSpec;
}
- /** Returns the instance step containing the given instance name, or null if not present */
- public DeploymentInstanceSpec instance(String name) {
- return instance(InstanceName.from(name));
- }
-
- /** Returns the instance step containing the given instance name, or null if not present */
- public DeploymentInstanceSpec instance(InstanceName name) {
+ /** Returns the instance step containing the given instance name */
+ public Optional<DeploymentInstanceSpec> instance(InstanceName name) {
for (DeploymentInstanceSpec instance : instances()) {
if (instance.name().equals(name))
- return instance;
+ return Optional.of(instance);
}
- return null;
+ return Optional.empty();
}
- /** Returns the instance step containing the given instance name, or throws an IllegalArgumentException if not present */
public DeploymentInstanceSpec requireInstance(String name) {
return requireInstance(InstanceName.from(name));
}
public DeploymentInstanceSpec requireInstance(InstanceName name) {
- DeploymentInstanceSpec instance = instance(name);
- if (instance == null)
+ Optional<DeploymentInstanceSpec> instance = instance(name);
+ if (instance.isEmpty())
throw new IllegalArgumentException("No instance '" + name + "' in deployment.xml'. Instances: " +
instances().stream().map(spec -> spec.name().toString()).collect(Collectors.joining(",")));
- return instance;
+ return instance.get();
}
/** Returns the steps of this which are instances */
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 cb645813290..59b31985376 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
@@ -108,6 +108,8 @@ public class DeploymentSpecXmlReader {
return new DeploymentSpec(steps,
optionalIntegerAttribute(majorVersionTag, root),
+ stringAttribute(athenzDomainAttribute, root).map(AthenzDomain::from),
+ stringAttribute(athenzServiceAttribute, root).map(AthenzService::from),
xmlForm);
}
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 b75801de7ea..c6035ac8d46 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
@@ -3,6 +3,7 @@ package com.yahoo.config.application.api;
import com.google.common.collect.ImmutableSet;
import com.yahoo.config.provision.Environment;
+import com.yahoo.config.provision.InstanceName;
import com.yahoo.config.provision.RegionName;
import org.junit.Test;
@@ -39,14 +40,14 @@ public class DeploymentSpecTest {
StringReader r = new StringReader(specXml);
DeploymentSpec spec = DeploymentSpec.fromXml(r);
assertEquals(specXml, spec.xmlForm());
- assertEquals(1, spec.instance("default").steps().size());
+ assertEquals(1, spec.requireInstance("default").steps().size());
assertFalse(spec.majorVersion().isPresent());
- assertTrue(spec.instance("default").steps().get(0).deploysTo(Environment.test));
- assertTrue(spec.instance("default").includes(Environment.test, Optional.empty()));
- assertFalse(spec.instance("default").includes(Environment.test, Optional.of(RegionName.from("region1"))));
- assertFalse(spec.instance("default").includes(Environment.staging, Optional.empty()));
- assertFalse(spec.instance("default").includes(Environment.prod, Optional.empty()));
- assertFalse(spec.instance("default").globalServiceId().isPresent());
+ assertTrue(spec.requireInstance("default").steps().get(0).deploysTo(Environment.test));
+ assertTrue(spec.requireInstance("default").includes(Environment.test, Optional.empty()));
+ assertFalse(spec.requireInstance("default").includes(Environment.test, Optional.of(RegionName.from("region1"))));
+ assertFalse(spec.requireInstance("default").includes(Environment.staging, Optional.empty()));
+ assertFalse(spec.requireInstance("default").includes(Environment.prod, Optional.empty()));
+ assertFalse(spec.requireInstance("default").globalServiceId().isPresent());
}
@Test
@@ -60,7 +61,7 @@ public class DeploymentSpecTest {
StringReader r = new StringReader(specXml);
DeploymentSpec spec = DeploymentSpec.fromXml(r);
assertEquals(specXml, spec.xmlForm());
- assertEquals(1, spec.instance("default").steps().size());
+ assertEquals(1, spec.requireInstance("default").steps().size());
assertTrue(spec.majorVersion().isPresent());
assertEquals(6, (int)spec.majorVersion().get());
}
@@ -76,14 +77,14 @@ public class DeploymentSpecTest {
);
DeploymentSpec spec = DeploymentSpec.fromXml(r);
- assertEquals(2, spec.instance("default").steps().size());
- assertTrue(spec.instance("default").steps().get(0).deploysTo(Environment.test));
- assertTrue(spec.instance("default").steps().get(1).deploysTo(Environment.staging));
- assertTrue(spec.instance("default").includes(Environment.test, Optional.empty()));
- assertFalse(spec.instance("default").includes(Environment.test, Optional.of(RegionName.from("region1"))));
- assertTrue(spec.instance("default").includes(Environment.staging, Optional.empty()));
- assertFalse(spec.instance("default").includes(Environment.prod, Optional.empty()));
- assertFalse(spec.instance("default").globalServiceId().isPresent());
+ assertEquals(2, spec.requireInstance("default").steps().size());
+ assertTrue(spec.requireInstance("default").steps().get(0).deploysTo(Environment.test));
+ assertTrue(spec.requireInstance("default").steps().get(1).deploysTo(Environment.staging));
+ assertTrue(spec.requireInstance("default").includes(Environment.test, Optional.empty()));
+ assertFalse(spec.requireInstance("default").includes(Environment.test, Optional.of(RegionName.from("region1"))));
+ assertTrue(spec.requireInstance("default").includes(Environment.staging, Optional.empty()));
+ assertFalse(spec.requireInstance("default").includes(Environment.prod, Optional.empty()));
+ assertFalse(spec.requireInstance("default").globalServiceId().isPresent());
}
@Test
@@ -100,27 +101,27 @@ public class DeploymentSpecTest {
);
DeploymentSpec spec = DeploymentSpec.fromXml(r);
- assertEquals(4, spec.instance("default").steps().size());
+ assertEquals(4, spec.requireInstance("default").steps().size());
- assertTrue(spec.instance("default").steps().get(0).deploysTo(Environment.test));
+ assertTrue(spec.requireInstance("default").steps().get(0).deploysTo(Environment.test));
- assertTrue(spec.instance("default").steps().get(1).deploysTo(Environment.staging));
+ assertTrue(spec.requireInstance("default").steps().get(1).deploysTo(Environment.staging));
- assertTrue(spec.instance("default").steps().get(2).deploysTo(Environment.prod, Optional.of(RegionName.from("us-east1"))));
- assertFalse(((DeploymentSpec.DeclaredZone)spec.instance("default").steps().get(2)).active());
+ assertTrue(spec.requireInstance("default").steps().get(2).deploysTo(Environment.prod, Optional.of(RegionName.from("us-east1"))));
+ assertFalse(((DeploymentSpec.DeclaredZone)spec.requireInstance("default").steps().get(2)).active());
- assertTrue(spec.instance("default").steps().get(3).deploysTo(Environment.prod, Optional.of(RegionName.from("us-west1"))));
- assertTrue(((DeploymentSpec.DeclaredZone)spec.instance("default").steps().get(3)).active());
+ assertTrue(spec.requireInstance("default").steps().get(3).deploysTo(Environment.prod, Optional.of(RegionName.from("us-west1"))));
+ assertTrue(((DeploymentSpec.DeclaredZone)spec.requireInstance("default").steps().get(3)).active());
- assertTrue(spec.instance("default").includes(Environment.test, Optional.empty()));
- assertFalse(spec.instance("default").includes(Environment.test, Optional.of(RegionName.from("region1"))));
- assertTrue(spec.instance("default").includes(Environment.staging, Optional.empty()));
- assertTrue(spec.instance("default").includes(Environment.prod, Optional.of(RegionName.from("us-east1"))));
- assertTrue(spec.instance("default").includes(Environment.prod, Optional.of(RegionName.from("us-west1"))));
- assertFalse(spec.instance("default").includes(Environment.prod, Optional.of(RegionName.from("no-such-region"))));
- assertFalse(spec.instance("default").globalServiceId().isPresent());
+ assertTrue(spec.requireInstance("default").includes(Environment.test, Optional.empty()));
+ assertFalse(spec.requireInstance("default").includes(Environment.test, Optional.of(RegionName.from("region1"))));
+ assertTrue(spec.requireInstance("default").includes(Environment.staging, Optional.empty()));
+ assertTrue(spec.requireInstance("default").includes(Environment.prod, Optional.of(RegionName.from("us-east1"))));
+ assertTrue(spec.requireInstance("default").includes(Environment.prod, Optional.of(RegionName.from("us-west1"))));
+ assertFalse(spec.requireInstance("default").includes(Environment.prod, Optional.of(RegionName.from("no-such-region"))));
+ assertFalse(spec.requireInstance("default").globalServiceId().isPresent());
- assertEquals(DeploymentSpec.UpgradePolicy.defaultPolicy, spec.instance("default").upgradePolicy());
+ assertEquals(DeploymentSpec.UpgradePolicy.defaultPolicy, spec.requireInstance("default").upgradePolicy());
}
@Test
@@ -140,7 +141,7 @@ public class DeploymentSpecTest {
);
DeploymentSpec spec = DeploymentSpec.fromXml(r);
- assertCorrectFirstInstance(spec.instance("default"));
+ assertCorrectFirstInstance(spec.requireInstance("default"));
}
@Test
@@ -166,9 +167,9 @@ public class DeploymentSpecTest {
DeploymentSpec spec = DeploymentSpec.fromXml(r);
- assertCorrectFirstInstance(spec.instance("instance1"));
+ assertCorrectFirstInstance(spec.requireInstance("instance1"));
- DeploymentInstanceSpec instance2 = spec.instance("instance2");
+ DeploymentInstanceSpec instance2 = spec.requireInstance("instance2");
assertEquals(1, instance2.steps().size());
assertEquals(1, instance2.zones().size());
@@ -193,8 +194,8 @@ public class DeploymentSpecTest {
DeploymentSpec spec = DeploymentSpec.fromXml(r);
- assertCorrectFirstInstance(spec.instance("instance1"));
- assertCorrectFirstInstance(spec.instance("instance2"));
+ assertCorrectFirstInstance(spec.requireInstance("instance1"));
+ assertCorrectFirstInstance(spec.requireInstance("instance2"));
}
private void assertCorrectFirstInstance(DeploymentInstanceSpec instance) {
@@ -237,7 +238,7 @@ public class DeploymentSpecTest {
);
DeploymentSpec spec = DeploymentSpec.fromXml(r);
- assertEquals(spec.instance("default").globalServiceId(), Optional.of("query"));
+ assertEquals(spec.requireInstance("default").globalServiceId(), Optional.of("query"));
}
@Test(expected=IllegalArgumentException.class)
@@ -281,7 +282,7 @@ public class DeploymentSpecTest {
);
DeploymentSpec spec = DeploymentSpec.fromXml(r);
- assertEquals("qrs", spec.instance("default").globalServiceId().get());
+ assertEquals("qrs", spec.requireInstance("default").globalServiceId().get());
}
@Test
@@ -300,7 +301,7 @@ public class DeploymentSpecTest {
);
DeploymentSpec spec = DeploymentSpec.fromXml(r);
- assertEquals("canary", spec.instance("default").upgradePolicy().toString());
+ assertEquals("canary", spec.requireInstance("default").upgradePolicy().toString());
}
@Test
@@ -317,8 +318,8 @@ public class DeploymentSpecTest {
);
DeploymentSpec spec = DeploymentSpec.fromXml(r);
- assertEquals("conservative", spec.instance("instance1").upgradePolicy().toString());
- assertEquals("canary", spec.instance("instance2").upgradePolicy().toString());
+ assertEquals("conservative", spec.requireInstance("instance1").upgradePolicy().toString());
+ assertEquals("canary", spec.requireInstance("instance2").upgradePolicy().toString());
}
@Test
@@ -349,7 +350,7 @@ public class DeploymentSpecTest {
@Test
public void testEmpty() {
- assertFalse(DeploymentSpec.empty.instance("default").globalServiceId().isPresent());
+ assertFalse(DeploymentSpec.empty.requireInstance("default").globalServiceId().isPresent());
assertEquals(DeploymentSpec.UpgradePolicy.defaultPolicy, DeploymentSpec.empty.upgradePolicy());
assertTrue(DeploymentSpec.empty.steps().isEmpty());
assertEquals("<deployment version='1.0'/>", DeploymentSpec.empty.xmlForm());
@@ -371,7 +372,7 @@ public class DeploymentSpecTest {
"</deployment>"
);
DeploymentSpec spec = DeploymentSpec.fromXml(r);
- DeploymentSpec.ParallelZones parallelZones = ((DeploymentSpec.ParallelZones) spec.instance("default").steps().get(3));
+ DeploymentSpec.ParallelZones parallelZones = ((DeploymentSpec.ParallelZones) spec.requireInstance("default").steps().get(3));
assertEquals(2, parallelZones.zones().size());
assertEquals(RegionName.from("us-central-1"), parallelZones.zones().get(0).region().get());
assertEquals(RegionName.from("us-east-3"), parallelZones.zones().get(1).region().get());
@@ -546,23 +547,23 @@ public class DeploymentSpecTest {
"</deployment>"
);
DeploymentSpec spec = DeploymentSpec.fromXml(r);
- assertEquals(2, spec.instance("default").changeBlocker().size());
- assertTrue(spec.instance("default").changeBlocker().get(0).blocksVersions());
- assertFalse(spec.instance("default").changeBlocker().get(0).blocksRevisions());
- assertEquals(ZoneId.of("UTC"), spec.instance("default").changeBlocker().get(0).window().zone());
+ assertEquals(2, spec.requireInstance("default").changeBlocker().size());
+ assertTrue(spec.requireInstance("default").changeBlocker().get(0).blocksVersions());
+ assertFalse(spec.requireInstance("default").changeBlocker().get(0).blocksRevisions());
+ assertEquals(ZoneId.of("UTC"), spec.requireInstance("default").changeBlocker().get(0).window().zone());
- assertTrue(spec.instance("default").changeBlocker().get(1).blocksVersions());
- assertTrue(spec.instance("default").changeBlocker().get(1).blocksRevisions());
- assertEquals(ZoneId.of("CET"), spec.instance("default").changeBlocker().get(1).window().zone());
+ assertTrue(spec.requireInstance("default").changeBlocker().get(1).blocksVersions());
+ assertTrue(spec.requireInstance("default").changeBlocker().get(1).blocksRevisions());
+ assertEquals(ZoneId.of("CET"), spec.requireInstance("default").changeBlocker().get(1).window().zone());
- assertTrue(spec.instance("default").canUpgradeAt(Instant.parse("2017-09-18T14:15:30.00Z")));
- assertFalse(spec.instance("default").canUpgradeAt(Instant.parse("2017-09-18T15:15:30.00Z")));
- assertFalse(spec.instance("default").canUpgradeAt(Instant.parse("2017-09-18T16:15:30.00Z")));
- assertTrue(spec.instance("default").canUpgradeAt(Instant.parse("2017-09-18T17:15:30.00Z")));
+ assertTrue(spec.requireInstance("default").canUpgradeAt(Instant.parse("2017-09-18T14:15:30.00Z")));
+ assertFalse(spec.requireInstance("default").canUpgradeAt(Instant.parse("2017-09-18T15:15:30.00Z")));
+ assertFalse(spec.requireInstance("default").canUpgradeAt(Instant.parse("2017-09-18T16:15:30.00Z")));
+ assertTrue(spec.requireInstance("default").canUpgradeAt(Instant.parse("2017-09-18T17:15:30.00Z")));
- assertTrue(spec.instance("default").canUpgradeAt(Instant.parse("2017-09-23T09:15:30.00Z")));
- assertFalse(spec.instance("default").canUpgradeAt(Instant.parse("2017-09-23T08:15:30.00Z"))); // 10 in CET
- assertTrue(spec.instance("default").canUpgradeAt(Instant.parse("2017-09-23T10:15:30.00Z")));
+ assertTrue(spec.requireInstance("default").canUpgradeAt(Instant.parse("2017-09-23T09:15:30.00Z")));
+ assertFalse(spec.requireInstance("default").canUpgradeAt(Instant.parse("2017-09-23T08:15:30.00Z"))); // 10 in CET
+ assertTrue(spec.requireInstance("default").canUpgradeAt(Instant.parse("2017-09-23T10:15:30.00Z")));
}
@Test
@@ -582,13 +583,13 @@ public class DeploymentSpecTest {
String inheritedChangeBlocker = "change blocker revision=false version=true window=time window for hour(s) [15, 16] on [monday, tuesday] in UTC";
- assertEquals(2, spec.instance("instance1").changeBlocker().size());
- assertEquals(inheritedChangeBlocker, spec.instance("instance1").changeBlocker().get(0).toString());
+ assertEquals(2, spec.requireInstance("instance1").changeBlocker().size());
+ assertEquals(inheritedChangeBlocker, spec.requireInstance("instance1").changeBlocker().get(0).toString());
assertEquals("change blocker revision=true version=true window=time window for hour(s) [10] on [saturday] in CET",
- spec.instance("instance1").changeBlocker().get(1).toString());
+ spec.requireInstance("instance1").changeBlocker().get(1).toString());
- assertEquals(1, spec.instance("instance2").changeBlocker().size());
- assertEquals(inheritedChangeBlocker, spec.instance("instance2").changeBlocker().get(0).toString());
+ assertEquals(1, spec.requireInstance("instance2").changeBlocker().size());
+ assertEquals(inheritedChangeBlocker, spec.requireInstance("instance2").changeBlocker().get(0).toString());
}
@Test
@@ -603,8 +604,16 @@ public class DeploymentSpecTest {
"</deployment>"
);
DeploymentSpec spec = DeploymentSpec.fromXml(r);
- assertEquals(spec.instance("instance1").athenzDomain().get().value(), "domain");
- assertEquals(spec.instance("instance1").athenzService(Environment.prod, RegionName.from("us-west-1")).get().value(), "service");
+ assertEquals("domain", spec.athenzDomain().get().value());
+ assertEquals("service", spec.athenzService(InstanceName.from("instance1"),
+ Environment.prod,
+ RegionName.from("us-west-1")).get().value());
+ assertEquals("service", spec.athenzService(InstanceName.from("non-existent"),
+ Environment.prod,
+ RegionName.from("us-west-1")).get().value());
+ assertEquals("domain", spec.requireInstance("instance1").athenzDomain().get().value());
+ assertEquals("service", spec.requireInstance("instance1").athenzService(Environment.prod,
+ RegionName.from("us-west-1")).get().value());
}
@Test
@@ -619,8 +628,11 @@ public class DeploymentSpecTest {
"</deployment>"
);
DeploymentSpec spec = DeploymentSpec.fromXml(r);
- assertEquals(spec.instance("default").athenzDomain().get().value(), "domain");
- assertEquals(spec.instance("default").athenzService(Environment.prod, RegionName.from("us-west-1")).get().value(), "service");
+ assertEquals(spec.requireInstance("default").athenzDomain().get().value(), "domain");
+ assertEquals(spec.requireInstance("default").athenzService(Environment.prod, RegionName.from("us-west-1")).get().value(), "service");
+ assertEquals(Optional.empty(), spec.athenzService(InstanceName.from("non-existent"),
+ Environment.prod,
+ RegionName.from("us-west-1")));
}
@Test
@@ -636,8 +648,18 @@ public class DeploymentSpecTest {
"</deployment>"
);
DeploymentSpec spec = DeploymentSpec.fromXml(r);
- assertEquals(spec.instance("default").athenzDomain().get().value(), "domain");
- assertEquals(spec.instance("default").athenzService(Environment.prod, RegionName.from("us-west-1")).get().value(), "prod-service");
+ assertEquals(spec.requireInstance("default").athenzDomain().get().value(), "domain");
+ assertEquals(spec.athenzService(InstanceName.from("default"),
+ Environment.prod,
+ RegionName.from("us-west-1")).get().value(),
+ "prod-service");
+ assertEquals(spec.requireInstance("default").athenzService(Environment.prod,
+ RegionName.from("us-west-1")).get().value(),
+ "prod-service");
+ assertEquals(spec.athenzService(InstanceName.from("non-existent"),
+ Environment.prod,
+ RegionName.from("us-west-1")).get().value(),
+ "service");
}
@Test(expected = IllegalArgumentException.class)
@@ -673,7 +695,7 @@ public class DeploymentSpecTest {
assertEquals(Notifications.none(),
DeploymentSpec.fromXml("<deployment>" +
" <instance id='default'/>" +
- "</deployment>").instance("default").notifications());
+ "</deployment>").requireInstance("default").notifications());
}
@Test
@@ -683,7 +705,7 @@ public class DeploymentSpecTest {
" <notifications/>" +
" </instance>" +
"</deployment>");
- assertEquals(Notifications.none(), spec.instance("default").notifications());
+ assertEquals(Notifications.none(), spec.requireInstance("default").notifications());
}
@Test
@@ -697,10 +719,10 @@ public class DeploymentSpecTest {
" </notifications>" +
" </instance>" +
"</deployment>");
- assertEquals(ImmutableSet.of(author), spec.instance("default").notifications().emailRolesFor(failing));
- assertEquals(ImmutableSet.of(author), spec.instance("default").notifications().emailRolesFor(failingCommit));
- assertEquals(ImmutableSet.of("john@dev", "jane@dev"), spec.instance("default").notifications().emailAddressesFor(failingCommit));
- assertEquals(ImmutableSet.of("jane@dev"), spec.instance("default").notifications().emailAddressesFor(failing));
+ assertEquals(ImmutableSet.of(author), spec.requireInstance("default").notifications().emailRolesFor(failing));
+ assertEquals(ImmutableSet.of(author), spec.requireInstance("default").notifications().emailRolesFor(failingCommit));
+ assertEquals(ImmutableSet.of("john@dev", "jane@dev"), spec.requireInstance("default").notifications().emailAddressesFor(failingCommit));
+ assertEquals(ImmutableSet.of("jane@dev"), spec.requireInstance("default").notifications().emailAddressesFor(failing));
}
@Test
@@ -723,11 +745,11 @@ public class DeploymentSpecTest {
);
DeploymentSpec spec = DeploymentSpec.fromXml(r);
- DeploymentInstanceSpec instance1 = spec.instance("instance1");
+ DeploymentInstanceSpec instance1 = spec.requireInstance("instance1");
assertEquals(Set.of(author), instance1.notifications().emailRolesFor(failing));
assertEquals(Set.of("john@operator"), instance1.notifications().emailAddressesFor(failing));
- DeploymentInstanceSpec instance2 = spec.instance("instance2");
+ DeploymentInstanceSpec instance2 = spec.requireInstance("instance2");
assertEquals(Set.of(author), instance2.notifications().emailRolesFor(failingCommit));
assertEquals(Set.of("mary@dev"), instance2.notifications().emailAddressesFor(failingCommit));
}
@@ -752,11 +774,11 @@ public class DeploymentSpecTest {
);
DeploymentSpec spec = DeploymentSpec.fromXml(r);
- DeploymentInstanceSpec instance1 = spec.instance("instance1");
+ DeploymentInstanceSpec instance1 = spec.requireInstance("instance1");
assertEquals(Set.of(author), instance1.notifications().emailRolesFor(failing));
assertEquals(Set.of("john@operator"), instance1.notifications().emailAddressesFor(failing));
- DeploymentInstanceSpec instance2 = spec.instance("instance2");
+ DeploymentInstanceSpec instance2 = spec.requireInstance("instance2");
assertEquals(Set.of(author), instance2.notifications().emailRolesFor(failingCommit));
assertEquals(Set.of("mary@dev"), instance2.notifications().emailAddressesFor(failingCommit));
}
@@ -771,9 +793,9 @@ public class DeploymentSpecTest {
" </prod>" +
" </instance>" +
"</deployment>");
- assertEquals(Optional.of("d-1-4-20"), spec.instance("default").steps().get(0).zones().get(0).testerFlavor());
- assertEquals(Optional.empty(), spec.instance("default").steps().get(1).zones().get(0).testerFlavor());
- assertEquals(Optional.of("d-2-8-50"), spec.instance("default").steps().get(2).zones().get(0).testerFlavor());
+ assertEquals(Optional.of("d-1-4-20"), spec.requireInstance("default").steps().get(0).zones().get(0).testerFlavor());
+ assertEquals(Optional.empty(), spec.requireInstance("default").steps().get(1).zones().get(0).testerFlavor());
+ assertEquals(Optional.of("d-2-8-50"), spec.requireInstance("default").steps().get(2).zones().get(0).testerFlavor());
}
@Test
@@ -781,7 +803,7 @@ public class DeploymentSpecTest {
assertEquals(Collections.emptyList(),
DeploymentSpec.fromXml("<deployment>" +
" <instance id='default'/>" +
- "</deployment>").instance("default").endpoints());
+ "</deployment>").requireInstance("default").endpoints());
}
@Test
@@ -791,7 +813,7 @@ public class DeploymentSpecTest {
" <endpoints/>" +
" </instance>" +
"</deployment>");
- assertEquals(Collections.emptyList(), spec.instance("default").endpoints());
+ assertEquals(Collections.emptyList(), spec.requireInstance("default").endpoints());
}
@Test
@@ -814,15 +836,15 @@ public class DeploymentSpecTest {
assertEquals(
List.of("foo", "nalle", "default"),
- spec.instance("default").endpoints().stream().map(Endpoint::endpointId).collect(Collectors.toList())
+ spec.requireInstance("default").endpoints().stream().map(Endpoint::endpointId).collect(Collectors.toList())
);
assertEquals(
List.of("bar", "frosk", "quux"),
- spec.instance("default").endpoints().stream().map(Endpoint::containerId).collect(Collectors.toList())
+ spec.requireInstance("default").endpoints().stream().map(Endpoint::containerId).collect(Collectors.toList())
);
- assertEquals(Set.of(RegionName.from("us-east")), spec.instance("default").endpoints().get(0).regions());
+ assertEquals(Set.of(RegionName.from("us-east")), spec.requireInstance("default").endpoints().get(0).regions());
}
@Test
@@ -880,7 +902,7 @@ public class DeploymentSpecTest {
}
private static Set<String> endpointRegions(String endpointId, DeploymentSpec spec) {
- return spec.instance("default").endpoints().stream()
+ return spec.requireInstance("default").endpoints().stream()
.filter(endpoint -> endpoint.endpointId().equals(endpointId))
.flatMap(endpoint -> endpoint.regions().stream())
.map(RegionName::value)
@@ -899,7 +921,7 @@ public class DeploymentSpecTest {
" </instance>" +
"</deployment>";
- return DeploymentSpec.fromXml(xml).instance("default").endpoints().stream()
+ return DeploymentSpec.fromXml(xml).requireInstance("default").endpoints().stream()
.map(Endpoint::endpointId)
.collect(Collectors.toList());
}
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 33ef3f4bea8..ad5c6375aa6 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
@@ -40,11 +40,11 @@ public class DeploymentSpecWithoutInstanceTest {
assertEquals(1, spec.steps().size());
assertFalse(spec.majorVersion().isPresent());
assertTrue(spec.steps().get(0).deploysTo(Environment.test));
- assertTrue(spec.instance("default").includes(Environment.test, Optional.empty()));
- assertFalse(spec.instance("default").includes(Environment.test, Optional.of(RegionName.from("region1"))));
- assertFalse(spec.instance("default").includes(Environment.staging, Optional.empty()));
- assertFalse(spec.instance("default").includes(Environment.prod, Optional.empty()));
- assertFalse(spec.instance("default").globalServiceId().isPresent());
+ assertTrue(spec.requireInstance("default").includes(Environment.test, Optional.empty()));
+ assertFalse(spec.requireInstance("default").includes(Environment.test, Optional.of(RegionName.from("region1"))));
+ assertFalse(spec.requireInstance("default").includes(Environment.staging, Optional.empty()));
+ assertFalse(spec.requireInstance("default").includes(Environment.prod, Optional.empty()));
+ assertFalse(spec.requireInstance("default").globalServiceId().isPresent());
}
@Test
@@ -71,13 +71,13 @@ public class DeploymentSpecWithoutInstanceTest {
DeploymentSpec spec = DeploymentSpec.fromXml(r);
assertEquals(2, spec.steps().size());
- assertTrue(spec.instance("default").steps().get(0).deploysTo(Environment.test));
- assertTrue(spec.instance("default").steps().get(1).deploysTo(Environment.staging));
- assertTrue(spec.instance("default").includes(Environment.test, Optional.empty()));
- assertFalse(spec.instance("default").includes(Environment.test, Optional.of(RegionName.from("region1"))));
- assertTrue(spec.instance("default").includes(Environment.staging, Optional.empty()));
- assertFalse(spec.instance("default").includes(Environment.prod, Optional.empty()));
- assertFalse(spec.instance("default").globalServiceId().isPresent());
+ assertTrue(spec.requireInstance("default").steps().get(0).deploysTo(Environment.test));
+ assertTrue(spec.requireInstance("default").steps().get(1).deploysTo(Environment.staging));
+ assertTrue(spec.requireInstance("default").includes(Environment.test, Optional.empty()));
+ assertFalse(spec.requireInstance("default").includes(Environment.test, Optional.of(RegionName.from("region1"))));
+ assertTrue(spec.requireInstance("default").includes(Environment.staging, Optional.empty()));
+ assertFalse(spec.requireInstance("default").includes(Environment.prod, Optional.empty()));
+ assertFalse(spec.requireInstance("default").globalServiceId().isPresent());
}
@Test
@@ -92,27 +92,27 @@ public class DeploymentSpecWithoutInstanceTest {
);
DeploymentSpec spec = DeploymentSpec.fromXml(r);
- assertEquals(4, spec.instance("default").steps().size());
+ assertEquals(4, spec.requireInstance("default").steps().size());
- assertTrue(spec.instance("default").steps().get(0).deploysTo(Environment.test));
+ assertTrue(spec.requireInstance("default").steps().get(0).deploysTo(Environment.test));
- assertTrue(spec.instance("default").steps().get(1).deploysTo(Environment.staging));
+ assertTrue(spec.requireInstance("default").steps().get(1).deploysTo(Environment.staging));
- assertTrue(spec.instance("default").steps().get(2).deploysTo(Environment.prod, Optional.of(RegionName.from("us-east1"))));
- assertFalse(((DeploymentSpec.DeclaredZone)spec.instance("default").steps().get(2)).active());
+ assertTrue(spec.requireInstance("default").steps().get(2).deploysTo(Environment.prod, Optional.of(RegionName.from("us-east1"))));
+ assertFalse(((DeploymentSpec.DeclaredZone)spec.requireInstance("default").steps().get(2)).active());
- assertTrue(spec.instance("default").steps().get(3).deploysTo(Environment.prod, Optional.of(RegionName.from("us-west1"))));
- assertTrue(((DeploymentSpec.DeclaredZone)spec.instance("default").steps().get(3)).active());
+ assertTrue(spec.requireInstance("default").steps().get(3).deploysTo(Environment.prod, Optional.of(RegionName.from("us-west1"))));
+ assertTrue(((DeploymentSpec.DeclaredZone)spec.requireInstance("default").steps().get(3)).active());
- assertTrue(spec.instance("default").includes(Environment.test, Optional.empty()));
- assertFalse(spec.instance("default").includes(Environment.test, Optional.of(RegionName.from("region1"))));
- assertTrue(spec.instance("default").includes(Environment.staging, Optional.empty()));
- assertTrue(spec.instance("default").includes(Environment.prod, Optional.of(RegionName.from("us-east1"))));
- assertTrue(spec.instance("default").includes(Environment.prod, Optional.of(RegionName.from("us-west1"))));
- assertFalse(spec.instance("default").includes(Environment.prod, Optional.of(RegionName.from("no-such-region"))));
- assertFalse(spec.instance("default").globalServiceId().isPresent());
+ assertTrue(spec.requireInstance("default").includes(Environment.test, Optional.empty()));
+ assertFalse(spec.requireInstance("default").includes(Environment.test, Optional.of(RegionName.from("region1"))));
+ assertTrue(spec.requireInstance("default").includes(Environment.staging, Optional.empty()));
+ assertTrue(spec.requireInstance("default").includes(Environment.prod, Optional.of(RegionName.from("us-east1"))));
+ assertTrue(spec.requireInstance("default").includes(Environment.prod, Optional.of(RegionName.from("us-west1"))));
+ assertFalse(spec.requireInstance("default").includes(Environment.prod, Optional.of(RegionName.from("no-such-region"))));
+ assertFalse(spec.requireInstance("default").globalServiceId().isPresent());
- assertEquals(DeploymentSpec.UpgradePolicy.defaultPolicy, spec.instance("default").upgradePolicy());
+ assertEquals(DeploymentSpec.UpgradePolicy.defaultPolicy, spec.requireInstance("default").upgradePolicy());
}
@Test
@@ -130,29 +130,29 @@ public class DeploymentSpecWithoutInstanceTest {
);
DeploymentSpec spec = DeploymentSpec.fromXml(r);
- assertEquals(5, spec.instance("default").steps().size());
- assertEquals(4, spec.instance("default").zones().size());
+ assertEquals(5, spec.requireInstance("default").steps().size());
+ assertEquals(4, spec.requireInstance("default").zones().size());
- assertTrue(spec.instance("default").steps().get(0).deploysTo(Environment.test));
+ assertTrue(spec.requireInstance("default").steps().get(0).deploysTo(Environment.test));
- assertTrue(spec.instance("default").steps().get(1).deploysTo(Environment.staging));
+ assertTrue(spec.requireInstance("default").steps().get(1).deploysTo(Environment.staging));
- assertTrue(spec.instance("default").steps().get(2).deploysTo(Environment.prod, Optional.of(RegionName.from("us-east1"))));
- assertFalse(((DeploymentSpec.DeclaredZone)spec.instance("default").steps().get(2)).active());
+ assertTrue(spec.requireInstance("default").steps().get(2).deploysTo(Environment.prod, Optional.of(RegionName.from("us-east1"))));
+ assertFalse(((DeploymentSpec.DeclaredZone)spec.requireInstance("default").steps().get(2)).active());
- assertTrue(spec.instance("default").steps().get(3) instanceof DeploymentSpec.Delay);
- assertEquals(3 * 60 * 60 + 30 * 60, spec.instance("default").steps().get(3).delay().getSeconds());
+ assertTrue(spec.requireInstance("default").steps().get(3) instanceof DeploymentSpec.Delay);
+ assertEquals(3 * 60 * 60 + 30 * 60, spec.requireInstance("default").steps().get(3).delay().getSeconds());
- assertTrue(spec.instance("default").steps().get(4).deploysTo(Environment.prod, Optional.of(RegionName.from("us-west1"))));
- assertTrue(((DeploymentSpec.DeclaredZone)spec.instance("default").steps().get(4)).active());
+ assertTrue(spec.requireInstance("default").steps().get(4).deploysTo(Environment.prod, Optional.of(RegionName.from("us-west1"))));
+ assertTrue(((DeploymentSpec.DeclaredZone)spec.requireInstance("default").steps().get(4)).active());
- assertTrue(spec.instance("default").includes(Environment.test, Optional.empty()));
- assertFalse(spec.instance("default").includes(Environment.test, Optional.of(RegionName.from("region1"))));
- assertTrue(spec.instance("default").includes(Environment.staging, Optional.empty()));
- assertTrue(spec.instance("default").includes(Environment.prod, Optional.of(RegionName.from("us-east1"))));
- assertTrue(spec.instance("default").includes(Environment.prod, Optional.of(RegionName.from("us-west1"))));
- assertFalse(spec.instance("default").includes(Environment.prod, Optional.of(RegionName.from("no-such-region"))));
- assertFalse(spec.instance("default").globalServiceId().isPresent());
+ assertTrue(spec.requireInstance("default").includes(Environment.test, Optional.empty()));
+ assertFalse(spec.requireInstance("default").includes(Environment.test, Optional.of(RegionName.from("region1"))));
+ assertTrue(spec.requireInstance("default").includes(Environment.staging, Optional.empty()));
+ assertTrue(spec.requireInstance("default").includes(Environment.prod, Optional.of(RegionName.from("us-east1"))));
+ assertTrue(spec.requireInstance("default").includes(Environment.prod, Optional.of(RegionName.from("us-west1"))));
+ assertFalse(spec.requireInstance("default").includes(Environment.prod, Optional.of(RegionName.from("no-such-region"))));
+ assertFalse(spec.requireInstance("default").globalServiceId().isPresent());
}
@Test
@@ -167,7 +167,7 @@ public class DeploymentSpecWithoutInstanceTest {
);
DeploymentSpec spec = DeploymentSpec.fromXml(r);
- assertEquals(spec.instance("default").globalServiceId(), Optional.of("query"));
+ assertEquals(spec.requireInstance("default").globalServiceId(), Optional.of("query"));
}
@Test(expected=IllegalArgumentException.class)
@@ -205,7 +205,7 @@ public class DeploymentSpecWithoutInstanceTest {
);
DeploymentSpec spec = DeploymentSpec.fromXml(r);
- assertEquals("qrs", spec.instance("default").globalServiceId().get());
+ assertEquals("qrs", spec.requireInstance("default").globalServiceId().get());
}
@Test
@@ -222,7 +222,7 @@ public class DeploymentSpecWithoutInstanceTest {
);
DeploymentSpec spec = DeploymentSpec.fromXml(r);
- assertEquals("canary", spec.instance("default").upgradePolicy().toString());
+ assertEquals("canary", spec.requireInstance("default").upgradePolicy().toString());
}
@Test
@@ -251,7 +251,7 @@ public class DeploymentSpecWithoutInstanceTest {
@Test
public void testEmpty() {
- assertFalse(DeploymentSpec.empty.instance("default").globalServiceId().isPresent());
+ assertFalse(DeploymentSpec.empty.requireInstance("default").globalServiceId().isPresent());
assertEquals(DeploymentSpec.UpgradePolicy.defaultPolicy, DeploymentSpec.empty.upgradePolicy());
assertTrue(DeploymentSpec.empty.steps().isEmpty());
assertEquals("<deployment version='1.0'/>", DeploymentSpec.empty.xmlForm());
@@ -271,7 +271,7 @@ public class DeploymentSpecWithoutInstanceTest {
"</deployment>"
);
DeploymentSpec spec = DeploymentSpec.fromXml(r);
- DeploymentSpec.ParallelZones parallelZones = ((DeploymentSpec.ParallelZones) spec.instance("default").steps().get(3));
+ DeploymentSpec.ParallelZones parallelZones = ((DeploymentSpec.ParallelZones) spec.requireInstance("default").steps().get(3));
assertEquals(2, parallelZones.zones().size());
assertEquals(RegionName.from("us-central-1"), parallelZones.zones().get(0).region().get());
assertEquals(RegionName.from("us-east-3"), parallelZones.zones().get(1).region().get());
@@ -339,23 +339,23 @@ public class DeploymentSpecWithoutInstanceTest {
"</deployment>"
);
DeploymentSpec spec = DeploymentSpec.fromXml(r);
- assertEquals(2, spec.instance("default").changeBlocker().size());
- assertTrue(spec.instance("default").changeBlocker().get(0).blocksVersions());
- assertFalse(spec.instance("default").changeBlocker().get(0).blocksRevisions());
- assertEquals(ZoneId.of("UTC"), spec.instance("default").changeBlocker().get(0).window().zone());
-
- assertTrue(spec.instance("default").changeBlocker().get(1).blocksVersions());
- assertTrue(spec.instance("default").changeBlocker().get(1).blocksRevisions());
- assertEquals(ZoneId.of("CET"), spec.instance("default").changeBlocker().get(1).window().zone());
-
- assertTrue(spec.instance("default").canUpgradeAt(Instant.parse("2017-09-18T14:15:30.00Z")));
- assertFalse(spec.instance("default").canUpgradeAt(Instant.parse("2017-09-18T15:15:30.00Z")));
- assertFalse(spec.instance("default").canUpgradeAt(Instant.parse("2017-09-18T16:15:30.00Z")));
- assertTrue(spec.instance("default").canUpgradeAt(Instant.parse("2017-09-18T17:15:30.00Z")));
-
- assertTrue(spec.instance("default").canUpgradeAt(Instant.parse("2017-09-23T09:15:30.00Z")));
- assertFalse(spec.instance("default").canUpgradeAt(Instant.parse("2017-09-23T08:15:30.00Z"))); // 10 in CET
- assertTrue(spec.instance("default").canUpgradeAt(Instant.parse("2017-09-23T10:15:30.00Z")));
+ assertEquals(2, spec.requireInstance("default").changeBlocker().size());
+ assertTrue(spec.requireInstance("default").changeBlocker().get(0).blocksVersions());
+ assertFalse(spec.requireInstance("default").changeBlocker().get(0).blocksRevisions());
+ assertEquals(ZoneId.of("UTC"), spec.requireInstance("default").changeBlocker().get(0).window().zone());
+
+ assertTrue(spec.requireInstance("default").changeBlocker().get(1).blocksVersions());
+ assertTrue(spec.requireInstance("default").changeBlocker().get(1).blocksRevisions());
+ assertEquals(ZoneId.of("CET"), spec.requireInstance("default").changeBlocker().get(1).window().zone());
+
+ assertTrue(spec.requireInstance("default").canUpgradeAt(Instant.parse("2017-09-18T14:15:30.00Z")));
+ assertFalse(spec.requireInstance("default").canUpgradeAt(Instant.parse("2017-09-18T15:15:30.00Z")));
+ assertFalse(spec.requireInstance("default").canUpgradeAt(Instant.parse("2017-09-18T16:15:30.00Z")));
+ assertTrue(spec.requireInstance("default").canUpgradeAt(Instant.parse("2017-09-18T17:15:30.00Z")));
+
+ assertTrue(spec.requireInstance("default").canUpgradeAt(Instant.parse("2017-09-23T09:15:30.00Z")));
+ assertFalse(spec.requireInstance("default").canUpgradeAt(Instant.parse("2017-09-23T08:15:30.00Z"))); // 10 in CET
+ assertTrue(spec.requireInstance("default").canUpgradeAt(Instant.parse("2017-09-23T10:15:30.00Z")));
}
@Test
@@ -368,8 +368,8 @@ public class DeploymentSpecWithoutInstanceTest {
"</deployment>"
);
DeploymentSpec spec = DeploymentSpec.fromXml(r);
- assertEquals(spec.instance("default").athenzDomain().get().value(), "domain");
- assertEquals(spec.instance("default").athenzService(Environment.prod, RegionName.from("us-west-1")).get().value(), "service");
+ assertEquals(spec.requireInstance("default").athenzDomain().get().value(), "domain");
+ assertEquals(spec.requireInstance("default").athenzService(Environment.prod, RegionName.from("us-west-1")).get().value(), "service");
}
@Test
@@ -383,8 +383,8 @@ public class DeploymentSpecWithoutInstanceTest {
"</deployment>"
);
DeploymentSpec spec = DeploymentSpec.fromXml(r);
- assertEquals(spec.instance("default").athenzDomain().get().value(), "domain");
- assertEquals(spec.instance("default").athenzService(Environment.prod, RegionName.from("us-west-1")).get().value(), "prod-service");
+ assertEquals(spec.requireInstance("default").athenzDomain().get().value(), "domain");
+ assertEquals(spec.requireInstance("default").athenzService(Environment.prod, RegionName.from("us-west-1")).get().value(), "prod-service");
}
@Test(expected = IllegalArgumentException.class)
@@ -414,7 +414,7 @@ public class DeploymentSpecWithoutInstanceTest {
@Test
public void noNotifications() {
assertEquals(Notifications.none(),
- DeploymentSpec.fromXml("<deployment />").instance("default").notifications());
+ DeploymentSpec.fromXml("<deployment />").requireInstance("default").notifications());
}
@Test
@@ -422,7 +422,7 @@ public class DeploymentSpecWithoutInstanceTest {
DeploymentSpec spec = DeploymentSpec.fromXml("<deployment>\n" +
" <notifications />" +
"</deployment>");
- assertEquals(Notifications.none(), spec.instance("default").notifications());
+ assertEquals(Notifications.none(), spec.requireInstance("default").notifications());
}
@Test
@@ -434,10 +434,10 @@ public class DeploymentSpecWithoutInstanceTest {
" <email address=\"jane@dev\"/>\n" +
" </notifications>\n" +
"</deployment>");
- assertEquals(ImmutableSet.of(author), spec.instance("default").notifications().emailRolesFor(failing));
- assertEquals(ImmutableSet.of(author), spec.instance("default").notifications().emailRolesFor(failingCommit));
- assertEquals(ImmutableSet.of("john@dev", "jane@dev"), spec.instance("default").notifications().emailAddressesFor(failingCommit));
- assertEquals(ImmutableSet.of("jane@dev"), spec.instance("default").notifications().emailAddressesFor(failing));
+ assertEquals(ImmutableSet.of(author), spec.requireInstance("default").notifications().emailRolesFor(failing));
+ assertEquals(ImmutableSet.of(author), spec.requireInstance("default").notifications().emailRolesFor(failingCommit));
+ assertEquals(ImmutableSet.of("john@dev", "jane@dev"), spec.requireInstance("default").notifications().emailAddressesFor(failingCommit));
+ assertEquals(ImmutableSet.of("jane@dev"), spec.requireInstance("default").notifications().emailAddressesFor(failing));
}
@Test
@@ -448,20 +448,20 @@ public class DeploymentSpecWithoutInstanceTest {
" <region active=\"false\">us-north-7</region>\n" +
" </prod>\n" +
"</deployment>");
- assertEquals(Optional.of("d-1-4-20"), spec.instance("default").steps().get(0).zones().get(0).testerFlavor());
- assertEquals(Optional.empty(), spec.instance("default").steps().get(1).zones().get(0).testerFlavor());
- assertEquals(Optional.of("d-2-8-50"), spec.instance("default").steps().get(2).zones().get(0).testerFlavor());
+ assertEquals(Optional.of("d-1-4-20"), spec.requireInstance("default").steps().get(0).zones().get(0).testerFlavor());
+ assertEquals(Optional.empty(), spec.requireInstance("default").steps().get(1).zones().get(0).testerFlavor());
+ assertEquals(Optional.of("d-2-8-50"), spec.requireInstance("default").steps().get(2).zones().get(0).testerFlavor());
}
@Test
public void noEndpoints() {
- assertEquals(Collections.emptyList(), DeploymentSpec.fromXml("<deployment />").instance("default").endpoints());
+ assertEquals(Collections.emptyList(), DeploymentSpec.fromXml("<deployment />").requireInstance("default").endpoints());
}
@Test
public void emptyEndpoints() {
var spec = DeploymentSpec.fromXml("<deployment><endpoints/></deployment>");
- assertEquals(Collections.emptyList(), spec.instance("default").endpoints());
+ assertEquals(Collections.emptyList(), spec.requireInstance("default").endpoints());
}
@Test
@@ -482,15 +482,15 @@ public class DeploymentSpecWithoutInstanceTest {
assertEquals(
List.of("foo", "nalle", "default"),
- spec.instance("default").endpoints().stream().map(Endpoint::endpointId).collect(Collectors.toList())
+ spec.requireInstance("default").endpoints().stream().map(Endpoint::endpointId).collect(Collectors.toList())
);
assertEquals(
List.of("bar", "frosk", "quux"),
- spec.instance("default").endpoints().stream().map(Endpoint::containerId).collect(Collectors.toList())
+ spec.requireInstance("default").endpoints().stream().map(Endpoint::containerId).collect(Collectors.toList())
);
- assertEquals(Set.of(RegionName.from("us-east")), spec.instance("default").endpoints().get(0).regions());
+ assertEquals(Set.of(RegionName.from("us-east")), spec.requireInstance("default").endpoints().get(0).regions());
}
@Test
@@ -516,7 +516,7 @@ public class DeploymentSpecWithoutInstanceTest {
}
private static Set<String> endpointRegions(String endpointId, DeploymentSpec spec) {
- return spec.instance("default").endpoints().stream()
+ return spec.requireInstance("default").endpoints().stream()
.filter(endpoint -> endpoint.endpointId().equals(endpointId))
.flatMap(endpoint -> endpoint.regions().stream())
.map(RegionName::value)