You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by js...@apache.org on 2014/10/28 01:49:51 UTC
git commit: AMBARI-7988. Ensure that topology related properties with
the value of 0.0.0.0 are exported to blueprint
Repository: ambari
Updated Branches:
refs/heads/trunk eebb085e8 -> f1720123b
AMBARI-7988. Ensure that topology related properties with the value of 0.0.0.0 are exported to blueprint
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/f1720123
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/f1720123
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/f1720123
Branch: refs/heads/trunk
Commit: f1720123b881b2377fef73bc4f3f7b922c50c64d
Parents: eebb085
Author: Robert Nettleton <rn...@hortonworks.com>
Authored: Mon Oct 27 19:55:00 2014 -0400
Committer: John Speidel <js...@hortonworks.com>
Committed: Mon Oct 27 20:49:17 2014 -0400
----------------------------------------------------------------------
.../BlueprintConfigurationProcessor.java | 19 +++++-
.../BlueprintConfigurationProcessorTest.java | 66 ++++++++++++++++++++
2 files changed, 84 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/f1720123/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessor.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessor.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessor.java
index 4183b9d..be379c9 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessor.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessor.java
@@ -341,7 +341,9 @@ public class BlueprintConfigurationProcessor {
// remove properties that do not contain hostnames,
// except in the case of HA-related properties, that
// can contain nameservice references instead of hostnames (Fix for Bug AMBARI-7458).
- if (! matchedHost && ! isNameServiceProperty(propertyName)) {
+ // also will not remove properties that reference the special 0.0.0.0 network
+ // address
+ if (! matchedHost && ! isNameServiceProperty(propertyName) && !isSpecialNetworkAddress(propValue)) {
typeProperties.remove(propertyName);
}
}
@@ -363,6 +365,21 @@ public class BlueprintConfigurationProcessor {
}
/**
+ * Queries a property value to determine if the value contains
+ * a host address with all zeros (0.0.0.0). This is a special
+ * address that signifies that the service is available on
+ * all network interfaces on a given machine.
+ *
+ * @param propertyValue the property value to inspect
+ *
+ * @return true if the 0.0.0.0 address is included in this string
+ * false if the 0.0.0.0 address is not included in this string
+ */
+ private static boolean isSpecialNetworkAddress(String propertyValue) {
+ return propertyValue.contains("0.0.0.0");
+ }
+
+ /**
* Update multi host topology configuration properties for blueprint export.
*
* @param hostGroups cluster host groups
http://git-wip-us.apache.org/repos/asf/ambari/blob/f1720123/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessorTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessorTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessorTest.java
index 04c75a1..cf06064 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessorTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessorTest.java
@@ -1696,6 +1696,72 @@ public class BlueprintConfigurationProcessorTest {
}
@Test
+ public void testYarnConfigExportedWithDefaultZeroHostAddress() throws Exception {
+ final String expectedHostName = "c6401.apache.ambari.org";
+ final String expectedPortNum = "808080";
+ final String expectedHostGroupName = "host_group_1";
+
+ EasyMockSupport mockSupport = new EasyMockSupport();
+
+ HostGroup mockHostGroupOne = mockSupport.createMock(HostGroup.class);
+
+ expect(mockHostGroupOne.getHostInfo()).andReturn(Arrays.asList(expectedHostName, "serverTwo")).atLeastOnce();
+ expect(mockHostGroupOne.getName()).andReturn(expectedHostGroupName).atLeastOnce();
+
+ mockSupport.replayAll();
+
+ Map<String, Map<String, String>> configProperties =
+ new HashMap<String, Map<String, String>>();
+
+ Map<String, String> yarnSiteProperties =
+ new HashMap<String, String>();
+
+ configProperties.put("yarn-site", yarnSiteProperties);
+
+ // setup properties that include host information
+ yarnSiteProperties.put("yarn.log.server.url", "http://" + expectedHostName +":19888/jobhistory/logs");
+ yarnSiteProperties.put("yarn.resourcemanager.hostname", expectedHostName);
+ yarnSiteProperties.put("yarn.resourcemanager.resource-tracker.address", expectedHostName + ":" + expectedPortNum);
+ yarnSiteProperties.put("yarn.resourcemanager.webapp.address", expectedHostName + ":" + expectedPortNum);
+ yarnSiteProperties.put("yarn.resourcemanager.scheduler.address", expectedHostName + ":" + expectedPortNum);
+ yarnSiteProperties.put("yarn.resourcemanager.address", expectedHostName + ":" + expectedPortNum);
+ yarnSiteProperties.put("yarn.resourcemanager.admin.address", expectedHostName + ":" + expectedPortNum);
+ yarnSiteProperties.put("yarn.timeline-service.address", "0.0.0.0" + ":" + expectedPortNum);
+ yarnSiteProperties.put("yarn.timeline-service.webapp.address", "0.0.0.0" + ":" + expectedPortNum);
+ yarnSiteProperties.put("yarn.timeline-service.webapp.https.address", "0.0.0.0" + ":" + expectedPortNum);
+
+ BlueprintConfigurationProcessor configProcessor =
+ new BlueprintConfigurationProcessor(configProperties);
+
+ // call top-level export method
+ configProcessor.doUpdateForBlueprintExport(Arrays.asList(mockHostGroupOne));
+
+ assertEquals("Yarn Log Server URL was incorrectly exported",
+ "http://" + "%HOSTGROUP::" + expectedHostGroupName + "%" +":19888/jobhistory/logs", yarnSiteProperties.get("yarn.log.server.url"));
+ assertEquals("Yarn ResourceManager hostname was incorrectly exported",
+ createExportedHostName(expectedHostGroupName), yarnSiteProperties.get("yarn.resourcemanager.hostname"));
+ assertEquals("Yarn ResourceManager tracker address was incorrectly exported",
+ createExportedAddress(expectedPortNum, expectedHostGroupName), yarnSiteProperties.get("yarn.resourcemanager.resource-tracker.address"));
+ assertEquals("Yarn ResourceManager webapp address was incorrectly exported",
+ createExportedAddress(expectedPortNum, expectedHostGroupName), yarnSiteProperties.get("yarn.resourcemanager.webapp.address"));
+ assertEquals("Yarn ResourceManager scheduler address was incorrectly exported",
+ createExportedAddress(expectedPortNum, expectedHostGroupName), yarnSiteProperties.get("yarn.resourcemanager.scheduler.address"));
+ assertEquals("Yarn ResourceManager address was incorrectly exported",
+ createExportedAddress(expectedPortNum, expectedHostGroupName), yarnSiteProperties.get("yarn.resourcemanager.address"));
+ assertEquals("Yarn ResourceManager admin address was incorrectly exported",
+ createExportedAddress(expectedPortNum, expectedHostGroupName), yarnSiteProperties.get("yarn.resourcemanager.admin.address"));
+ assertEquals("Yarn ResourceManager timeline-service address was incorrectly exported",
+ "0.0.0.0" + ":" + expectedPortNum, yarnSiteProperties.get("yarn.timeline-service.address"));
+ assertEquals("Yarn ResourceManager timeline webapp address was incorrectly exported",
+ "0.0.0.0" + ":" + expectedPortNum, yarnSiteProperties.get("yarn.timeline-service.webapp.address"));
+ assertEquals("Yarn ResourceManager timeline webapp HTTPS address was incorrectly exported",
+ "0.0.0.0" + ":" + expectedPortNum, yarnSiteProperties.get("yarn.timeline-service.webapp.https.address"));
+
+ mockSupport.verifyAll();
+
+ }
+
+ @Test
public void testHDFSConfigExported() throws Exception {
final String expectedHostName = "c6401.apache.ambari.org";
final String expectedPortNum = "808080";