Repository: knox
Updated Branches:
  refs/heads/master 1a50523f3 -> 21ac567db


KNOX-1193 - Discovery support for SOLR, STORM and STORM-LOGVIEWER, and config 
for additional support


Project: http://git-wip-us.apache.org/repos/asf/knox/repo
Commit: http://git-wip-us.apache.org/repos/asf/knox/commit/21ac567d
Tree: http://git-wip-us.apache.org/repos/asf/knox/tree/21ac567d
Diff: http://git-wip-us.apache.org/repos/asf/knox/diff/21ac567d

Branch: refs/heads/master
Commit: 21ac567db07c3f2196dfb41cb7bf9bbb786801a2
Parents: 1a50523
Author: Phil Zampino <pzamp...@apache.org>
Authored: Fri Mar 2 15:52:06 2018 -0500
Committer: Phil Zampino <pzamp...@apache.org>
Committed: Fri Mar 2 15:59:33 2018 -0500

----------------------------------------------------------------------
 .../ambari/AmbariDynamicServiceURLCreator.java  | 21 +++++++++-
 .../ambari/AmbariServiceDiscovery.java          | 21 +++++++++-
 ...iscovery-component-config-mapping.properties | 26 ++++++------
 .../ambari-service-discovery-url-mappings.xml   | 42 ++++++++++++++++++++
 .../topology/impl/DefaultTopologyService.java   |  6 +++
 .../topology/discovery/ServiceDiscovery.java    |  2 +
 6 files changed, 104 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/knox/blob/21ac567d/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/AmbariDynamicServiceURLCreator.java
----------------------------------------------------------------------
diff --git 
a/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/AmbariDynamicServiceURLCreator.java
 
b/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/AmbariDynamicServiceURLCreator.java
index 96d462b..7ccd170 100644
--- 
a/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/AmbariDynamicServiceURLCreator.java
+++ 
b/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/AmbariDynamicServiceURLCreator.java
@@ -17,6 +17,7 @@
 package org.apache.knox.gateway.topology.discovery.ambari;
 
 import org.apache.knox.gateway.i18n.messages.MessagesFactory;
+import org.apache.knox.gateway.topology.discovery.ServiceDiscovery;
 
 import java.io.ByteArrayInputStream;
 import java.io.File;
@@ -30,6 +31,8 @@ import java.util.Map;
 
 class AmbariDynamicServiceURLCreator implements ServiceURLCreator {
 
+    static final String MAPPING_CONFIG_OVERRIDE_FILE = 
"ambari-discovery-url-mappings.xml";
+
     static final String MAPPING_CONFIG_OVERRIDE_PROPERTY = 
"org.apache.gateway.topology.discovery.ambari.config";
 
     private AmbariServiceDiscoveryMessages log = 
MessagesFactory.get(AmbariServiceDiscoveryMessages.class);
@@ -44,7 +47,23 @@ class AmbariDynamicServiceURLCreator implements 
ServiceURLCreator {
         config = new ServiceURLPropertyConfig();
 
         // Attempt to apply overriding or additional mappings from external 
source
-        String mappingConfiguration = 
System.getProperty(MAPPING_CONFIG_OVERRIDE_PROPERTY);
+        String mappingConfiguration = null;
+
+        // First, check for the well-known override mapping file
+        String gatewayConfDir = 
System.getProperty(ServiceDiscovery.CONFIG_DIR_PROPERTY);
+        if (gatewayConfDir != null) {
+            File overridesFile = new File(gatewayConfDir, 
MAPPING_CONFIG_OVERRIDE_FILE);
+            if (overridesFile.exists()) {
+                mappingConfiguration = overridesFile.getAbsolutePath();
+            }
+        }
+
+        // If no file in the config dir, check for the system property 
reference
+        if (mappingConfiguration == null) {
+            mappingConfiguration = 
System.getProperty(MAPPING_CONFIG_OVERRIDE_PROPERTY);
+        }
+
+        // If there is an overrides configuration file specified either way, 
then apply it
         if (mappingConfiguration != null) {
             File mappingConfigFile = new File(mappingConfiguration);
             if (mappingConfigFile.exists()) {

http://git-wip-us.apache.org/repos/asf/knox/blob/21ac567d/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/AmbariServiceDiscovery.java
----------------------------------------------------------------------
diff --git 
a/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/AmbariServiceDiscovery.java
 
b/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/AmbariServiceDiscovery.java
index 80009cc..957d723 100644
--- 
a/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/AmbariServiceDiscovery.java
+++ 
b/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/AmbariServiceDiscovery.java
@@ -16,6 +16,7 @@
  */
 package org.apache.knox.gateway.topology.discovery.ambari;
 
+import java.io.File;
 import java.io.FileInputStream;
 import java.io.InputStream;
 import java.lang.reflect.Method;
@@ -53,6 +54,8 @@ class AmbariServiceDiscovery implements ServiceDiscovery {
     private static final String COMPONENT_CONFIG_MAPPING_FILE =
                                                         
"ambari-service-discovery-component-config-mapping.properties";
 
+    private static final String COMPONENT_CONFIG_OVERRIDES_FILENAME = 
"ambari-discovery-component-config.properties";
+
     private static final String GATEWAY_SERVICES_ACCESSOR_CLASS  = 
"org.apache.knox.gateway.GatewayServer";
     private static final String GATEWAY_SERVICES_ACCESSOR_METHOD = 
"getGatewayServices";
 
@@ -87,7 +90,23 @@ class AmbariServiceDiscovery implements ServiceDiscovery {
             }
 
             // Attempt to apply overriding or additional mappings from 
external source
-            String overridesPath = 
System.getProperty(COMPONENT_CONFIG_MAPPING_SYSTEM_PROPERTY);
+            String overridesPath = null;
+
+            // First, check for the well-known overrides config file
+            String gatewayConfDir = System.getProperty(CONFIG_DIR_PROPERTY);
+            if (gatewayConfDir != null) {
+                File overridesFile = new File(gatewayConfDir, 
COMPONENT_CONFIG_OVERRIDES_FILENAME);
+                if (overridesFile.exists()) {
+                    overridesPath = overridesFile.getAbsolutePath();
+                }
+            }
+
+            // If no file in the config dir, check for the system property 
reference
+            if (overridesPath == null) {
+                overridesPath = 
System.getProperty(COMPONENT_CONFIG_MAPPING_SYSTEM_PROPERTY);
+            }
+
+            // If there is an overrides configuration file specified either 
way, then apply it
             if (overridesPath != null) {
                 Properties overrides = new Properties();
                 try (InputStream in = new FileInputStream(overridesPath)) {

http://git-wip-us.apache.org/repos/asf/knox/blob/21ac567d/gateway-discovery-ambari/src/main/resources/ambari-service-discovery-component-config-mapping.properties
----------------------------------------------------------------------
diff --git 
a/gateway-discovery-ambari/src/main/resources/ambari-service-discovery-component-config-mapping.properties
 
b/gateway-discovery-ambari/src/main/resources/ambari-service-discovery-component-config-mapping.properties
index 48dd7b1..bf53db0 100644
--- 
a/gateway-discovery-ambari/src/main/resources/ambari-service-discovery-component-config-mapping.properties
+++ 
b/gateway-discovery-ambari/src/main/resources/ambari-service-discovery-component-config-mapping.properties
@@ -20,22 +20,24 @@
 # Hadoop service component configuration mappings
 # Service component name = service component configuration type
 ##########################################################################
-NAMENODE=hdfs-site
-RESOURCEMANAGER=yarn-site
-HISTORYSERVER=mapred-site
-OOZIE_SERVER=oozie-site
-HIVE_SERVER=hive-site
-WEBHCAT_SERVER=webhcat-site
-HBASE_MASTER=hbase-site
-DRUID_COORDINATOR=druid-coordinator
+ATLAS_SERVER=application-properties
 DRUID_BROKER=druid-broker
-DRUID_ROUTER=druid-router
+DRUID_COORDINATOR=druid-coordinator
 DRUID_OVERLORD=druid-overlord
+DRUID_ROUTER=druid-router
 DRUID_SUPERSET=druid-superset
-ATLAS_SERVER=application-properties
-ZEPPELIN_MASTER=zeppelin-config
-RANGER_ADMIN=ranger-admin-site
 FALCON_SERVER=falcon-env
+HBASE_MASTER=hbase-site
+HISTORYSERVER=mapred-site
+HIVE_SERVER=hive-site
+INFRA_SOLR=infra-solr-env
 LIVY_SERVER=livy-conf
+NAMENODE=hdfs-site
+OOZIE_SERVER=oozie-site
+RANGER_ADMIN=ranger-admin-site
+RESOURCEMANAGER=yarn-site
 SPARK_JOBHISTORYSERVER=spark-defaults
+STORM_UI_SERVER=storm-site
+WEBHCAT_SERVER=webhcat-site
+ZEPPELIN_MASTER=zeppelin-config
 

http://git-wip-us.apache.org/repos/asf/knox/blob/21ac567d/gateway-discovery-ambari/src/main/resources/ambari-service-discovery-url-mappings.xml
----------------------------------------------------------------------
diff --git 
a/gateway-discovery-ambari/src/main/resources/ambari-service-discovery-url-mappings.xml
 
b/gateway-discovery-ambari/src/main/resources/ambari-service-discovery-url-mappings.xml
index 6b6907d..3f37c0a 100644
--- 
a/gateway-discovery-ambari/src/main/resources/ambari-service-discovery-url-mappings.xml
+++ 
b/gateway-discovery-ambari/src/main/resources/ambari-service-discovery-url-mappings.xml
@@ -568,4 +568,46 @@
         </properties>
     </service>
 
+    <service name="SOLR">
+        <url-pattern>http://{HOST}:{PORT}</url-pattern>
+        <properties>
+            <property name="HOST">
+                <component>INFRA_SOLR</component>
+                <hostname/>
+            </property>
+            <property name="PORT">
+                <component>INFRA_SOLR</component>
+                <config-property>infra_solr_port</config-property>
+            </property>
+        </properties>
+    </service>
+
+    <service name="STORM">
+        <url-pattern>http://{HOST}:{PORT}</url-pattern>
+        <properties>
+            <property name="HOST">
+                <component>STORM_UI_SERVER</component>
+                <hostname/>
+            </property>
+            <property name="PORT">
+                <component>STORM_UI_SERVER</component>
+                <config-property>ui.port</config-property>
+            </property>
+        </properties>
+    </service>
+
+    <service name="STORM-LOGVIEWER">
+        <url-pattern>http://{HOST}:{PORT}</url-pattern>
+        <properties>
+            <property name="HOST">
+                <component>STORM_UI_SERVER</component>
+                <hostname/>
+            </property>
+            <property name="PORT">
+                <component>STORM_UI_SERVER</component>
+                <config-property>logviewer.port</config-property>
+            </property>
+        </properties>
+    </service>
+
 </service-discovery-url-mappings>

http://git-wip-us.apache.org/repos/asf/knox/blob/21ac567d/gateway-server/src/main/java/org/apache/knox/gateway/services/topology/impl/DefaultTopologyService.java
----------------------------------------------------------------------
diff --git 
a/gateway-server/src/main/java/org/apache/knox/gateway/services/topology/impl/DefaultTopologyService.java
 
b/gateway-server/src/main/java/org/apache/knox/gateway/services/topology/impl/DefaultTopologyService.java
index 52a7dfa..ccd4130 100644
--- 
a/gateway-server/src/main/java/org/apache/knox/gateway/services/topology/impl/DefaultTopologyService.java
+++ 
b/gateway-server/src/main/java/org/apache/knox/gateway/services/topology/impl/DefaultTopologyService.java
@@ -51,6 +51,7 @@ import org.apache.knox.gateway.topology.TopologyMonitor;
 import org.apache.knox.gateway.topology.TopologyProvider;
 import org.apache.knox.gateway.topology.builder.TopologyBuilder;
 import org.apache.knox.gateway.topology.discovery.ClusterConfigurationMonitor;
+import org.apache.knox.gateway.topology.discovery.ServiceDiscovery;
 import org.apache.knox.gateway.topology.monitor.RemoteConfigurationMonitor;
 import 
org.apache.knox.gateway.topology.monitor.RemoteConfigurationMonitorFactory;
 import org.apache.knox.gateway.topology.simple.ProviderConfigurationParser;
@@ -622,6 +623,11 @@ public class DefaultTopologyService
   @Override
   public void init(GatewayConfig config, Map<String, String> options) throws 
ServiceLifecycleException {
 
+    String gatewayConfDir = config.getGatewayConfDir();
+    if (gatewayConfDir != null) {
+      System.setProperty(ServiceDiscovery.CONFIG_DIR_PROPERTY, gatewayConfDir);
+    }
+
     try {
       listeners  = new HashSet<>();
       topologies = new HashMap<>();

http://git-wip-us.apache.org/repos/asf/knox/blob/21ac567d/gateway-spi/src/main/java/org/apache/knox/gateway/topology/discovery/ServiceDiscovery.java
----------------------------------------------------------------------
diff --git 
a/gateway-spi/src/main/java/org/apache/knox/gateway/topology/discovery/ServiceDiscovery.java
 
b/gateway-spi/src/main/java/org/apache/knox/gateway/topology/discovery/ServiceDiscovery.java
index 01b2178..14d6c75 100644
--- 
a/gateway-spi/src/main/java/org/apache/knox/gateway/topology/discovery/ServiceDiscovery.java
+++ 
b/gateway-spi/src/main/java/org/apache/knox/gateway/topology/discovery/ServiceDiscovery.java
@@ -26,6 +26,8 @@ import java.util.Map;
  */
 public interface ServiceDiscovery {
 
+    String CONFIG_DIR_PROPERTY = "org.apache.knox.gateway.conf.dir";
+
     /**
      * This is the type specified in a simple descriptor to indicate which 
ServiceDiscovery implementation to employ.
      *

Reply via email to