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; }
