Repository: knox Updated Branches: refs/heads/master f7f6a21c4 -> 1d5eae8ee
KNOX-1266 - Employ gateway-site config for default discovery address and cluster values Project: http://git-wip-us.apache.org/repos/asf/knox/repo Commit: http://git-wip-us.apache.org/repos/asf/knox/commit/1d5eae8e Tree: http://git-wip-us.apache.org/repos/asf/knox/tree/1d5eae8e Diff: http://git-wip-us.apache.org/repos/asf/knox/diff/1d5eae8e Branch: refs/heads/master Commit: 1d5eae8ee896e6eb7cc7b78beb9fd0fdf56dde39 Parents: f7f6a21 Author: Phil Zampino <[email protected]> Authored: Thu May 10 23:01:00 2018 -0400 Committer: Phil Zampino <[email protected]> Committed: Thu May 10 23:02:30 2018 -0400 ---------------------------------------------------------------------- .../ambari/AmbariServiceDiscovery.java | 32 ++---------- .../ambari/AmbariServiceDiscoveryTest.java | 53 +++++--------------- .../gateway/config/impl/GatewayConfigImpl.java | 14 ++++++ .../knox/gateway/config/GatewayConfig.java | 16 +++++- .../apache/knox/gateway/GatewayTestConfig.java | 12 ++++- 5 files changed, 56 insertions(+), 71 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/knox/blob/1d5eae8e/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 9f40f8c..4deb25f 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 @@ -33,7 +33,6 @@ import org.apache.knox.gateway.config.GatewayConfig; import org.apache.knox.gateway.i18n.messages.MessagesFactory; import org.apache.knox.gateway.services.GatewayServices; import org.apache.knox.gateway.services.security.AliasService; -import org.apache.knox.gateway.services.security.AliasServiceException; import org.apache.knox.gateway.topology.ClusterConfigurationMonitorService; import org.apache.knox.gateway.topology.discovery.ClusterConfigurationMonitor; import org.apache.knox.gateway.topology.discovery.GatewayService; @@ -64,9 +63,6 @@ class AmbariServiceDiscovery implements ServiceDiscovery { private static final AmbariServiceDiscoveryMessages log = MessagesFactory.get(AmbariServiceDiscoveryMessages.class); - private static final String DEFAULT_DISCOVERY_ADDRESS_ALIAS = "ambari.discovery.address"; - private static final String DEFAULT_DISCOVERY_CLUSTER_ALIAS = "ambari.discovery.cluster"; - // Map of component names to service configuration types private static Map<String, String> componentServiceConfigs = new HashMap<>(); static { @@ -229,19 +225,9 @@ class AmbariServiceDiscovery implements ServiceDiscovery { String discoveryUser = config.getUser(); String discoveryPwdAlias = config.getPasswordAlias(); - // Handle missing discovery address value with the default alias if it has been defined + // Handle missing discovery address value with the default if it has been defined if (discoveryAddress == null || discoveryAddress.isEmpty()) { - if (this.aliasService != null) { - try { - char[] defaultAddress = - this.aliasService.getPasswordFromAliasForGateway(DEFAULT_DISCOVERY_ADDRESS_ALIAS); - if (defaultAddress != null) { - discoveryAddress = new String(defaultAddress); - } - } catch (AliasServiceException e) { - log.aliasServiceError(DEFAULT_DISCOVERY_ADDRESS_ALIAS, e.getLocalizedMessage()); - } - } + discoveryAddress = gatewayConfig.getDefaultDiscoveryAddress(); // If no default address could be determined if (discoveryAddress == null) { @@ -249,19 +235,9 @@ class AmbariServiceDiscovery implements ServiceDiscovery { } } - // Handle missing discovery cluster value with the default alias if it has been defined + // Handle missing discovery cluster value with the default if it has been defined if (clusterName == null || clusterName.isEmpty()) { - if (this.aliasService != null) { - try { - char[] defaultCluster = - this.aliasService.getPasswordFromAliasForGateway(DEFAULT_DISCOVERY_CLUSTER_ALIAS); - if (defaultCluster != null) { - clusterName = new String(defaultCluster); - } - } catch (AliasServiceException e) { - log.aliasServiceError(DEFAULT_DISCOVERY_CLUSTER_ALIAS, e.getLocalizedMessage()); - } - } + clusterName = gatewayConfig.getDefaultDiscoveryCluster(); // If no default cluster could be determined if (clusterName == null) { http://git-wip-us.apache.org/repos/asf/knox/blob/1d5eae8e/gateway-discovery-ambari/src/test/java/org/apache/knox/gateway/topology/discovery/ambari/AmbariServiceDiscoveryTest.java ---------------------------------------------------------------------- diff --git a/gateway-discovery-ambari/src/test/java/org/apache/knox/gateway/topology/discovery/ambari/AmbariServiceDiscoveryTest.java b/gateway-discovery-ambari/src/test/java/org/apache/knox/gateway/topology/discovery/ambari/AmbariServiceDiscoveryTest.java index dd49e72..40eecdd 100644 --- a/gateway-discovery-ambari/src/test/java/org/apache/knox/gateway/topology/discovery/ambari/AmbariServiceDiscoveryTest.java +++ b/gateway-discovery-ambari/src/test/java/org/apache/knox/gateway/topology/discovery/ambari/AmbariServiceDiscoveryTest.java @@ -77,18 +77,11 @@ public class AmbariServiceDiscoveryTest { final String discoveryAddress = "http://ambarihost:8080"; final String clusterName = "testCluster"; - AliasService as = EasyMock.createNiceMock(AliasService.class); - EasyMock.expect(as.getPasswordFromAliasForGateway("ambari.discovery.address")) - .andReturn(discoveryAddress.toCharArray()) - .anyTimes(); - EasyMock.expect(as.getPasswordFromAliasForGateway("ambari.discovery.cluster")) - .andReturn(clusterName.toCharArray()) - .anyTimes(); - EasyMock.replay(as); - - ServiceDiscovery sd = new TestAmbariServiceDiscovery(clusterName, as); + ServiceDiscovery sd = new TestAmbariServiceDiscovery(clusterName); GatewayConfig gc = EasyMock.createNiceMock(GatewayConfig.class); + EasyMock.expect(gc.getDefaultDiscoveryAddress()).andReturn(discoveryAddress).anyTimes(); + EasyMock.expect(gc.getDefaultDiscoveryCluster()).andReturn(clusterName).anyTimes(); EasyMock.replay(gc); ServiceDiscoveryConfig sdc = EasyMock.createNiceMock(ServiceDiscoveryConfig.class); @@ -108,18 +101,11 @@ public class AmbariServiceDiscoveryTest { final String discoveryAddress = "http://ambarihost:8080"; final String clusterName = "testCluster"; - AliasService as = EasyMock.createNiceMock(AliasService.class); - EasyMock.expect(as.getPasswordFromAliasForGateway("ambari.discovery.address")) - .andReturn(discoveryAddress.toCharArray()) - .anyTimes(); - EasyMock.expect(as.getPasswordFromAliasForGateway("ambari.discovery.cluster")) - .andReturn(clusterName.toCharArray()) - .anyTimes(); - EasyMock.replay(as); - - ServiceDiscovery sd = new TestAmbariServiceDiscovery(clusterName, as); + ServiceDiscovery sd = new TestAmbariServiceDiscovery(clusterName); GatewayConfig gc = EasyMock.createNiceMock(GatewayConfig.class); + EasyMock.expect(gc.getDefaultDiscoveryAddress()).andReturn(discoveryAddress).anyTimes(); + EasyMock.expect(gc.getDefaultDiscoveryCluster()).andReturn(clusterName).anyTimes(); EasyMock.replay(gc); ServiceDiscoveryConfig sdc = EasyMock.createNiceMock(ServiceDiscoveryConfig.class); @@ -140,18 +126,11 @@ public class AmbariServiceDiscoveryTest { final String discoveryAddress = "http://ambarihost:8080"; final String clusterName = "testCluster"; - AliasService as = EasyMock.createNiceMock(AliasService.class); - EasyMock.expect(as.getPasswordFromAliasForGateway("ambari.discovery.address")) - .andReturn(discoveryAddress.toCharArray()) - .anyTimes(); - EasyMock.expect(as.getPasswordFromAliasForGateway("ambari.discovery.cluster")) - .andReturn(clusterName.toCharArray()) - .anyTimes(); - EasyMock.replay(as); - - ServiceDiscovery sd = new TestAmbariServiceDiscovery(clusterName, as); + ServiceDiscovery sd = new TestAmbariServiceDiscovery(clusterName); GatewayConfig gc = EasyMock.createNiceMock(GatewayConfig.class); + EasyMock.expect(gc.getDefaultDiscoveryAddress()).andReturn(discoveryAddress).anyTimes(); + EasyMock.expect(gc.getDefaultDiscoveryCluster()).andReturn(clusterName).anyTimes(); EasyMock.replay(gc); ServiceDiscoveryConfig sdc = EasyMock.createNiceMock(ServiceDiscoveryConfig.class); @@ -191,10 +170,7 @@ public class AmbariServiceDiscoveryTest { public void testSingleClusterDiscoveryWithMissingAddress() throws Exception { final String clusterName = "testCluster"; - AliasService as = EasyMock.createNiceMock(AliasService.class); - EasyMock.replay(as); - - ServiceDiscovery sd = new TestAmbariServiceDiscovery(clusterName, as); + ServiceDiscovery sd = new TestAmbariServiceDiscovery(clusterName); GatewayConfig gc = EasyMock.createNiceMock(GatewayConfig.class); EasyMock.replay(gc); @@ -213,15 +189,10 @@ public class AmbariServiceDiscoveryTest { final String discoveryAddress = "http://ambarihost:8080"; final String clusterName = "testCluster"; - AliasService as = EasyMock.createNiceMock(AliasService.class); - EasyMock.expect(as.getPasswordFromAliasForGateway("ambari.discovery.address")) - .andReturn(discoveryAddress.toCharArray()) - .anyTimes(); - EasyMock.replay(as); - - ServiceDiscovery sd = new TestAmbariServiceDiscovery(clusterName, as); + ServiceDiscovery sd = new TestAmbariServiceDiscovery(clusterName); GatewayConfig gc = EasyMock.createNiceMock(GatewayConfig.class); + EasyMock.expect(gc.getDefaultDiscoveryAddress()).andReturn(discoveryAddress).anyTimes(); EasyMock.replay(gc); ServiceDiscoveryConfig sdc = EasyMock.createNiceMock(ServiceDiscoveryConfig.class); http://git-wip-us.apache.org/repos/asf/knox/blob/1d5eae8e/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 baa0507..56440f2 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 @@ -234,6 +234,10 @@ public class GatewayConfigImpl extends Configuration implements GatewayConfig { static final String REMOTE_CONFIG_MONITOR_CLIENT_ALLOW_READ_ACCESS = REMOTE_CONFIG_MONITOR_CLIENT_NAME + ".allowUnauthenticatedReadAccess"; + /* @since 1.1.0 Default discovery configuration */ + static final String DEFAULT_DISCOVERY_ADDRESS = GATEWAY_CONFIG_FILE_PREFIX + ".discovery.default.address"; + static final String DEFAULT_DISCOVERY_CLUSTER = GATEWAY_CONFIG_FILE_PREFIX + ".discovery.default.cluster"; + private static List<String> DEFAULT_GLOBAL_RULES_SERVICES; @@ -955,6 +959,16 @@ public class GatewayConfigImpl extends Configuration implements GatewayConfig { } @Override + public String getDefaultDiscoveryAddress() { + return getVar(DEFAULT_DISCOVERY_ADDRESS, null); + } + + @Override + public String getDefaultDiscoveryCluster() { + return getVar(DEFAULT_DISCOVERY_CLUSTER, null); + } + + @Override public int getClusterMonitorPollingInterval(String type) { return getInt(CLUSTER_CONFIG_MONITOR_PREFIX + type.toLowerCase() + CLUSTER_CONFIG_MONITOR_INTERVAL_SUFFIX, -1); } http://git-wip-us.apache.org/repos/asf/knox/blob/1d5eae8e/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 c727b90..980f602 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 @@ -313,7 +313,21 @@ public interface GatewayConfig { * @return */ boolean isGatewayServerHeaderEnabled(); - + + /** + * Determine the default address for discovering service endpoint details. + * + * @return A valid discovery source address, or null (because this property is optional). + */ + String getDefaultDiscoveryAddress(); + + /** + * Determine the default target cluster for discovering service endpoint details. + * + * @return A valid cluster name, or null (because this property is optional). + */ + String getDefaultDiscoveryCluster(); + /** * * @param type The type of cluster configuration monitor for which the interval should be returned. http://git-wip-us.apache.org/repos/asf/knox/blob/1d5eae8e/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 9659fe0..1b198c9 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 @@ -608,7 +608,17 @@ public class GatewayTestConfig extends Configuration implements GatewayConfig { @Override public boolean isGatewayServerHeaderEnabled() { - return false; + return false; + } + + @Override + public String getDefaultDiscoveryAddress() { + return null; + } + + @Override + public String getDefaultDiscoveryCluster() { + return null; } @Override
