Got Controllers and Shards working

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

Branch: refs/heads/blur-console-v2
Commit: c6e64403a72f0e15489c2c3e4806aaa82485338c
Parents: 7b205b3
Author: Chris Rohr <[email protected]>
Authored: Tue Oct 8 13:57:52 2013 -0400
Committer: Chris Rohr <[email protected]>
Committed: Tue Oct 8 13:57:52 2013 -0400

----------------------------------------------------------------------
 contrib/blur-console/pom.xml                    |  7 ++-
 .../blur/console/servlets/DashboardServlet.java | 55 ++++++++++++++++++--
 .../org/apache/blur/console/util/Config.java    | 29 +++++++----
 .../org/apache/blur/console/webapp/index.html   |  9 ++--
 .../apache/blur/console/webapp/js/dashboard.js  | 15 ++++--
 5 files changed, 95 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/c6e64403/contrib/blur-console/pom.xml
----------------------------------------------------------------------
diff --git a/contrib/blur-console/pom.xml b/contrib/blur-console/pom.xml
index 1653c9c..e7b9483 100644
--- a/contrib/blur-console/pom.xml
+++ b/contrib/blur-console/pom.xml
@@ -25,7 +25,7 @@ under the License.
     <parent>
        <groupId>org.apache.blur</groupId>
        <artifactId>blur</artifactId>
-       <version>0.2.0-incubating-SNAPSHOT</version>
+       <version>0.3.0-incubating-SNAPSHOT</version>
        <relativePath>../../pom.xml</relativePath>
     </parent>
 
@@ -41,6 +41,11 @@ under the License.
                        <version>${project.version}</version>
                </dependency>
        <dependency>
+                       <groupId>org.apache.blur</groupId>
+                       <artifactId>blur-core</artifactId>
+                       <version>${project.version}</version>
+               </dependency>
+       <dependency>
                        <groupId>com.sun.jersey</groupId>
                        <artifactId>jersey-grizzly</artifactId>
                        <version>1.8</version>

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/c6e64403/contrib/blur-console/src/main/java/org/apache/blur/console/servlets/DashboardServlet.java
----------------------------------------------------------------------
diff --git 
a/contrib/blur-console/src/main/java/org/apache/blur/console/servlets/DashboardServlet.java
 
b/contrib/blur-console/src/main/java/org/apache/blur/console/servlets/DashboardServlet.java
index dc24194..0c18c1a 100644
--- 
a/contrib/blur-console/src/main/java/org/apache/blur/console/servlets/DashboardServlet.java
+++ 
b/contrib/blur-console/src/main/java/org/apache/blur/console/servlets/DashboardServlet.java
@@ -10,6 +10,7 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.blur.console.util.Config;
+import org.apache.blur.manager.clusterstatus.ZookeeperClusterStatus;
 import org.apache.blur.thrift.BlurClient;
 import org.apache.blur.thrift.generated.Blur.Iface;
 import org.apache.commons.collections.CollectionUtils;
@@ -26,6 +27,8 @@ public class DashboardServlet extends HttpServlet {
                String path = request.getPathInfo();
                if ("/controllers/status".equalsIgnoreCase(path)) {
                        sendControllerStatus(response);
+               } else if ("/clusters/status".equalsIgnoreCase(path)) {
+                       sendClusterStatus(response);
                } else {
                        response.setStatus(404);
                        IOUtils.write("Route [" + path + "] doesn't exist", 
response.getOutputStream());
@@ -33,14 +36,20 @@ public class DashboardServlet extends HttpServlet {
        }
 
        private void sendControllerStatus(HttpServletResponse response) throws 
IOException {
-               Iface client = 
BlurClient.getClient(StringUtils.join(Config.getControllers(), ","));
+               ZookeeperClusterStatus zk = new 
ZookeeperClusterStatus(Config.getBlurConfig().get("blur.zookeeper.connection"), 
Config.getBlurConfig());
+               
+               //TODO: Fix with another call, this will return online only 
every time
+               List<String> allControllers = zk.getControllerServerList();
+               
+               Iface client = 
BlurClient.getClient(StringUtils.join(allControllers, ","));
                List<String> controllersFromBlur = new ArrayList<String>();
                try {
                        controllersFromBlur = client.controllerServerList();
                } catch (Exception e) {}
                
-               int onlineControllers = 
CollectionUtils.intersection(Config.getControllers(), 
controllersFromBlur).size();
-               int offlineControllers = 
CollectionUtils.subtract(Config.getControllers(), controllersFromBlur).size();
+               
+               int onlineControllers = 
CollectionUtils.intersection(allControllers, controllersFromBlur).size();
+               int offlineControllers = 
CollectionUtils.subtract(allControllers, controllersFromBlur).size();
                
                JSONArray data = new JSONArray();
                
@@ -63,4 +72,44 @@ public class DashboardServlet extends HttpServlet {
                response.setStatus(200);
                IOUtils.write(body, response.getOutputStream());
        }
+       
+       private void sendClusterStatus(HttpServletResponse response) throws 
IOException {
+               ZookeeperClusterStatus zk = new 
ZookeeperClusterStatus(Config.getBlurConfig().get("blur.zookeeper.connection"), 
Config.getBlurConfig());
+               
+               List<String> clusters = zk.getClusterList(false);
+               JSONArray data = new JSONArray();
+               
+               try {
+                       for (String cluster : clusters) {
+                               JSONObject clusterObj = new JSONObject();
+                               clusterObj.put("name", cluster);
+                               
+                               List<String> offlineShardServers = 
zk.getOfflineShardServers(false, cluster);
+                               List<String> onlineShardServers = 
zk.getOnlineShardServers(false, cluster);
+                               
+                               JSONArray clusterData = new JSONArray();
+                               
+                               JSONObject online = new JSONObject();
+                               online.put("value", onlineShardServers.size());
+                               online.put("color", "#7DC77D");
+                               
+                               JSONObject offline = new JSONObject();
+                               offline.put("value", 
offlineShardServers.size());
+                               offline.put("color", "#FF1919");
+                               
+                               clusterData.put(online);
+                               clusterData.put(offline);
+                               clusterObj.put("data", clusterData);
+                               
+                               data.put(clusterObj);
+                       }
+               } catch (Exception e) {}
+               
+               
+               String body = data.toString();
+               response.setContentType("application/json");
+               response.setContentLength(body.getBytes().length);
+               response.setStatus(200);
+               IOUtils.write(body, response.getOutputStream());
+       }
 }

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/c6e64403/contrib/blur-console/src/main/java/org/apache/blur/console/util/Config.java
----------------------------------------------------------------------
diff --git 
a/contrib/blur-console/src/main/java/org/apache/blur/console/util/Config.java 
b/contrib/blur-console/src/main/java/org/apache/blur/console/util/Config.java
index 5b797f0..d059eaf 100644
--- 
a/contrib/blur-console/src/main/java/org/apache/blur/console/util/Config.java
+++ 
b/contrib/blur-console/src/main/java/org/apache/blur/console/util/Config.java
@@ -2,6 +2,7 @@ package org.apache.blur.console.util;
 
 import java.io.File;
 import java.io.FileInputStream;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
@@ -10,6 +11,7 @@ import java.util.Timer;
 import java.util.TimerTask;
 import java.util.concurrent.TimeUnit;
 
+import org.apache.blur.BlurConfiguration;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.Predicate;
 import org.apache.commons.collections.Transformer;
@@ -26,6 +28,8 @@ public class Config {
        private static boolean foundSite = false;
        private static int port = 8080;
        
+       private static BlurConfiguration blurConfig;
+       
        public static Collection<String> getControllers() {
                return ImmutableList.copyOf(controllers);
        }
@@ -41,18 +45,23 @@ public class Config {
        public static int getConsolePort() {
                return port;
        }
+       public static BlurConfiguration getBlurConfig() {
+               return blurConfig;
+       }
        
-       public static void setupConfig() {
-               String blurHome = System.getenv("BLUR_HOME");
+       public static void setupConfig() throws IOException {
+               blurConfig = new BlurConfiguration();
                
-               if (StringUtils.isNotBlank(blurHome)) {
-                       File blurHomeDir = new File(blurHome + 
"/conf/blur-site.properties");
-                       if (blurHomeDir.exists()) {
-                               foundSite = true;
-                       }
-                       
-                       startTimer(blurHome);
-               }
+//             String blurHome = System.getenv("BLUR_HOME");
+//             
+//             if (StringUtils.isNotBlank(blurHome)) {
+//                     File blurHomeDir = new File(blurHome + 
"/conf/blur-site.properties");
+//                     if (blurHomeDir.exists()) {
+//                             foundSite = true;
+//                     }
+//                     
+//                     startTimer(blurHome);
+//             }
        }
        
        private static void startTimer(final String blurHome) {

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/c6e64403/contrib/blur-console/src/main/resources/org/apache/blur/console/webapp/index.html
----------------------------------------------------------------------
diff --git 
a/contrib/blur-console/src/main/resources/org/apache/blur/console/webapp/index.html
 
b/contrib/blur-console/src/main/resources/org/apache/blur/console/webapp/index.html
index 603806d..641d300 100644
--- 
a/contrib/blur-console/src/main/resources/org/apache/blur/console/webapp/index.html
+++ 
b/contrib/blur-console/src/main/resources/org/apache/blur/console/webapp/index.html
@@ -1,4 +1,3 @@
-<html>
        <head>
                <title>Blur Console</title>
                <link rel="stylesheet" type="text/css" href="css/bootstrap.css">
@@ -22,10 +21,14 @@
                         <div class="row">
                             <div class="col-md-4">
                                 <h4>Controllers</h4>
-                                <canvas doughnutchart data="controllerData" 
width="200" height="200"></canvas>
+                                <canvas doughnutchart data="controllerData" 
width="100" height="100" options="chartOptions"></canvas>
                             </div>
                             <div class="col-md-4">
-                                <h3>Shards</h3>
+                                <h4>Shards</h4>
+                                <div ng-repeat="cluster in clusters">
+                                       <h5>{{cluster.name}}</h5>
+                                       <canvas doughnutchart 
data="cluster.data" width="75" height="75" options="chartOptions"></canvas>
+                                </div>
                             </div>
                             <div class="col-md-4">
                                 <h3>Tables</h3>

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/c6e64403/contrib/blur-console/src/main/resources/org/apache/blur/console/webapp/js/dashboard.js
----------------------------------------------------------------------
diff --git 
a/contrib/blur-console/src/main/resources/org/apache/blur/console/webapp/js/dashboard.js
 
b/contrib/blur-console/src/main/resources/org/apache/blur/console/webapp/js/dashboard.js
index b651ee7..52f8ac7 100644
--- 
a/contrib/blur-console/src/main/resources/org/apache/blur/console/webapp/js/dashboard.js
+++ 
b/contrib/blur-console/src/main/resources/org/apache/blur/console/webapp/js/dashboard.js
@@ -1,11 +1,20 @@
 blurApp.controller('DashboardCtrl', function($scope, $http, $timeout) {
+       $scope.chartOptions = {
+               animation: false        
+       };
     $scope.controllerData = [];
-    //$scope.shard
+    $scope.clusters = [];
 
-    (function tick() {
+    (function controller_tick() {
         $http.get('/service/dashboard/controllers/status').success(function 
(data) {
             $scope.controllerData = data;
-            $timeout(tick, 10000);
+            $timeout(controller_tick, 10000);
         });
     })();
+    (function cluster_tick() {
+       $http.get('/service/dashboard/clusters/status').success(function (data) 
{
+               $scope.clusters = data;
+               $timeout(cluster_tick, 10000);
+       });
+    })();
 })
\ No newline at end of file

Reply via email to