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>
