Repository: ambari
Updated Branches:
  refs/heads/trunk 769be41ff -> 894d10698


AMBARI-6338. 'YARN Memory Used %' heatmap shows n/a for all hosts.(xiwang)


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

Branch: refs/heads/trunk
Commit: 894d106988d9c0bd33b225a6e87dc81b1f505f29
Parents: 769be41
Author: Xi Wang <[email protected]>
Authored: Tue Jul 1 11:11:28 2014 -0700
Committer: Xi Wang <[email protected]>
Committed: Tue Jul 1 13:28:34 2014 -0700

----------------------------------------------------------------------
 .../heatmap_metric_yarn_ResourceUsed.js         | 48 +++++++++++++-------
 1 file changed, 31 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/894d1069/ambari-web/app/controllers/main/charts/heatmap_metrics/heatmap_metric_yarn_ResourceUsed.js
----------------------------------------------------------------------
diff --git 
a/ambari-web/app/controllers/main/charts/heatmap_metrics/heatmap_metric_yarn_ResourceUsed.js
 
b/ambari-web/app/controllers/main/charts/heatmap_metrics/heatmap_metric_yarn_ResourceUsed.js
index 3c2865d..f0ee406 100644
--- 
a/ambari-web/app/controllers/main/charts/heatmap_metrics/heatmap_metric_yarn_ResourceUsed.js
+++ 
b/ambari-web/app/controllers/main/charts/heatmap_metrics/heatmap_metric_yarn_ResourceUsed.js
@@ -21,32 +21,46 @@ var App = require('app');
  *
  */
 App.MainChartHeatmapYarnResourceUsedMetric = 
App.MainChartHeatmapYarnMetrics.extend({
-  metricUrlTemplate: 
'/clusters/{clusterName}/services/YARN/components/RESOURCEMANAGER?fields=ServiceComponentInfo/rm_metrics',
   name: Em.I18n.t('charts.heatmap.metrics.YarnMemoryUsed'),
   maximumValue: 100,
-  defaultMetric: 'ServiceComponentInfo.rm_metrics.cluster.nodeManagers',
+  defaultMetric: 'metrics.yarn',
   units: ' %',
   slotDefinitionLabelSuffix: ' %',
+
   metricMapper: function (json) {
     var hostToValueMap = {};
+    var self = this;
     var metricName = this.get('defaultMetric');
-    var props = metricName.split('.');
-    var value = json;
-    props.forEach(function (prop) {
-      if (value != null && prop in value) {
-        value = value[prop];
-      } else {
-        value = null;
-      }
-    });
-    if (value != null) {
-      value = JSON.parse(value);
-      if (value instanceof Array) {
-        value.forEach(function(host) {
-          hostToValueMap[host.HostName] = (host.UsedMemoryMB / 
host.AvailableMemoryMB * 100).toFixed(1);
+    if (json.host_components) {
+      var props = metricName.split('.');
+      json.host_components.forEach(function (host) {
+        var value = host;
+        props.forEach(function (prop) {
+          if (value != null && prop in value) {
+            value = value[prop];
+          } else {
+            value = null;
+          }
         });
-      }
+        if (value != null) {
+          value = self.memoryUsageFormatted(value.AllocatedGB, 
value.AvailableGB + value.AllocatedGB);
+          var hostName = host.HostRoles.host_name;
+          hostToValueMap[hostName] = value;
+        }
+      });
     }
     return hostToValueMap;
+  },
+
+  /**
+   * Format percent YARN memory used to float with 2 digits
+   */
+  memoryUsageFormatted: function(used, total) {
+    var usage = (used) / total * 100;
+    if (isNaN(usage) || usage < 0 || usage > 100) {
+      return Em.I18n.t('charts.heatmap.unknown');
+    }
+    var s = usage.toFixed(1);
+    return isNaN(s) ? 0 : s;
   }
 });

Reply via email to