summaryrefslogtreecommitdiffstats
path: root/config-model-api
diff options
context:
space:
mode:
authorJon Marius Venstad <venstad@gmail.com>2020-05-28 21:05:55 +0200
committerJon Marius Venstad <venstad@gmail.com>2020-05-28 21:05:55 +0200
commit57d19fab47444292cb4d9a87d5f8a3c4b4da5dee (patch)
tree2fea8eed09a465192f9519066c35c98cf2523416 /config-model-api
parent482ad2d6f959149531a8dd9ecef5b540f14b430d (diff)
Fix check for whether instance is empty
Diffstat (limited to 'config-model-api')
-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.java18
-rw-r--r--config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecWithoutInstanceTest.java1
3 files changed, 28 insertions, 1 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 6519a6f50af..48a675fa182 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
@@ -45,6 +45,7 @@ import java.util.stream.Stream;
*/
public class DeploymentSpecXmlReader {
+ private static final String deploymentTag = "deployment";
private static final String instanceTag = "instance";
private static final String majorVersionTag = "major-version";
private static final String testTag = "test";
@@ -93,6 +94,9 @@ public class DeploymentSpecXmlReader {
/** Reads a deployment spec from XML */
public DeploymentSpec read(String xmlForm) {
Element root = XML.getDocument(xmlForm).getDocumentElement();
+ if ( ! root.getTagName().equals(deploymentTag))
+ throw new IllegalArgumentException("The root tag must be <deployment>");
+
if (isEmptySpec(root))
return DeploymentSpec.empty;
@@ -133,7 +137,11 @@ public class DeploymentSpecXmlReader {
Element instanceTag,
MutableOptional<String> globalServiceId,
Element parentTag) {
- if (isEmptySpec(instanceTag))
+ if (instanceNameString.isBlank())
+ throw new IllegalArgumentException("<instance> attribute 'id' must be specified, and not be blank");
+
+ // If this is an absolutely empty instance, or the implicit "default" instance but without content, ignore it
+ if (XML.getChildren(instanceTag).isEmpty() && (instanceTag.getAttributes().getLength() == 0 || instanceTag == parentTag))
return List.of();
if (validate)
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 efaf90e1eed..a793630c8b9 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;
@@ -422,6 +423,23 @@ public class DeploymentSpecTest {
}
@Test
+ public void testOnlyAthenzServiceDefinedInInstance() {
+ StringReader r = new StringReader(
+ "<deployment athenz-domain='domain'>" +
+ " <instance id='default' athenz-service='service' />" +
+ "</deployment>"
+ );
+ DeploymentSpec spec = DeploymentSpec.fromXml(r);
+
+ assertEquals("domain", spec.athenzDomain().get().value());
+ assertEquals(1, spec.instances().size());
+
+ DeploymentInstanceSpec instance = spec.instances().get(0);
+ assertEquals("default", instance.name().value());
+ assertEquals("service", instance.athenzService(Environment.prod, RegionName.defaultName()).get().value());
+ }
+
+ @Test
public void productionSpecWithParallelDeployments() {
StringReader r = new StringReader(
"<deployment>" +
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 79a425f5e26..89972773e1c 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
@@ -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;