Redis: add missing interfaces

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

Branch: refs/heads/0.5.0
Commit: e4098ab6d71c4a1c64d316861e1b728c7da81479
Parents: c06d64c
Author: Aled Sage <[email protected]>
Authored: Mon Apr 22 13:09:04 2013 +0100
Committer: Andrew Kennedy <[email protected]>
Committed: Wed Apr 24 13:25:44 2013 +0100

----------------------------------------------------------------------
 .../entity/nosql/redis/RedisCluster.java        | 19 +++++++++
 .../brooklyn/entity/nosql/redis/RedisShard.java |  9 ++++
 .../brooklyn/entity/nosql/redis/RedisSlave.java | 12 ++++++
 .../brooklyn/entity/nosql/redis/RedisStore.java | 43 ++++++++++++++++++++
 .../entity/nosql/redis/RedisEc2LiveTest.java    |  3 +-
 5 files changed, 85 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/e4098ab6/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisCluster.java
----------------------------------------------------------------------
diff --git 
a/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisCluster.java 
b/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisCluster.java
new file mode 100644
index 0000000..57b3682
--- /dev/null
+++ b/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisCluster.java
@@ -0,0 +1,19 @@
+package brooklyn.entity.nosql.redis;
+
+import brooklyn.catalog.Catalog;
+import brooklyn.entity.Entity;
+import brooklyn.entity.group.DynamicCluster;
+import brooklyn.entity.proxying.ImplementedBy;
+import brooklyn.entity.trait.Startable;
+
+/**
+ * A cluster of {@link RedisStore}s with one master and a group of slaves.
+ *
+ * The slaves are contained in a {@link DynamicCluster} which can be resized 
by a policy if required.
+ *
+ * TODO add sensors with aggregated Redis statistics from cluster
+ */
+@Catalog(name="Redis Cluster", description="Redis is an open-source, 
networked, in-memory, key-value data store with optional durability", 
iconUrl="classpath:///redis-logo.jpeg")
+@ImplementedBy(RedisClusterImpl.class)
+public interface RedisCluster extends Entity, Startable {
+}

http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/e4098ab6/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisShard.java
----------------------------------------------------------------------
diff --git 
a/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisShard.java 
b/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisShard.java
new file mode 100644
index 0000000..7ce30c0
--- /dev/null
+++ b/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisShard.java
@@ -0,0 +1,9 @@
+package brooklyn.entity.nosql.redis;
+
+import brooklyn.entity.Entity;
+import brooklyn.entity.nosql.Shard;
+import brooklyn.entity.proxying.ImplementedBy;
+
+@ImplementedBy(RedisShardImpl.class)
+public interface RedisShard extends Entity, Shard {
+}

http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/e4098ab6/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisSlave.java
----------------------------------------------------------------------
diff --git 
a/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisSlave.java 
b/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisSlave.java
new file mode 100644
index 0000000..d433688
--- /dev/null
+++ b/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisSlave.java
@@ -0,0 +1,12 @@
+package brooklyn.entity.nosql.redis;
+
+import brooklyn.entity.proxying.ImplementedBy;
+
+/**
+ * A {@link RedisStore} configured as a slave.
+ *
+ * The {@code master} property must be set to the master Redis store entity.
+ */
+@ImplementedBy(RedisSlaveImpl.class)
+public interface RedisSlave extends RedisStore {
+}

http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/e4098ab6/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisStore.java
----------------------------------------------------------------------
diff --git 
a/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisStore.java 
b/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisStore.java
new file mode 100644
index 0000000..a6ce441
--- /dev/null
+++ b/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisStore.java
@@ -0,0 +1,43 @@
+package brooklyn.entity.nosql.redis;
+
+import brooklyn.catalog.Catalog;
+import brooklyn.config.ConfigKey;
+import brooklyn.entity.basic.SoftwareProcess;
+import brooklyn.entity.nosql.DataStore;
+import brooklyn.entity.proxying.ImplementedBy;
+import brooklyn.event.AttributeSensor;
+import brooklyn.event.basic.BasicAttributeSensor;
+import brooklyn.event.basic.BasicAttributeSensorAndConfigKey;
+import brooklyn.event.basic.BasicConfigKey;
+import brooklyn.event.basic.PortAttributeSensorAndConfigKey;
+import brooklyn.util.flags.SetFromFlag;
+
+/**
+ * An entity that represents a Redis key-value store service.
+ *
+ * TODO add sensors with Redis statistics using INFO command
+ */
+@Catalog(name="Redis Server", description="Redis is an open-source, networked, 
in-memory, key-value data store with optional durability", 
iconUrl="classpath:///redis-logo.jpeg")
+@ImplementedBy(RedisStoreImpl.class)
+public interface RedisStore extends SoftwareProcess, DataStore {
+
+    @SetFromFlag("version")
+    public static final BasicConfigKey<String> SUGGESTED_VERSION =
+            new BasicConfigKey<String>(SoftwareProcess.SUGGESTED_VERSION, 
"2.6.7");
+
+    @SetFromFlag("downloadUrl")
+    public static final BasicAttributeSensorAndConfigKey<String> DOWNLOAD_URL 
= new BasicAttributeSensorAndConfigKey<String>(
+            SoftwareProcess.DOWNLOAD_URL, 
"http://redis.googlecode.com/files/redis-${version}.tar.gz";);
+
+    @SetFromFlag("redisPort")
+    public static final PortAttributeSensorAndConfigKey REDIS_PORT = new 
PortAttributeSensorAndConfigKey("redis.port", "Redis port number", 6379);
+    
+    @SetFromFlag("configFile")
+    public static final ConfigKey<String> REDIS_CONFIG_FILE = new 
BasicConfigKey<String>(String.class, "redis.config.file", "Redis user 
configuration file");
+    
+    public static final AttributeSensor<Integer> UPTIME = new 
BasicAttributeSensor<Integer>(Integer.class, "redis.uptime", "Redis uptime in 
seconds");
+
+    public String getAddress();
+    
+    public String getConfigData(int port, boolean include);
+}

http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/e4098ab6/software/nosql/src/test/java/brooklyn/entity/nosql/redis/RedisEc2LiveTest.java
----------------------------------------------------------------------
diff --git 
a/software/nosql/src/test/java/brooklyn/entity/nosql/redis/RedisEc2LiveTest.java
 
b/software/nosql/src/test/java/brooklyn/entity/nosql/redis/RedisEc2LiveTest.java
index a3eeb2f..d49fee5 100644
--- 
a/software/nosql/src/test/java/brooklyn/entity/nosql/redis/RedisEc2LiveTest.java
+++ 
b/software/nosql/src/test/java/brooklyn/entity/nosql/redis/RedisEc2LiveTest.java
@@ -40,8 +40,9 @@ public class RedisEc2LiveTest extends AbstractEc2LiveTest {
     }
 
     private Connection getRedisConnection(RedisStore redis) {
+        String hostname = redis.getAttribute(RedisStore.HOSTNAME);
         int port = redis.getAttribute(RedisStore.REDIS_PORT);
-        Connection connection = new Connection("localhost", port);
+        Connection connection = new Connection(hostname, port);
         connection.connect();
         return connection;
     }

Reply via email to