diff options
author | Julien Danjou <julien@danjou.info> | 2014-12-09 17:02:33 +0100 |
---|---|---|
committer | Julien Danjou <julien@danjou.info> | 2014-12-09 17:04:22 +0100 |
commit | 1cb825dd5f9d1bf059ca09e396b5d018a90c8d5c (patch) | |
tree | 77beb6411c328f50868121d00c354a33ab3b550a | |
parent | 88f0533a3d6ceb2b86f9018ef7043448b2f91e4c (diff) | |
download | tooz-1cb825dd5f9d1bf059ca09e396b5d018a90c8d5c.tar.gz |
redis: add support for group deletion
Change-Id: Ia86213d15f58f2842106ce4571d3f654adb519e9
-rw-r--r-- | tooz/drivers/redis.py | 19 |
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)) |