From 8fecf93d567f9391ccf39915b87074546ea7af34 Mon Sep 17 00:00:00 2001 From: dvora-h Date: Thu, 24 Feb 2022 12:03:33 +0200 Subject: [PATCH 1/5] delslotsrange --- redis/commands/cluster.py | 11 +++++++++++ tests/test_cluster.py | 6 ++++++ 2 files changed, 17 insertions(+) diff --git a/redis/commands/cluster.py b/redis/commands/cluster.py index 8bdcbbadf6..f3104c30f4 100644 --- a/redis/commands/cluster.py +++ b/redis/commands/cluster.py @@ -267,6 +267,17 @@ def cluster_delslots(self, *slots): """ return [self.execute_command("CLUSTER DELSLOTS", slot) for slot in slots] + def cluster_delslotsrange(self, *slots): + """ + Similar to the CLUSTER DELSLOTS command. + The difference is that CLUSTER DELSLOTS takes a list of hash slots to remove + from the node, while CLUSTER DELSLOTSRANGE takes a list of slot ranges to remove + from the node. + + For more information check https://redis.io/commands/cluster-delslotsrange + """ + return self.execute_command("CLUSTER DELSLOTSRANGE", *slots) + def cluster_failover(self, target_node, option=None): """ Forces a slave to perform a manual failover of its master diff --git a/tests/test_cluster.py b/tests/test_cluster.py index ab98ed515d..8db18a2b60 100644 --- a/tests/test_cluster.py +++ b/tests/test_cluster.py @@ -885,6 +885,12 @@ def test_cluster_delslots(self): assert node0.redis_connection.connection.read_response.called assert node1.redis_connection.connection.read_response.called + # def test_cluster_delslotsrange(self, unstable_r): + # node = unstable_r.get_random_node() + # mock_node_resp(node, "OK") + # unstable_r.cluster_addslots(node, 1, 2, 3, 4, 5) + # assert unstable_r.cluster_delslotsrange(1, 5) + def test_cluster_failover(self, r): node = r.get_random_node() mock_node_resp(node, "OK") From c987e1af79dd1da367fcce59e81c987d9fba231b Mon Sep 17 00:00:00 2001 From: dvora-h Date: Thu, 24 Feb 2022 12:12:23 +0200 Subject: [PATCH 2/5] test --- redis/client.py | 1 + redis/cluster.py | 2 ++ tests/test_cluster.py | 10 +++++----- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/redis/client.py b/redis/client.py index 0eade79e90..6752ef806d 100755 --- a/redis/client.py +++ b/redis/client.py @@ -713,6 +713,7 @@ class AbstractRedis: "CLUSTER COUNT-FAILURE-REPORTS": lambda x: int(x), "CLUSTER COUNTKEYSINSLOT": lambda x: int(x), "CLUSTER DELSLOTS": bool_ok, + "CLUSTER DELSLOTSRANGE": bool_ok, "CLUSTER FAILOVER": bool_ok, "CLUSTER FORGET": bool_ok, "CLUSTER INFO": parse_cluster_info, diff --git a/redis/cluster.py b/redis/cluster.py index b8d6b1997f..6d7323af78 100644 --- a/redis/cluster.py +++ b/redis/cluster.py @@ -299,6 +299,7 @@ class RedisCluster(RedisClusterCommands): [ "CLUSTER COUNTKEYSINSLOT", "CLUSTER DELSLOTS", + "CLUSTER DELSLOTSRANGE", "CLUSTER GETKEYSINSLOT", "CLUSTER SETSLOT", ], @@ -311,6 +312,7 @@ class RedisCluster(RedisClusterCommands): "CLUSTER COUNT-FAILURE-REPORTS": int, "CLUSTER COUNTKEYSINSLOT": int, "CLUSTER DELSLOTS": bool, + "CLUSTER DELSLOTSRANGE": bool, "CLUSTER FAILOVER": bool, "CLUSTER FORGET": bool, "CLUSTER GETKEYSINSLOT": list, diff --git a/tests/test_cluster.py b/tests/test_cluster.py index 8db18a2b60..7411dfe19b 100644 --- a/tests/test_cluster.py +++ b/tests/test_cluster.py @@ -885,11 +885,11 @@ def test_cluster_delslots(self): assert node0.redis_connection.connection.read_response.called assert node1.redis_connection.connection.read_response.called - # def test_cluster_delslotsrange(self, unstable_r): - # node = unstable_r.get_random_node() - # mock_node_resp(node, "OK") - # unstable_r.cluster_addslots(node, 1, 2, 3, 4, 5) - # assert unstable_r.cluster_delslotsrange(1, 5) + def test_cluster_delslotsrange(self, unstable_r): + node = unstable_r.get_random_node() + mock_node_resp(node, "OK") + unstable_r.cluster_addslots(node, 1, 2, 3, 4, 5) + assert unstable_r.cluster_delslotsrange(1, 5) def test_cluster_failover(self, r): node = r.get_random_node() From 3be7b1d3b56d2c42d5f8b8152b0959e5597a9f59 Mon Sep 17 00:00:00 2001 From: dvora-h Date: Thu, 24 Feb 2022 12:16:34 +0200 Subject: [PATCH 3/5] linters --- redis/commands/cluster.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/redis/commands/cluster.py b/redis/commands/cluster.py index f3104c30f4..1313cbaf8e 100644 --- a/redis/commands/cluster.py +++ b/redis/commands/cluster.py @@ -271,7 +271,7 @@ def cluster_delslotsrange(self, *slots): """ Similar to the CLUSTER DELSLOTS command. The difference is that CLUSTER DELSLOTS takes a list of hash slots to remove - from the node, while CLUSTER DELSLOTSRANGE takes a list of slot ranges to remove + from the node, while CLUSTER DELSLOTSRANGE takes a list of slot ranges to remove from the node. For more information check https://redis.io/commands/cluster-delslotsrange From 7db567b0a40416034864a93736f75838af1dbcf5 Mon Sep 17 00:00:00 2001 From: dvora-h <67596500+dvora-h@users.noreply.github.com> Date: Tue, 8 Mar 2022 02:35:50 +0200 Subject: [PATCH 4/5] skip test --- tests/test_cluster.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tests/test_cluster.py b/tests/test_cluster.py index 7411dfe19b..69122270a5 100644 --- a/tests/test_cluster.py +++ b/tests/test_cluster.py @@ -885,11 +885,12 @@ def test_cluster_delslots(self): assert node0.redis_connection.connection.read_response.called assert node1.redis_connection.connection.read_response.called - def test_cluster_delslotsrange(self, unstable_r): - node = unstable_r.get_random_node() + @skip_if_server_version_lt("7.0.0) + def test_cluster_delslotsrange(self, r): + node = r.get_random_node() mock_node_resp(node, "OK") - unstable_r.cluster_addslots(node, 1, 2, 3, 4, 5) - assert unstable_r.cluster_delslotsrange(1, 5) + r.cluster_addslots(node, 1, 2, 3, 4, 5) + assert r.cluster_delslotsrange(1, 5) def test_cluster_failover(self, r): node = r.get_random_node() From 57935802d510e1fcb336a2a564546ef149161c1f Mon Sep 17 00:00:00 2001 From: dvora-h <67596500+dvora-h@users.noreply.github.com> Date: Tue, 8 Mar 2022 02:57:20 +0200 Subject: [PATCH 5/5] linters --- tests/test_cluster.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_cluster.py b/tests/test_cluster.py index 69122270a5..4d86268548 100644 --- a/tests/test_cluster.py +++ b/tests/test_cluster.py @@ -885,7 +885,7 @@ def test_cluster_delslots(self): assert node0.redis_connection.connection.read_response.called assert node1.redis_connection.connection.read_response.called - @skip_if_server_version_lt("7.0.0) + @skip_if_server_version_lt("7.0.0") def test_cluster_delslotsrange(self, r): node = r.get_random_node() mock_node_resp(node, "OK")