aboutsummaryrefslogtreecommitdiffstats
path: root/config-application-package
diff options
context:
space:
mode:
authorArne H Juul <arnej@yahooinc.com>2022-01-04 17:23:34 +0000
committerArne H Juul <arnej@yahooinc.com>2022-01-06 15:24:03 +0000
commitbba2f4139058e75526df4241b61176cbd7467696 (patch)
treed407ebac120950546d62f1eb80f9f60339b61c75 /config-application-package
parent2c88a54c47539558ea77010fd523febe52cc954c (diff)
pick up "legacy" XML tags from services.xml
Diffstat (limited to 'config-application-package')
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/model/application/AbstractApplicationPackage.java44
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java3
-rw-r--r--config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationPackageTest.java10
-rw-r--r--config-application-package/src/test/resources/app-legacy-overrides/hosts.xml10
-rw-r--r--config-application-package/src/test/resources/app-legacy-overrides/schemas/music.sd8
-rw-r--r--config-application-package/src/test/resources/app-legacy-overrides/services.xml16
6 files changed, 90 insertions, 1 deletions
diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/AbstractApplicationPackage.java b/config-application-package/src/main/java/com/yahoo/config/model/application/AbstractApplicationPackage.java
new file mode 100644
index 00000000000..c616784c7be
--- /dev/null
+++ b/config-application-package/src/main/java/com/yahoo/config/model/application/AbstractApplicationPackage.java
@@ -0,0 +1,44 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.config.model.application;
+
+import com.yahoo.config.application.api.ApplicationPackage;
+import com.yahoo.config.application.Xml;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import java.util.Map;
+import java.util.HashMap;
+
+/**
+ * Common code for all implementations of ApplicationPackage
+ *
+ * @author arnej
+ */
+public abstract class AbstractApplicationPackage implements ApplicationPackage {
+
+ @Override
+ public Map<String,String> legacyOverrides() {
+ Map<String, String> result = new HashMap<>();
+ try {
+ Document services = Xml.getDocument(getServices());
+ NodeList legacyNodes = services.getElementsByTagName("legacy");
+ for (int i=0; i < legacyNodes.getLength(); i++) {
+ var flagNodes = legacyNodes.item(i).getChildNodes();
+ for (int j = 0; j < flagNodes.getLength(); ++j) {
+ var flagNode = flagNodes.item(j);
+ if (flagNode.getNodeType() == Node.ELEMENT_NODE) {
+ String key = flagNode.getNodeName();
+ String value = flagNode.getTextContent();
+ result.put(key, value);
+ }
+ }
+ }
+ } catch (Exception e) {
+ // nothing: This method does not validate that services.xml exists, or that it is valid xml.
+ }
+ return result;
+ }
+
+}
diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java
index 1223f438029..4cde4e7afaa 100644
--- a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java
+++ b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java
@@ -18,6 +18,7 @@ import com.yahoo.config.provision.ApplicationName;
import com.yahoo.config.provision.InstanceName;
import com.yahoo.config.provision.TenantName;
import com.yahoo.config.provision.Zone;
+import com.yahoo.config.model.application.AbstractApplicationPackage;
import com.yahoo.io.HexDump;
import com.yahoo.io.IOUtils;
import com.yahoo.io.reader.NamedReader;
@@ -72,7 +73,7 @@ import static com.yahoo.text.Lowercase.toLowerCase;
*
* @author Vegard Havdal
*/
-public class FilesApplicationPackage implements ApplicationPackage {
+public class FilesApplicationPackage extends AbstractApplicationPackage {
/**
* The name of the subdirectory (below the original application package root)
diff --git a/config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationPackageTest.java b/config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationPackageTest.java
index ec68ed73864..ae6f9373e16 100644
--- a/config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationPackageTest.java
+++ b/config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationPackageTest.java
@@ -103,6 +103,16 @@ public class FilesApplicationPackageTest {
}
@Test
+ public void testLegacyOverrides() throws IOException {
+ File appDir = new File("src/test/resources/app-legacy-overrides");
+ ApplicationPackage app = FilesApplicationPackage.fromFile(appDir);
+ var overrides = app.legacyOverrides();
+ assertEquals(2, overrides.size());
+ assertEquals("something here", overrides.get("foo-bar"));
+ assertEquals("false", overrides.get("v7-geo-positions"));
+ }
+
+ @Test
public void failOnEmptyServicesXml() throws IOException {
File appDir = temporaryFolder.newFolder();
IOUtils.copyDirectory(new File("src/test/resources/multienvapp"), appDir);
diff --git a/config-application-package/src/test/resources/app-legacy-overrides/hosts.xml b/config-application-package/src/test/resources/app-legacy-overrides/hosts.xml
new file mode 100644
index 00000000000..64a07644038
--- /dev/null
+++ b/config-application-package/src/test/resources/app-legacy-overrides/hosts.xml
@@ -0,0 +1,10 @@
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<hosts xmlns:deploy="vespa" xmlns:preprocess="properties">
+ <preprocess:properties>
+ <node1.hostname>foo.yahoo.com</node1.hostname>
+ <node1.hostname deploy:environment="dev">bar.yahoo.com</node1.hostname>
+ </preprocess:properties>
+ <host name="${node1.hostname}">
+ <alias>node1</alias>
+ </host>
+</hosts>
diff --git a/config-application-package/src/test/resources/app-legacy-overrides/schemas/music.sd b/config-application-package/src/test/resources/app-legacy-overrides/schemas/music.sd
new file mode 100644
index 00000000000..7da7c49c162
--- /dev/null
+++ b/config-application-package/src/test/resources/app-legacy-overrides/schemas/music.sd
@@ -0,0 +1,8 @@
+# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+search music {
+ document music {
+ field f type string {
+ indexing: index | summary
+ }
+ }
+}
diff --git a/config-application-package/src/test/resources/app-legacy-overrides/services.xml b/config-application-package/src/test/resources/app-legacy-overrides/services.xml
new file mode 100644
index 00000000000..5f8201336ef
--- /dev/null
+++ b/config-application-package/src/test/resources/app-legacy-overrides/services.xml
@@ -0,0 +1,16 @@
+<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<services version='1.0'>
+ <legacy>
+ <foo-bar>something here</foo-bar>
+ <v7-geo-positions>false</v7-geo-positions>
+ </legacy>
+ <admin version='2.0'>
+ <adminserver hostalias='node0'/>
+ </admin>
+ <content version='1.0' id='foo'>
+ <redundancy>1</redundancy>
+ <documents>
+ <document type="music.sd" mode="index" />
+ </documents>
+ </content>
+</services>