Repository: ambari
Updated Branches:
  refs/heads/trunk 6950a8a94 -> d4ded26d5


AMBARI-17281. [Grafana] topN implementation for templatized dashboards. 
(Prajwal Rao via yusaku)


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

Branch: refs/heads/trunk
Commit: d4ded26d5a55ce36db281b2b32e831b936aefea0
Parents: 6950a8a
Author: Yusaku Sako <[email protected]>
Authored: Thu Jun 16 12:56:15 2016 -0700
Committer: Yusaku Sako <[email protected]>
Committed: Thu Jun 16 12:56:15 2016 -0700

----------------------------------------------------------------------
 .../ambari-metrics/datasource.js                | 29 ++++++++++----------
 1 file changed, 15 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/d4ded26d/ambari-metrics/ambari-metrics-grafana/ambari-metrics/datasource.js
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-grafana/ambari-metrics/datasource.js 
b/ambari-metrics/ambari-metrics-grafana/ambari-metrics/datasource.js
index 7390aa8..b825774 100644
--- a/ambari-metrics/ambari-metrics-grafana/ambari-metrics/datasource.js
+++ b/ambari-metrics/ambari-metrics-grafana/ambari-metrics/datasource.js
@@ -194,14 +194,22 @@ define([
           };
           // To speed up querying on templatized dashboards.
           var getAllHostData = function(target) {
-            var precision = target.precision === 'default' || typeof 
target.precision == 'undefined'  ? '' : '&precision=' 
+            var precision = target.precision === 'default' || typeof 
target.precision == 'undefined'  ? '' : '&precision='
             + target.precision;
             var metricAggregator = target.aggregator === "none" ? '' : '._' + 
target.aggregator;
+            var topN = ""; var isBottomN = "";
+            if (!_.isEmpty(templateSrv.variables.filter(function(o) { return 
o.name === "instances";}))) {
+              var metricTopN = _.filter(templateSrv.variables, function (o) { 
return o.name === "instances"; });
+              var metricTopAgg = _.filter(templateSrv.variables, function (o) 
{ return o.name === "topagg"; });
+              isBottomN = templateSrv.variables.filter(function(o) { return 
o.name === "orientation";})[0].current.value
+              === "bottom" ? true : false;
+              topN = '&topN=' + metricTopN[0].current.value  +'&topNFunction=' 
+ metricTopAgg[0].current.value  + '&isBottomN='+ isBottomN;
+            }
             var metricTransform = !target.transform || target.transform === 
"none" ? '' : '._' + target.transform;
             var templatedComponent = (_.isEmpty(tComponent)) ? target.app : 
tComponent;
             return backendSrv.get(self.url + 
'/ws/v1/timeline/metrics?metricNames=' + target.metric + metricTransform
               + metricAggregator + '&hostname=' + target.templatedHost + 
'&appId=' + templatedComponent + '&startTime=' + from +
-              '&endTime=' + to + precision).then(
+              '&endTime=' + to + precision + topN).then(
               allHostMetricsData(target)
             );
           };
@@ -352,20 +360,13 @@ define([
 
             // To speed up querying on templatized dashboards.
             if (templateSrv.variables[1] && templateSrv.variables[1].name === 
"hosts") {
-              var splitHosts = [];
-              // Remove curly braces that Grafana adds. {host1,host2}
               var allHosts = templateSrv._values.hosts.lastIndexOf('}') > 0 ? 
templateSrv._values.hosts.slice(1,-1) :
-                templateSrv._values.hosts;
-              var allHost = allHosts.split(',');
-              while (allHost.length > 0) {
-                splitHosts.push(allHost.splice(0,50));
-              }
-              _.forEach(splitHosts, function(splitHost) {
-                metricsPromises.push(_.map(options.targets, function(target) {
-                  target.templatedHost = _.flatten(splitHost).join(',');
+              templateSrv._values.hosts;
+              allHosts = templateSrv._texts.hosts === "All" ? '%' : allHosts;
+              metricsPromises.push(_.map(options.targets, function(target) {
+                  target.templatedHost = allHosts;
                   return getAllHostData(target);
-                }));
-              });
+              }));
             }
             metricsPromises = _.flatten(metricsPromises);
           } else {

Reply via email to