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;
+  }
+
 }

Reply via email to