Repository: ambari
Updated Branches:
  refs/heads/branch-2.4 752dc9d8a -> 8b89e478d


AMBARI-17255 AMS collector not coming up in 2.5 cluster blueprint deployment 
(dsen)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/8b89e478
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/8b89e478
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/8b89e478

Branch: refs/heads/branch-2.4
Commit: 8b89e478dbaa3c4f283f97d7605495dbdf2b14ab
Parents: 752dc9d
Author: Dmytro Sen <d...@apache.org>
Authored: Fri Jun 17 11:27:16 2016 +0300
Committer: Dmytro Sen <d...@apache.org>
Committed: Fri Jun 17 11:32:17 2016 +0300

----------------------------------------------------------------------
 .../BlueprintConfigurationProcessor.java        | 13 ++--
 .../package/alerts/alert_metrics_deviation.py   | 25 ++++---
 .../BlueprintConfigurationProcessorTest.java    |  2 +-
 .../2.0.6/HDFS/test_alert_metrics_deviation.py  | 70 ++++++++++++++------
 4 files changed, 74 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/8b89e478/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 1e56bef..c3af4eb 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
@@ -2716,15 +2716,18 @@ public class BlueprintConfigurationProcessor {
     amsSiteMap.put("timeline.metrics.service.webapp.address", new 
SingleHostTopologyUpdater("METRICS_COLLECTOR") {
       @Override
       public String updateForClusterCreate(String propertyName, String 
origValue, Map<String, Map<String, String>> properties, ClusterTopology 
topology) {
-        String value = origValue;
-        if (isSpecialNetworkAddress(origValue)) {
-          value = origValue.replace(BIND_ALL_IP_ADDRESS, "localhost");
-        }
         int metricsCollectorsCount = 
topology.getHostAssignmentsForComponent("METRICS_COLLECTOR").size();
         if (metricsCollectorsCount == 1) {
+          String value = origValue;
+          //localhost will be replaced with real hostname in 
updateForClusterCreate()
+          if (isSpecialNetworkAddress(origValue)) {
+            value = origValue.replace(BIND_ALL_IP_ADDRESS, "localhost");
+          }
           return super.updateForClusterCreate(propertyName, value, properties, 
topology);
+        } else {
+          //For multiple collectors
+          return origValue.replace("localhost", BIND_ALL_IP_ADDRESS);
         }
-        return origValue;
       }
     });
   }

http://git-wip-us.apache.org/repos/asf/ambari/blob/8b89e478/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/alerts/alert_metrics_deviation.py
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/alerts/alert_metrics_deviation.py
 
b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/alerts/alert_metrics_deviation.py
index 9ff1273..f0a1d5c 100644
--- 
a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/alerts/alert_metrics_deviation.py
+++ 
b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/alerts/alert_metrics_deviation.py
@@ -55,6 +55,8 @@ SMOKEUSER_KEY = '{{cluster-env/smokeuser}}'
 EXECUTABLE_SEARCH_PATHS = '{{kerberos-env/executable_search_paths}}'
 
 METRICS_COLLECTOR_WEBAPP_ADDRESS_KEY = 
'{{ams-site/timeline.metrics.service.webapp.address}}'
+METRICS_COLLECTOR_VIP_HOST_KEY = '{{cluster-env/metrics_collector_vip_host}}'
+METRICS_COLLECTOR_VIP_PORT_KEY = '{{cluster-env/metrics_collector_vip_port}}'
 
 CONNECTION_TIMEOUT_KEY = 'connection.timeout'
 CONNECTION_TIMEOUT_DEFAULT = 5.0
@@ -101,6 +103,7 @@ def get_tokens():
   return (HDFS_SITE_KEY, NAMESERVICE_KEY, NN_HTTP_ADDRESS_KEY, DFS_POLICY_KEY,
           EXECUTABLE_SEARCH_PATHS, NN_HTTPS_ADDRESS_KEY, SMOKEUSER_KEY,
           KERBEROS_KEYTAB, KERBEROS_PRINCIPAL, SECURITY_ENABLED_KEY,
+          METRICS_COLLECTOR_VIP_HOST_KEY, METRICS_COLLECTOR_VIP_PORT_KEY,
           METRICS_COLLECTOR_WEBAPP_ADDRESS_KEY)
 
 def execute(configurations={}, parameters={}, host_name=None):
@@ -164,17 +167,21 @@ def execute(configurations={}, parameters={}, 
host_name=None):
   if not HDFS_SITE_KEY in configurations:
     return (RESULT_STATE_UNKNOWN, ['{0} is a required parameter for the 
script'.format(HDFS_SITE_KEY)])
 
-  # ams-site/timeline.metrics.service.webapp.address is required
-  if not METRICS_COLLECTOR_WEBAPP_ADDRESS_KEY in configurations:
-    return (RESULT_STATE_UNKNOWN, ['{0} is a required parameter for the 
script'.format(METRICS_COLLECTOR_WEBAPP_ADDRESS_KEY)])
+  if METRICS_COLLECTOR_VIP_HOST_KEY in configurations and 
METRICS_COLLECTOR_VIP_PORT_KEY in configurations:
+    collector_host = configurations[METRICS_COLLECTOR_VIP_HOST_KEY]
+    collector_port = int(configurations[METRICS_COLLECTOR_VIP_PORT_KEY])
   else:
-    collector_webapp_address = 
configurations[METRICS_COLLECTOR_WEBAPP_ADDRESS_KEY].split(":")
-    if valid_collector_webapp_address(collector_webapp_address):
-      collector_host = collector_webapp_address[0]
-      collector_port = int(collector_webapp_address[1])
+    # ams-site/timeline.metrics.service.webapp.address is required
+    if not METRICS_COLLECTOR_WEBAPP_ADDRESS_KEY in configurations:
+      return (RESULT_STATE_UNKNOWN, ['{0} is a required parameter for the 
script'.format(METRICS_COLLECTOR_WEBAPP_ADDRESS_KEY)])
     else:
-      return (RESULT_STATE_UNKNOWN, ['{0} value should be set as 
"fqdn_hostname:port", but set to {1}'.format(
-        METRICS_COLLECTOR_WEBAPP_ADDRESS_KEY, 
configurations[METRICS_COLLECTOR_WEBAPP_ADDRESS_KEY])])
+      collector_webapp_address = 
configurations[METRICS_COLLECTOR_WEBAPP_ADDRESS_KEY].split(":")
+      if valid_collector_webapp_address(collector_webapp_address):
+        collector_host = collector_webapp_address[0]
+        collector_port = int(collector_webapp_address[1])
+      else:
+        return (RESULT_STATE_UNKNOWN, ['{0} value should be set as 
"fqdn_hostname:port", but set to {1}'.format(
+          METRICS_COLLECTOR_WEBAPP_ADDRESS_KEY, 
configurations[METRICS_COLLECTOR_WEBAPP_ADDRESS_KEY])])
 
   namenode_service_rpc_address = None
   # hdfs-site is required

http://git-wip-us.apache.org/repos/asf/ambari/blob/8b89e478/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 a927548..b595868 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
@@ -7808,7 +7808,7 @@ public class BlueprintConfigurationProcessorTest {
 
     Map<String, String> amsSite = new HashMap<String, String>();
     //default
-    amsSite.put("timeline.metrics.service.webapp.address", "0.0.0.0:6188");
+    amsSite.put("timeline.metrics.service.webapp.address", "localhost:6188");
     properties.put("ams-site", amsSite);
 
     Map<String, Map<String, String>> parentProperties = new HashMap<String, 
Map<String, String>>();

http://git-wip-us.apache.org/repos/asf/ambari/blob/8b89e478/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_alert_metrics_deviation.py
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_alert_metrics_deviation.py
 
b/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_alert_metrics_deviation.py
index b7d96b7..5bfbfc6 100644
--- 
a/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_alert_metrics_deviation.py
+++ 
b/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_alert_metrics_deviation.py
@@ -51,27 +51,6 @@ class TestAlertMetricsDeviation(RMFTestCase):
     sys.path.append(file_path)
     global alert
     import alert_metrics_deviation as alert
-    global configs
-    configs = {
-      '{{hdfs-site/dfs.namenode.https-address}}': 
'c6401.ambari.apache.org:50470',
-      '{{hdfs-site/dfs.http.policy}}': 'HTTP_ONLY',
-      '{{ams-site/timeline.metrics.service.webapp.address}}': 
'c6401.ambari.apache.org:6188',
-      '{{hdfs-site/dfs.namenode.http-address}}': 
'c6401.ambari.apache.org:50070',
-      '{{cluster-env/security_enabled}}': 'false',
-      '{{cluster-env/smokeuser}}': 'ambari-qa',
-      '{{hdfs-site}}': {
-        'dfs.datanode.address': '0.0.0.0:50010',
-        'dfs.namenode.rpc-address': 'c6401.ambari.apache.org:8020',
-        'dfs.namenode.https-address': 'c6401.ambari.apache.org:50470',
-        'dfs.namenode.http-address': 'c6401.ambari.apache.org:50070',
-        'dfs.datanode.https.address': '0.0.0.0:50475',
-        'dfs.namenode.secondary.http-address': 'c6401.ambari.apache.org:50090',
-        'dfs.datanode.http.address': '0.0.0.0:50075',
-        'dfs.http.policy': 'HTTP_ONLY',
-        'dfs.journalnode.https-address': '0.0.0.0:8481',
-        'dfs.journalnode.http-address': '0.0.0.0:8480'
-      }
-    }
     global parameters
     parameters = {
       'metric.deviation.warning.threshold': 100.0,
@@ -97,6 +76,55 @@ class TestAlertMetricsDeviation(RMFTestCase):
 
   @patch("httplib.HTTPConnection")
   def test_alert(self, conn_mock):
+    configs = {
+      '{{hdfs-site/dfs.namenode.https-address}}': 
'c6401.ambari.apache.org:50470',
+      '{{hdfs-site/dfs.http.policy}}': 'HTTP_ONLY',
+      '{{ams-site/timeline.metrics.service.webapp.address}}': 
'c6401.ambari.apache.org:6188',
+      '{{hdfs-site/dfs.namenode.http-address}}': 
'c6401.ambari.apache.org:50070',
+      '{{cluster-env/security_enabled}}': 'false',
+      '{{cluster-env/smokeuser}}': 'ambari-qa',
+      '{{hdfs-site}}': {
+        'dfs.datanode.address': '0.0.0.0:50010',
+        'dfs.namenode.rpc-address': 'c6401.ambari.apache.org:8020',
+        'dfs.namenode.https-address': 'c6401.ambari.apache.org:50470',
+        'dfs.namenode.http-address': 'c6401.ambari.apache.org:50070',
+        'dfs.datanode.https.address': '0.0.0.0:50475',
+        'dfs.namenode.secondary.http-address': 'c6401.ambari.apache.org:50090',
+        'dfs.datanode.http.address': '0.0.0.0:50075',
+        'dfs.http.policy': 'HTTP_ONLY',
+        'dfs.journalnode.https-address': '0.0.0.0:8481',
+        'dfs.journalnode.http-address': '0.0.0.0:8480'
+      }
+    }
+    self.make_alert_tests(configs, conn_mock)
+
+  @patch("httplib.HTTPConnection")
+  def test_alert_vip(self, conn_mock):
+    configs = {
+      '{{hdfs-site/dfs.namenode.https-address}}': 
'c6401.ambari.apache.org:50470',
+      '{{hdfs-site/dfs.http.policy}}': 'HTTP_ONLY',
+      '{{ams-site/timeline.metrics.service.webapp.address}}': '0.0.0.0:6188',
+      '{{hdfs-site/dfs.namenode.http-address}}': 
'c6401.ambari.apache.org:50070',
+      '{{cluster-env/security_enabled}}': 'false',
+      '{{cluster-env/smokeuser}}': 'ambari-qa',
+      '{{cluster-env/metrics_collector_vip_host}}': 'c6401.ambari.apache.org',
+      '{{cluster-env/metrics_collector_vip_port}}': '6188',
+      '{{hdfs-site}}': {
+        'dfs.datanode.address': '0.0.0.0:50010',
+        'dfs.namenode.rpc-address': 'c6401.ambari.apache.org:8020',
+        'dfs.namenode.https-address': 'c6401.ambari.apache.org:50470',
+        'dfs.namenode.http-address': 'c6401.ambari.apache.org:50070',
+        'dfs.datanode.https.address': '0.0.0.0:50475',
+        'dfs.namenode.secondary.http-address': 'c6401.ambari.apache.org:50090',
+        'dfs.datanode.http.address': '0.0.0.0:50075',
+        'dfs.http.policy': 'HTTP_ONLY',
+        'dfs.journalnode.https-address': '0.0.0.0:8481',
+        'dfs.journalnode.http-address': '0.0.0.0:8480'
+      }
+    }
+    self.make_alert_tests(configs, conn_mock)
+
+  def make_alert_tests(self, configs, conn_mock):
     connection = MagicMock()
     response = MagicMock()
     response.status = 200

Reply via email to