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; } });
