From 4e0a41a07ef38411e38a6a846bb4282fca54846a Mon Sep 17 00:00:00 2001 From: Harald Musum Date: Thu, 9 Nov 2017 07:51:41 +0100 Subject: Revert "Remove configserver-app magic include" --- .../xml/ConfigServerContainerModelBuilder.java | 26 ++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) (limited to 'config-model') 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 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 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); + } + } + } } -- cgit v1.2.3