Parcourir la source

AMBARI-1009. Cluster level graphs need to use API for data. (Srimanth Gunturi via yusaku)

git-svn-id: https://svn.apache.org/repos/asf/incubator/ambari/branches/AMBARI-666@1418936 13f79535-47bb-0310-9956-ffa450edef68
Yusaku Sako il y a 12 ans
Parent
commit
98f77e2a57

+ 3 - 0
AMBARI-666-CHANGES.txt

@@ -467,6 +467,9 @@ AMBARI-666 branch (unreleased changes)
 
   BUG FIXES
 
+  AMBARI-1009. Cluster level graphs need to use API for data. (Srimanth
+  Gunturi via yusaku)
+
   AMBARI-1064. App Browser fixes. (yusaku)
 
   AMBARI-995. Deploy logs not shown for failed tasks. (yusaku)

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
ambari-web/app/assets/data/cluster_metrics/cpu_1hr.json


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
ambari-web/app/assets/data/cluster_metrics/load_1hr.json


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
ambari-web/app/assets/data/cluster_metrics/memory_1hr.json


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
ambari-web/app/assets/data/cluster_metrics/network_1hr.json


+ 27 - 13
ambari-web/app/views/main/dashboard/cluster_metrics/cpu.js

@@ -28,25 +28,39 @@ var App = require('app');
  */
 App.ChartClusterMetricsCPU = App.ChartLinearTimeView.extend({
   id: "cluster-metrics-cpu",
-  url: "/data/cluster_metrics/cpu_1hr.json",
+  url: function () {
+    return App.formatUrl("/api/clusters/{clusterName}?fields=metrics/cpu[{fromSeconds},{toSeconds},{stepSeconds}]", {
+      clusterName: App.router.get('clusterController.clusterName')
+    }, "/data/cluster_metrics/cpu_1hr.json");
+  }.property('App.router.clusterController.clusterName'),
+
   title: "CPU Usage",
   yAxisFormatter: App.ChartLinearTimeView.PercentageFormatter,
   
   transformToSeries: function (jsonData) {
     var seriesArray = [];
-    if (jsonData instanceof Array) {
-      jsonData.forEach(function (data) {
-        var series = {};
-        series.name = data.metric_name.replace(/\\g/, '');
-        series.data = [];
-        for ( var index = 0; index < data.datapoints.length; index++) {
-          series.data.push({
-            x: data.datapoints[index][1],
-            y: data.datapoints[index][0]
-          });
+    if (jsonData && jsonData.metrics && jsonData.metrics.cpu) {
+      for ( var name in jsonData.metrics.cpu) {
+        var displayName = name;
+        var seriesData = jsonData.metrics.cpu[name];
+        if (seriesData) {
+          // Is it a string?
+          if ("string" == typeof seriesData) {
+            seriesData = JSON.parse(seriesData);
+          }
+          // We have valid data
+          var series = {};
+          series.name = displayName;
+          series.data = [];
+          for ( var index = 0; index < seriesData.length; index++) {
+            series.data.push({
+              x: seriesData[index][1],
+              y: seriesData[index][0]
+            });
+          }
+          seriesArray.push(series);
         }
-        seriesArray.push(series);
-      });
+      }
     }
     return seriesArray;
   },

+ 27 - 12
ambari-web/app/views/main/dashboard/cluster_metrics/load.js

@@ -30,23 +30,38 @@ var App = require('app');
 App.ChartClusterMetricsLoad = App.ChartLinearTimeView.extend({
   id: "cluster-metrics-load",
   url: "/data/cluster_metrics/load_1hr.json",
+  url: function () {
+    return App.formatUrl("/api/clusters/{clusterName}?fields=metrics/load[{fromSeconds},{toSeconds},{stepSeconds}]", {
+      clusterName: App.router.get('clusterController.clusterName')
+    }, "/data/cluster_metrics/load_1hr.json");
+  }.property('App.router.clusterController.clusterName'),
+  
   title: "Cluster Load",
   
   transformToSeries: function(jsonData){
     var seriesArray = [];
-    if(jsonData instanceof Array){
-      jsonData.forEach(function(data){
-        var series = {};
-        series.name = data.metric_name;
-        series.data = [];
-        for(var index=0; index<data.datapoints.length; index++){
-          series.data.push({
-            x: data.datapoints[index][1],
-            y: data.datapoints[index][0]
-          });
+    if (jsonData && jsonData.metrics && jsonData.metrics.load) {
+      for ( var name in jsonData.metrics.load) {
+        var displayName = name;
+        var seriesData = jsonData.metrics.load[name];
+        if (seriesData) {
+          // Is it a string?
+          if ("string" == typeof seriesData) {
+            seriesData = JSON.parse(seriesData);
+          }
+          // We have valid data
+          var series = {};
+          series.name = displayName;
+          series.data = [];
+          for ( var index = 0; index < seriesData.length; index++) {
+            series.data.push({
+              x: seriesData[index][1],
+              y: seriesData[index][0]
+            });
+          }
+          seriesArray.push(series);
         }
-        seriesArray.push(series);
-      });
+      }
     }
     return seriesArray;
   }

+ 26 - 13
ambari-web/app/views/main/dashboard/cluster_metrics/memory.js

@@ -28,25 +28,38 @@ var App = require('app');
  */
 App.ChartClusterMetricsMemory = App.ChartLinearTimeView.extend({
   id: "cluster-metrics-memory",
-  url: "/data/cluster_metrics/memory_1hr.json",
+  url: function () {
+    return App.formatUrl("/api/clusters/{clusterName}?fields=metrics/memory[{fromSeconds},{toSeconds},{stepSeconds}]", {
+      clusterName: App.router.get('clusterController.clusterName')
+    }, "/data/cluster_metrics/memory_1hr.json");
+  }.property('App.router.clusterController.clusterName'),
   title: "Memory Usage",
   yAxisFormatter: App.ChartLinearTimeView.BytesFormatter,
   
   transformToSeries: function (jsonData) {
     var seriesArray = [];
-    if (jsonData instanceof Array) {
-      jsonData.forEach(function (data) {
-        var series = {};
-        series.name = data.metric_name.replace(/\\g/, '');
-        series.data = [];
-        for ( var index = 0; index < data.datapoints.length; index++) {
-          series.data.push({
-            x: data.datapoints[index][1],
-            y: data.datapoints[index][0]
-          });
+    if (jsonData && jsonData.metrics && jsonData.metrics.memory) {
+      for ( var name in jsonData.metrics.memory) {
+        var displayName = name;
+        var seriesData = jsonData.metrics.memory[name];
+        if (seriesData) {
+          // Is it a string?
+          if ("string" == typeof seriesData) {
+            seriesData = JSON.parse(seriesData);
+          }
+          // We have valid data
+          var series = {};
+          series.name = displayName;
+          series.data = [];
+          for ( var index = 0; index < seriesData.length; index++) {
+            series.data.push({
+              x: seriesData[index][1],
+              y: seriesData[index][0]
+            });
+          }
+          seriesArray.push(series);
         }
-        seriesArray.push(series);
-      });
+      }
     }
     return seriesArray;
   },

+ 26 - 13
ambari-web/app/views/main/dashboard/cluster_metrics/network.js

@@ -29,25 +29,38 @@ var App = require('app');
  */
 App.ChartClusterMetricsNetwork = App.ChartLinearTimeView.extend({
   id: "cluster-metrics-network",
-  url : "/data/cluster_metrics/network_1hr.json",
+  url: function () {
+    return App.formatUrl("/api/clusters/{clusterName}?fields=metrics/network[{fromSeconds},{toSeconds},{stepSeconds}]", {
+      clusterName: App.router.get('clusterController.clusterName')
+    }, "/data/cluster_metrics/network_1hr.json");
+  }.property('App.router.clusterController.clusterName'),
   title: "Network Usage",
   yAxisFormatter: App.ChartLinearTimeView.BytesFormatter,
   
   transformToSeries : function (jsonData) {
     var seriesArray = [];
-    if (jsonData instanceof Array) {
-      jsonData.forEach(function (data) {
-        var series = {};
-        series.name = data.metric_name;
-        series.data = [];
-        for ( var index = 0; index < data.datapoints.length; index++) {
-          series.data.push({
-            x : data.datapoints[index][1],
-            y : data.datapoints[index][0]
-          });
+    if (jsonData && jsonData.metrics && jsonData.metrics.network) {
+      for ( var name in jsonData.metrics.network) {
+        var displayName = name;
+        var seriesData = jsonData.metrics.network[name];
+        if (seriesData) {
+          // Is it a string?
+          if ("string" == typeof seriesData) {
+            seriesData = JSON.parse(seriesData);
+          }
+          // We have valid data
+          var series = {};
+          series.name = displayName;
+          series.data = [];
+          for ( var index = 0; index < seriesData.length; index++) {
+            series.data.push({
+              x: seriesData[index][1],
+              y: seriesData[index][0]
+            });
+          }
+          seriesArray.push(series);
         }
-        seriesArray.push(series);
-      });
+      }
     }
     return seriesArray;
   }

Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff