summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulien Danjou <julien@danjou.info>2014-12-09 17:02:33 +0100
committerJulien Danjou <julien@danjou.info>2014-12-09 17:04:22 +0100
commit1cb825dd5f9d1bf059ca09e396b5d018a90c8d5c (patch)
tree77beb6411c328f50868121d00c354a33ab3b550a
parent88f0533a3d6ceb2b86f9018ef7043448b2f91e4c (diff)
downloadtooz-1cb825dd5f9d1bf059ca09e396b5d018a90c8d5c.tar.gz
redis: add support for group deletion
Change-Id: Ia86213d15f58f2842106ce4571d3f654adb519e9
-rw-r--r--tooz/drivers/redis.py19
1 files changed, 19 insertions, 0 deletions
diff --git a/tooz/drivers/redis.py b/tooz/drivers/redis.py
index 81545cc..333043e 100644
--- a/tooz/drivers/redis.py
+++ b/tooz/drivers/redis.py
@@ -569,6 +569,25 @@ class RedisDriver(coordination.CoordinationDriver):
encoded_group,
value_from_callable=True))
+ def delete_group(self, group_id):
+ encoded_group = self._encode_group_id(group_id)
+
+ def _delete_group(p):
+ # An empty group still have the special key _GROUP_EXISTS set, so
+ # its len is 1
+ if p.hlen(encoded_group) > 1:
+ raise coordination.GroupNotEmpty(group_id)
+ if not p.delete(encoded_group):
+ raise coordination.GroupNotCreated(group_id)
+ p.srem(self._groups,
+ self._encode_group_id(group_id,
+ apply_namespace=False))
+
+ return RedisFutureResult(self._submit(self._client.transaction,
+ _delete_group,
+ encoded_group,
+ value_from_callable=True))
+
def _destroy_group(self, group_id):
"""Should only be used in tests..."""
self._client.delete(self._encode_group_id(group_id))