summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorHarald Musum <musum@yahoo-inc.com>2017-11-09 07:51:41 +0100
committerGitHub <noreply@github.com>2017-11-09 07:51:41 +0100
commit4e0a41a07ef38411e38a6a846bb4282fca54846a (patch)
treee30e7c3a4fd4836cdc63c6214dc7044cb0ccb201 /config-model
parent782fca3604665eb5b29fefb0f97b8d856c627ff3 (diff)
Revert "Remove configserver-app magic include"
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/ConfigServerContainerModelBuilder.java26
1 files changed, 24 insertions, 2 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ConfigServerContainerModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ConfigServerContainerModelBuilder.java
index 6efd2f5b9a7..4004d72c808 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ConfigServerContainerModelBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ConfigServerContainerModelBuilder.java
@@ -1,11 +1,17 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.xml;
+import com.yahoo.config.application.Xml;
+import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.model.ConfigModelContext;
+import com.yahoo.path.Path;
import com.yahoo.vespa.model.container.ContainerModel;
import com.yahoo.vespa.model.container.configserver.ConfigserverCluster;
import com.yahoo.vespa.model.container.configserver.option.CloudConfigOptions;
import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import java.util.List;
/**
* Builds the config model for the standalone config server.
@@ -15,18 +21,34 @@ import org.w3c.dom.Element;
public class ConfigServerContainerModelBuilder extends ContainerModelBuilder {
private final CloudConfigOptions options;
+ private final static String HOSTED_VESPA_INCLUDE_DIR = "hosted-vespa";
public ConfigServerContainerModelBuilder(CloudConfigOptions options) {
super(true, Networking.enable);
this.options = options;
}
+
@Override
public void doBuild(ContainerModel model, Element spec, ConfigModelContext modelContext) {
- ConfigserverCluster cluster = new ConfigserverCluster(modelContext.getParentProducer(), "configserver",
- options);
+ ApplicationPackage app = modelContext.getDeployState().getApplicationPackage();
+ if ( ! app.getFiles(Path.fromString(HOSTED_VESPA_INCLUDE_DIR), ".xml").isEmpty()) {
+ app.validateIncludeDir(HOSTED_VESPA_INCLUDE_DIR);
+ List<Element> configModelElements = Xml.allElemsFromPath(app, HOSTED_VESPA_INCLUDE_DIR);
+ mergeInto(spec, configModelElements);
+ }
+
+ ConfigserverCluster cluster = new ConfigserverCluster(modelContext.getParentProducer(), "configserver", options);
super.doBuild(model, spec, modelContext.withParent(cluster));
cluster.setContainerCluster(model.getCluster());
}
+ private void mergeInto(Element destination, List<Element> configModelElements) {
+ for (Element jdiscElement: configModelElements) {
+ for (Node child = jdiscElement.getFirstChild(); child != null; child = child.getNextSibling()) {
+ Node copiedNode = destination.getOwnerDocument().importNode(child, true);
+ destination.appendChild(copiedNode);
+ }
+ }
+ }
}