]> git.saurik.com Git - redis.git/blobdiff - src/redis-trib.rb
Variadic ZREM
[redis.git] / src / redis-trib.rb
index 413f7c070dfebf10ad106cffa2f3b0734251b4f5..31fc5230550852a5fe6848d2b0c9064990b4cdc0 100755 (executable)
@@ -31,7 +31,7 @@ class ClusterNode
     def connect(o={})
         xputs "Connecting to node #{self}: "
         begin
-            @r = Redis.new(:host => @ost, :port => @port)
+            @r = Redis.new(:host => @host, :port => @port)
             @r.ping
         rescue
             puts "ERROR"
@@ -80,7 +80,7 @@ class ClusterNode
 
     def info_string
         # We want to display the hash slots assigned to this node
-        # as ranges, like in: "1-5,8,9,20-35,30"
+        # as ranges, like in: "1-5,8-9,20-25,30"
         #
         # Note: this could be easily written without side effects,
         # we use 'slots' just to split the computation into steps.
@@ -148,35 +148,8 @@ class RedisTrib
         @nodes << node
     end
 
-    def create_cluster
-        puts "Creating cluster"
-        ARGV[1..-1].each{|n|
-            node = ClusterNode.new(n)
-            node.connect(:abort => true)
-            node.assert_cluster
-            node.assert_empty
-            add_node(node)
-        }
-        puts "Performing hash slots allocation on #{@nodes.length} nodes..."
-        alloc_slots
-        show_nodes
-        yes_or_die "Can I set the above configuration?"
-        flush_nodes_config
-        puts "** Nodes configuration updated"
-        puts "** Sending CLUSTER MEET messages to join the cluster"
-        join_cluster
-        check_cluster
-    end
-
     def check_cluster
-        puts "Performing Cluster Check (node #{ARGV[1]})"
-        node = ClusterNode.new(ARGV[1])
-        node.connect(:abort => true)
-        node.assert_cluster
-        node.add_slots(10..15)
-        node.add_slots(30..30)
-        node.add_slots(5..5)
-        add_node(node)
+        puts "Performing Cluster Check (using node #{@nodes[0]})"
         show_nodes
     end
 
@@ -225,11 +198,41 @@ class RedisTrib
             exit 1
         end
     end
+
+    # redis-trib subcommands implementations
+
+    def check_cluster_cmd
+        node = ClusterNode.new(ARGV[1])
+        node.connect(:abort => true)
+        node.assert_cluster
+        add_node(node)
+        check_cluster
+    end
+
+    def create_cluster_cmd
+        puts "Creating cluster"
+        ARGV[1..-1].each{|n|
+            node = ClusterNode.new(n)
+            node.connect(:abort => true)
+            node.assert_cluster
+            node.assert_empty
+            add_node(node)
+        }
+        puts "Performing hash slots allocation on #{@nodes.length} nodes..."
+        alloc_slots
+        show_nodes
+        yes_or_die "Can I set the above configuration?"
+        flush_nodes_config
+        puts "** Nodes configuration updated"
+        puts "** Sending CLUSTER MEET messages to join the cluster"
+        join_cluster
+        check_cluster
+    end
 end
 
 COMMANDS={
-    "create" => ["create_cluster", -2, "host1:port host2:port ... hostN:port"],
-    "check" =>  ["check_cluster", 2, "host:port"]
+    "create" => ["create_cluster_cmd", -2, "host1:port host2:port ... hostN:port"],
+    "check" =>  ["check_cluster_cmd", 2, "host:port"]
 }
 
 # Sanity check