Repository: knox Updated Branches: refs/heads/master cc2821d70 -> f422f016b
KNOX-1357 - Add configurable list of AutoDeploy topologies to deploy on server start Project: http://git-wip-us.apache.org/repos/asf/knox/repo Commit: http://git-wip-us.apache.org/repos/asf/knox/commit/f422f016 Tree: http://git-wip-us.apache.org/repos/asf/knox/tree/f422f016 Diff: http://git-wip-us.apache.org/repos/asf/knox/diff/f422f016 Branch: refs/heads/master Commit: f422f016b15b20b53f5e1b7f748922780149cf1a Parents: cc2821d Author: Larry McCay <[email protected]> Authored: Thu Jun 14 12:51:24 2018 -0400 Committer: Larry McCay <[email protected]> Committed: Thu Jun 14 12:51:24 2018 -0400 ---------------------------------------------------------------------- .../java/org/apache/knox/gateway/GatewayServer.java | 7 +++++++ .../knox/gateway/config/impl/GatewayConfigImpl.java | 15 +++++++++++++++ .../apache/knox/gateway/config/GatewayConfig.java | 9 +++++++++ .../org/apache/knox/gateway/GatewayTestConfig.java | 8 ++++++++ 4 files changed, 39 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/knox/blob/f422f016/gateway-server/src/main/java/org/apache/knox/gateway/GatewayServer.java ---------------------------------------------------------------------- diff --git a/gateway-server/src/main/java/org/apache/knox/gateway/GatewayServer.java b/gateway-server/src/main/java/org/apache/knox/gateway/GatewayServer.java index 2d6011e..fc92f48 100644 --- a/gateway-server/src/main/java/org/apache/knox/gateway/GatewayServer.java +++ b/gateway-server/src/main/java/org/apache/knox/gateway/GatewayServer.java @@ -549,11 +549,18 @@ public class GatewayServer { "org.eclipse.jetty.annotations.AnnotationConfiguration" ); // Load the current topologies. + // Redeploy autodeploy topologies. File topologiesDir = calculateAbsoluteTopologiesDir(); log.loadingTopologiesFromDirectory(topologiesDir.getAbsolutePath()); monitor = services.getService(GatewayServices.TOPOLOGY_SERVICE); monitor.addTopologyChangeListener(listener); monitor.reloadTopologies(); + List<String> autoDeploys = config.getAutoDeployTopologyNames(); + if (autoDeploys != null) { + for (String topologyName : autoDeploys) { + monitor.redeployTopologies(topologyName); + } + } final Collection<Topology> topologies = monitor.getTopologies(); final Map<String, Integer> topologyPortMap = config.getGatewayPortMappings(); http://git-wip-us.apache.org/repos/asf/knox/blob/f422f016/gateway-server/src/main/java/org/apache/knox/gateway/config/impl/GatewayConfigImpl.java ---------------------------------------------------------------------- diff --git a/gateway-server/src/main/java/org/apache/knox/gateway/config/impl/GatewayConfigImpl.java b/gateway-server/src/main/java/org/apache/knox/gateway/config/impl/GatewayConfigImpl.java index e0898a2..815bb95 100644 --- a/gateway-server/src/main/java/org/apache/knox/gateway/config/impl/GatewayConfigImpl.java +++ b/gateway-server/src/main/java/org/apache/knox/gateway/config/impl/GatewayConfigImpl.java @@ -250,6 +250,8 @@ public class GatewayConfigImpl extends Configuration implements GatewayConfig { static final String CUSTOM_FEDERATION_HEADER_NAME = GATEWAY_CONFIG_FILE_PREFIX + ".custom.federation.header.name"; /* Default federated header name, see HeaderPreAuthFederationFilter.headerName */ static final String DEFAULT_FEDERATION_HEADER_NAME = "SM_USER"; + static final String AUTO_DEPLOY_TOPOLOGIES = GATEWAY_CONFIG_FILE_PREFIX + ".auto.deploy.topologies"; + static final String DEFAULT_AUTO_DEPLOY_TOPOLOGIES = "manager,admin"; private static List<String> DEFAULT_GLOBAL_RULES_SERVICES; @@ -1074,4 +1076,17 @@ public class GatewayConfigImpl extends Configuration implements GatewayConfig { return get(CUSTOM_FEDERATION_HEADER_NAME, DEFAULT_FEDERATION_HEADER_NAME); } + @Override + public List<String> getAutoDeployTopologyNames() { + List<String> topologyNames = new ArrayList<>(); + + String value = get(AUTO_DEPLOY_TOPOLOGIES); + if (value == null) { + value = DEFAULT_AUTO_DEPLOY_TOPOLOGIES; + } + topologyNames.addAll(Arrays.asList(value.trim().split("\\s*,\\s*"))); + + return topologyNames; + } + } http://git-wip-us.apache.org/repos/asf/knox/blob/f422f016/gateway-spi/src/main/java/org/apache/knox/gateway/config/GatewayConfig.java ---------------------------------------------------------------------- diff --git a/gateway-spi/src/main/java/org/apache/knox/gateway/config/GatewayConfig.java b/gateway-spi/src/main/java/org/apache/knox/gateway/config/GatewayConfig.java index 78ae227..8a43cb7 100644 --- a/gateway-spi/src/main/java/org/apache/knox/gateway/config/GatewayConfig.java +++ b/gateway-spi/src/main/java/org/apache/knox/gateway/config/GatewayConfig.java @@ -19,6 +19,7 @@ package org.apache.knox.gateway.config; import java.net.InetSocketAddress; import java.net.UnknownHostException; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -409,4 +410,12 @@ public interface GatewayConfig { */ String getFederationHeaderName(); + /** + * Get the list of topology names that should be redeployed on restart. + * manager and admin are default topologies as they may depend on gateway-site.xml + * configuration for deployment time config. + * @return + */ + List<String> getAutoDeployTopologyNames(); + } http://git-wip-us.apache.org/repos/asf/knox/blob/f422f016/gateway-test-release-utils/src/main/java/org/apache/knox/gateway/GatewayTestConfig.java ---------------------------------------------------------------------- diff --git a/gateway-test-release-utils/src/main/java/org/apache/knox/gateway/GatewayTestConfig.java b/gateway-test-release-utils/src/main/java/org/apache/knox/gateway/GatewayTestConfig.java index f9afa32..ef5c1c4 100644 --- a/gateway-test-release-utils/src/main/java/org/apache/knox/gateway/GatewayTestConfig.java +++ b/gateway-test-release-utils/src/main/java/org/apache/knox/gateway/GatewayTestConfig.java @@ -715,4 +715,12 @@ public class GatewayTestConfig extends Configuration implements GatewayConfig { return "SM_USER"; } + @Override + public List<String> getAutoDeployTopologyNames() { + ArrayList<String> names = new ArrayList<String>(); + names.add("manager"); + names.add("admin"); + return null; + } + }
