Author: ivol37 at gmail.com
Date: Tue Jan 18 15:55:59 2011
New Revision: 675

Log:


Added:
   sandbox/ivol/cassandra-gadget/hector pom.xml
Modified:
   
sandbox/ivol/cassandra-gadget/src/main/java/org/amdatu/cassandra/gadget/osgi/Activator.java
   
sandbox/ivol/cassandra-gadget/src/main/java/org/amdatu/cassandra/gadget/service/CassandraClientGadgetImpl.java
   
sandbox/ivol/cassandra-gadget/src/main/resources/jsp/CassandraClientGadget.jsp

Added: sandbox/ivol/cassandra-gadget/hector pom.xml
==============================================================================
--- (empty file)
+++ sandbox/ivol/cassandra-gadget/hector pom.xml        Tue Jan 18 15:55:59 2011
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.amdatu</groupId>
+    <artifactId>org.amdatu.cassandra</artifactId>
+    <version>0.1.0-SNAPSHOT</version>
+  </parent>
+  <groupId>org.amdatu.cassandra</groupId>
+  <artifactId>gadget</artifactId>
+  <packaging>bundle</packaging>
+  <name>Amdatu Cassandra - Client gadget</name>
+  <description>Provides a cassandra client gadget</description>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.amdatu.web</groupId>
+      <artifactId>httpcontext</artifactId>
+      <version>${platform.version}</version>
+      <scope>provided</scope>
+      <type>bundle</type>
+    </dependency>
+    <dependency>
+      <groupId>org.amdatu.cassandra</groupId>
+      <artifactId>application</artifactId>
+      <scope>provided</scope>
+      <type>bundle</type>
+    </dependency>
+    <dependency>
+      <groupId>org.amdatu.opensocial</groupId>
+      <artifactId>shindig</artifactId>
+      <scope>provided</scope>
+      <version>${platform.version}</version>
+      <type>bundle</type>
+    </dependency>
+    <dependency>
+      <groupId>org.amdatu.opensocial</groupId>
+      <artifactId>gadgetmanagement</artifactId>
+      <version>${platform.version}</version>
+      <scope>provided</scope>
+      <type>bundle</type>
+    </dependency>
+    <dependency>
+      <groupId>org.json</groupId>
+      <artifactId>json</artifactId>
+      <version>20090211</version>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.amdatu.web.rest</groupId>
+      <artifactId>jaxrs</artifactId>
+      <version>${platform.version}</version>
+      <scope>provided</scope>
+      <type>bundle</type>
+    </dependency>
+    <dependency>
+      <groupId>me.prettyprint</groupId>
+      <artifactId>hector</artifactId>
+      <version>0.7.0-20</version>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>log4j</groupId>
+      <artifactId>log4j</artifactId>
+      <version>1.2.16</version>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+      <version>1.5.6</version>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-jdk14</artifactId>
+      <version>1.5.6</version>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.json</groupId>
+      <artifactId>json</artifactId>
+      <version>20090211</version>
+      <scope>compile</scope>
+    </dependency>
+  </dependencies>
+
+  <repositories>
+    <repository>
+      <id>riptano</id>
+      <name>riptano</name>
+      <url>http://mvn.riptano.com/content/repositories/public/</url>
+    </repository>
+  </repositories>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-bundle-plugin</artifactId>
+        <configuration>
+          <instructions>
+            
<Bundle-Activator>org.amdatu.cassandra.gadget.osgi.Activator</Bundle-Activator>
+            
<Bundle-SymbolicName>org.amdatu.cassandra.gadget</Bundle-SymbolicName>
+            <Embed-Dependency>*;scope=compile</Embed-Dependency>
+            <Embed-Transitive>true</Embed-Transitive>
+            <Import-Package>*;resolution:=optional</Import-Package>
+
+            <!--
+              !org.znerd.xmlenc,
+              !org.mortbay.jetty.bio,
+              !org.apache.commons.jexl,
+              !com.sun.jdmk.comm,
+              !org.mortbay.jetty.security,
+              !javax.mail.internet,
+              !org.json.simple,
+              !org.kosmix.kosmosfs.access,
+              !edu.emory.mathcs.backport.java.util,
+              !org.apache.commons.cli,
+              !org.apache.velocity.context,
+              !javax.jmdns,
+              !org.apache.commons.httpclient,
+              !org.mortbay.resource,
+              *
+              -->
+          </instructions>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+</project>
+

Modified: 
sandbox/ivol/cassandra-gadget/src/main/java/org/amdatu/cassandra/gadget/osgi/Activator.java
==============================================================================
--- 
sandbox/ivol/cassandra-gadget/src/main/java/org/amdatu/cassandra/gadget/osgi/Activator.java
 (original)
+++ 
sandbox/ivol/cassandra-gadget/src/main/java/org/amdatu/cassandra/gadget/osgi/Activator.java
 Tue Jan 18 15:55:59 2011
@@ -24,6 +24,7 @@
 import org.apache.felix.dm.DependencyActivatorBase;
 import org.apache.felix.dm.DependencyManager;
 import org.osgi.framework.BundleContext;
+import org.osgi.service.cm.ConfigurationAdmin;
 import org.osgi.service.log.LogService;
 
 /**
@@ -44,6 +45,7 @@
             
.add(createServiceDependency().setService(LogService.class).setRequired(true))
             
.add(createServiceDependency().setService(GadgetManagement.class).setRequired(true))
             
.add(createServiceDependency().setService(HttpContextServiceFactory.class).setRequired(true))
+            
.add(createServiceDependency().setService(ConfigurationAdmin.class).setRequired(true))
             
.add(createServiceDependency().setService(CassandraDaemonService.class).setRequired(true)));
     }
 

Modified: 
sandbox/ivol/cassandra-gadget/src/main/java/org/amdatu/cassandra/gadget/service/CassandraClientGadgetImpl.java
==============================================================================
--- 
sandbox/ivol/cassandra-gadget/src/main/java/org/amdatu/cassandra/gadget/service/CassandraClientGadgetImpl.java
      (original)
+++ 
sandbox/ivol/cassandra-gadget/src/main/java/org/amdatu/cassandra/gadget/service/CassandraClientGadgetImpl.java
      Tue Jan 18 15:55:59 2011
@@ -23,7 +23,6 @@
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.concurrent.TimeoutException;
 
 import javax.ws.rs.GET;
 import javax.ws.rs.PUT;
@@ -41,13 +40,9 @@
 import org.amdatu.web.httpcontext.HttpContextServiceFactory;
 import org.amdatu.web.httpcontext.ResourceProvider;
 import org.apache.cassandra.config.DatabaseDescriptor;
-import org.apache.cassandra.db.Row;
-import org.apache.cassandra.service.StorageProxy;
 import org.apache.cassandra.service.StorageService;
 import org.apache.cassandra.thrift.ColumnParent;
 import org.apache.cassandra.thrift.ConsistencyLevel;
-import org.apache.cassandra.thrift.IndexClause;
-import org.apache.cassandra.thrift.IndexExpression;
 import org.apache.cassandra.thrift.InvalidRequestException;
 import org.apache.cassandra.thrift.KeyRange;
 import org.apache.cassandra.thrift.KeySlice;
@@ -59,6 +54,8 @@
 import org.apache.felix.dm.Component;
 import org.apache.thrift.TException;
 import org.osgi.framework.BundleContext;
+import org.osgi.service.cm.Configuration;
+import org.osgi.service.cm.ConfigurationAdmin;
 import org.osgi.service.log.LogService;
 
 /**
@@ -74,6 +71,7 @@
     private volatile GadgetManagement m_gadgetManagement;
 
     private volatile CassandraDaemonService m_daemon;
+    private volatile ConfigurationAdmin m_configAdmin;
 
     // The private HTTP context service for this bundle
     private Component m_httpContextComponent;
@@ -221,6 +219,22 @@
         return "New replication factor: " + replicationFactor;
     }
 
+    @SuppressWarnings("unchecked")
+    @PUT
+    @Produces( { MediaType.TEXT_HTML })
+    @Path("autobootstrap/{enable}")
+    public String updateBootstrapMode(@PathParam("enable") final String 
enable) throws IOException {
+        boolean bEnable = "true".equalsIgnoreCase(enable);
+        Configuration config = 
m_configAdmin.getConfiguration("org.amdatu.core.cassandra.application");
+        if (bEnable) {
+            config.getProperties().put("autobootstrap", "true");
+            return "Auto bootstrap mode enabled";
+        } else {
+            config.getProperties().put("autobootstrap", "false");
+            return "Auto bootstrap mode disabled";
+        }
+    }
+
     // Maximum amount of rows to retrieve in queries
     private final static int ROW_LIMIT = 1000000;
 
@@ -267,21 +281,6 @@
         return keys;
     }
 
-    public List<String> getRowKeys2(String keyspace, String columnFamilyName) 
throws IOException, TimeoutException, UnavailableException {
-        SlicePredicate p = new SlicePredicate();
-        IndexClause indexClause = new IndexClause();
-        indexClause.setCount(ROW_LIMIT);
-        indexClause.setStart_key(EMPTY);
-        List<IndexExpression> expressions = new ArrayList<IndexExpression>();
-        indexClause.setExpressions(expressions);
-        List<Row> rows = StorageProxy.scan(keyspace, columnFamilyName, 
indexClause, p, ConsistencyLevel.ALL);
-        List<String> keys = new ArrayList<String>();
-        for (Row row : rows) {
-            keys.add(row.key.key.toString());
-        }
-        return keys;
-    }
-
     private String inetAddressToString(InetAddress address) {
         String result = address.getHostAddress();
         if (!address.getCanonicalHostName().equals(address.getHostAddress())) {

Modified: 
sandbox/ivol/cassandra-gadget/src/main/resources/jsp/CassandraClientGadget.jsp
==============================================================================
--- 
sandbox/ivol/cassandra-gadget/src/main/resources/jsp/CassandraClientGadget.jsp  
    (original)
+++ 
sandbox/ivol/cassandra-gadget/src/main/resources/jsp/CassandraClientGadget.jsp  
    Tue Jan 18 15:55:59 2011
@@ -52,13 +52,35 @@
         </fieldset>
 
         <fieldset>
-          <legend>Replication factor</legend>
-          <p>
-            Change the replication factor to:
-            <input type="text" id="rf" value="1"/>
-            <input type="submit" value="Change" 
onclick="javascript:changeReplicationFactor()" />
-            <div id="rfresult"></div>
-          </p>
+          <legend>Update ring topology</legend>
+          <table>
+            <tr>
+              <td>
+                <nobr>
+                Change the replication factor to:
+                <input type="text" id="rf" value="1"  size="1" maxlength="1"/>
+                <input type="submit" 
value="Change"onclick="javascript:changeReplicationFactor()" />
+                </nobr>
+              </td>
+            </tr>
+            <tr>
+              <td>
+                <div id="rfresult"></div>
+              </td>
+            </tr>
+            <tr>
+              <td>
+                Enable/disable bootstrap mode:
+                <input type="button" value="Enable" 
onclick="javascript:enableBootstrapMode()" />
+                <input type="button" value="Disable" 
onclick="javascript:disableBootstrapMode()" />
+              </td>
+            </tr>
+            <tr>
+              <td>
+                <div id="bootstrapresult"></div>
+              </td>
+            </tr>
+          </table>
         </fieldset>
 
         <fieldset>
@@ -116,6 +138,30 @@
         );
       }
 
+
+      function enableBootstrapMode() {
+        bootstrapMode("true");
+      }
+
+      function disableBootstrapMode() {
+        bootstrapMode("false");
+      }
+
+      function bootstrapMode(mode) {
+        var url = "${baseRestUrl}/autobootstrap/" + mode;
+        jQuery.ajax({
+          url: url,
+          type: "PUT",
+          dataType: "html",
+          async:true,
+          success: function(response) {
+             document.getElementById("bootstrapresult").innerHTML = response;
+             gadgets.window.adjustHeight();
+            }
+          }
+        );
+      }
+
       getTopology();
       getAll();
     </script>

Reply via email to