aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2024-05-31 15:04:30 +0200
committerGitHub <noreply@github.com>2024-05-31 15:04:30 +0200
commit033b651794336bf448238584b25f9549d620bc73 (patch)
tree90554a2d284ca439704f4fe39d44ecdb696a56f6
parenta47916388fc73d3d3fd2af66e882857c1932bd9c (diff)
parentccc3650df9cb87f9810826c7b88323306282357d (diff)
Merge pull request #31379 from vespa-engine/jonmv/apply-tags-only-when-matching-environment-or-implicit-prod
Match XML tags directive only with environment match (or implicit prod)
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/application/OverrideProcessor.java4
-rw-r--r--config-application-package/src/test/java/com/yahoo/config/application/HostedOverrideProcessorTagsTest.java52
2 files changed, 54 insertions, 2 deletions
diff --git a/config-application-package/src/main/java/com/yahoo/config/application/OverrideProcessor.java b/config-application-package/src/main/java/com/yahoo/config/application/OverrideProcessor.java
index 5f2046b1450..fe4c0af06d6 100644
--- a/config-application-package/src/main/java/com/yahoo/config/application/OverrideProcessor.java
+++ b/config-application-package/src/main/java/com/yahoo/config/application/OverrideProcessor.java
@@ -194,6 +194,10 @@ class OverrideProcessor implements PreProcessor {
if ( ! elementTags.isEmpty()) { // match tags
if ( ! elementTags.intersects(tags)) return false;
+ // Tags are set on instances. Having a tag match for a deployment to a non-prod environment
+ // disables the usual downscaling of the cluster, which is surprising. We therefore either
+ // require the tags match to either also match an environment directive, or the implicit prod.
+ if (elementEnvironments.isEmpty() && environment != Environment.prod) return false;
}
return true;
diff --git a/config-application-package/src/test/java/com/yahoo/config/application/HostedOverrideProcessorTagsTest.java b/config-application-package/src/test/java/com/yahoo/config/application/HostedOverrideProcessorTagsTest.java
index 0cdbed3999c..7190b25965f 100644
--- a/config-application-package/src/test/java/com/yahoo/config/application/HostedOverrideProcessorTagsTest.java
+++ b/config-application-package/src/test/java/com/yahoo/config/application/HostedOverrideProcessorTagsTest.java
@@ -22,7 +22,7 @@ public class HostedOverrideProcessorTagsTest {
"<services xmlns:deploy='vespa' xmlns:preprocess='?' version='1.0'>" +
" <container id='foo' version='1.0'>" +
" <nodes count='5' deploy:tags='a' deploy:environment='perf'/>" +
- " <nodes count='10' deploy:tags='a b'/>" +
+ " <nodes count='10' deploy:tags='a b' deploy:environment='prod dev'/>" +
" <nodes count='20' deploy:tags='c'/>" +
" <search deploy:tags='b'/>" +
" <document-api deploy:tags='d'/>" +
@@ -62,6 +62,38 @@ public class HostedOverrideProcessorTagsTest {
}
@Test
+ public void testParsingTagATest() throws TransformerException {
+ String expected =
+ "<?xml version='1.0' encoding='UTF-8' standalone='no'?>" +
+ "<services xmlns:deploy='vespa' xmlns:preprocess='?' version='1.0'>" +
+ " <container id='foo' version='1.0'>" +
+ " " + // (╭ರ_•́)
+ " </container>" +
+ "</services>";
+ assertOverride(InstanceName.defaultName(),
+ Environment.test,
+ RegionName.defaultName(),
+ Tags.fromString("a"),
+ expected);
+ }
+
+ @Test
+ public void testParsingTagADev() throws TransformerException {
+ String expected =
+ "<?xml version='1.0' encoding='UTF-8' standalone='no'?>" +
+ "<services xmlns:deploy='vespa' xmlns:preprocess='?' version='1.0'>" +
+ " <container id='foo' version='1.0'>" +
+ " <nodes count='10' required='true'/>" +
+ " </container>" +
+ "</services>";
+ assertOverride(InstanceName.defaultName(),
+ Environment.dev,
+ RegionName.defaultName(),
+ Tags.fromString("a"),
+ expected);
+ }
+
+ @Test
public void testParsingTagB() throws TransformerException {
String expected =
"<?xml version='1.0' encoding='UTF-8' standalone='no'?>" +
@@ -79,7 +111,7 @@ public class HostedOverrideProcessorTagsTest {
}
@Test
- public void testParsingTagC() throws TransformerException {
+ public void testParsingTagCProd() throws TransformerException {
String expected =
"<?xml version='1.0' encoding='UTF-8' standalone='no'?>" +
"<services xmlns:deploy='vespa' xmlns:preprocess='?' version='1.0'>" +
@@ -95,6 +127,22 @@ public class HostedOverrideProcessorTagsTest {
}
@Test
+ public void testParsingTagCDev() throws TransformerException {
+ String expected =
+ "<?xml version='1.0' encoding='UTF-8' standalone='no'?>" +
+ "<services xmlns:deploy='vespa' xmlns:preprocess='?' version='1.0'>" +
+ " <container id='foo' version='1.0'>" +
+ " " + // (╭ರ_•́)
+ " </container>" +
+ "</services>";
+ assertOverride(InstanceName.defaultName(),
+ Environment.dev,
+ RegionName.defaultName(),
+ Tags.fromString("c"),
+ expected);
+ }
+
+ @Test
public void testParsingTagCAndD() throws TransformerException {
String expected =
"<?xml version='1.0' encoding='UTF-8' standalone='no'?>" +