Repository: ambari Updated Branches: refs/heads/branch-1.6.1 d5e205377 -> 1acfd8607
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/1acfd860 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/1acfd860 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/1acfd860 Branch: refs/heads/branch-1.6.1 Commit: 1acfd8607557d5c393de4c427e55d5437c4f5191 Parents: d5e2053 Author: Xi Wang <[email protected]> Authored: Tue Jul 1 11:11:28 2014 -0700 Committer: Xi Wang <[email protected]> Committed: Tue Jul 1 13:30:57 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/1acfd860/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; } });
