From df32eb68271976662ffab503d630362a35ae48ff Mon Sep 17 00:00:00 2001 From: antirez Date: Tue, 11 Mar 2014 14:58:33 +0100 Subject: [PATCH] redis-trib: new subcommand 'call'. Exec command in all nodes. Example: ./redis-trib.rb call 192.168.1.11:7000 config get cluster-node-timeout --- src/redis-trib.rb | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/redis-trib.rb b/src/redis-trib.rb index 1fc73917..bff4cab1 100755 --- a/src/redis-trib.rb +++ b/src/redis-trib.rb @@ -952,6 +952,23 @@ class RedisTrib xputs ">>> New node timeout set. #{ok_count} OK, #{err_count} ERR." end + def call_cluster_cmd(argv,opt) + cmd = argv[1..-1] + cmd[0] = cmd[0].upcase + + # Load cluster information + load_cluster_info_from_node(argv[0]) + xputs ">>> Calling #{cmd.join(" ")}" + @nodes.each{|n| + begin + res = n.r.send(*cmd) + puts "#{n}: #{res}" + rescue => e + puts "#{n}: #{e}" + end + } + end + def help_cluster_cmd(argv,opt) show_help exit 0 @@ -995,6 +1012,7 @@ COMMANDS={ "add-node" => ["addnode_cluster_cmd", 3, "new_host:new_port existing_host:existing_port"], "del-node" => ["delnode_cluster_cmd", 3, "host:port node_id"], "set-timeout" => ["set_timeout_cluster_cmd", 3, "host:port milliseconds"], + "call" => ["call_cluster_cmd", -3, "host:port command arg arg .. arg"], "help" => ["help_cluster_cmd", 1, "(show this help)"] }