Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
85f52ebc
Commit
85f52ebc
authored
Oct 11, 2013
by
antirez
Browse files
Cluster: rough support for sub-command options in redis-trib.
parent
0c9f60a6
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/redis-trib.rb
View file @
85f52ebc
...
...
@@ -589,19 +589,19 @@ class RedisTrib
# redis-trib subcommands implementations
def
check_cluster_cmd
load_cluster_info_from_node
(
ARGV
[
1
])
def
check_cluster_cmd
(
argv
,
opt
)
load_cluster_info_from_node
(
argv
[
0
])
check_cluster
end
def
fix_cluster_cmd
def
fix_cluster_cmd
(
argv
,
opt
)
@fix
=
true
load_cluster_info_from_node
(
ARGV
[
1
])
load_cluster_info_from_node
(
argv
[
0
])
check_cluster
end
def
reshard_cluster_cmd
load_cluster_info_from_node
(
ARGV
[
1
])
def
reshard_cluster_cmd
(
argv
,
opt
)
load_cluster_info_from_node
(
argv
[
0
])
check_cluster
if
@errors
.
length
!=
0
puts
"*** Please fix your cluster problems before resharding"
...
...
@@ -667,9 +667,9 @@ class RedisTrib
}
end
def
create_cluster_cmd
def
create_cluster_cmd
(
argv
,
opt
)
xputs
">>> Creating cluster"
ARGV
[
1
..-
1
].
each
{
|
n
|
argv
[
0
..-
1
].
each
{
|
n
|
node
=
ClusterNode
.
new
(
n
)
node
.
connect
(
:abort
=>
true
)
node
.
assert_cluster
...
...
@@ -693,15 +693,15 @@ class RedisTrib
check_cluster
end
def
addnode_cluster_cmd
xputs
">>> Adding node
#{
ARGV
[
1
]
}
to cluster
#{
ARGV
[
2
]
}
"
def
addnode_cluster_cmd
(
argv
,
opt
)
xputs
">>> Adding node
#{
argv
[
0
]
}
to cluster
#{
argv
[
1
]
}
"
# Check the existing cluster
load_cluster_info_from_node
(
ARGV
[
2
])
load_cluster_info_from_node
(
argv
[
1
])
check_cluster
# Add the new node
new
=
ClusterNode
.
new
(
ARGV
[
1
])
new
=
ClusterNode
.
new
(
argv
[
0
])
new
.
connect
(
:abort
=>
true
)
new
.
assert_cluster
new
.
load_info
...
...
@@ -713,10 +713,39 @@ class RedisTrib
new
.
r
.
cluster
(
"meet"
,
first
[
:host
],
first
[
:port
])
end
def
help_cluster_cmd
def
help_cluster_cmd
(
opt
)
show_help
exit
0
end
# Parse the options for the specific command "cmd".
# Returns an hash populate with option => value pairs, and the index of
# the first non-option argument in ARGV.
def
parse_options
(
cmd
)
idx
=
1
;
# Current index into ARGV
options
=
{}
while
idx
<
ARGV
.
length
&&
ARGV
[
idx
][
0
..
1
]
==
'--'
if
ARGV
[
idx
][
0
..
1
]
==
"--"
option
=
ARGV
[
idx
][
2
..-
1
]
idx
+=
1
if
ALLOWED_OPTIONS
[
cmd
]
==
nil
||
ALLOWED_OPTIONS
[
cmd
][
option
]
==
nil
puts
"Unknown option '
#{
option
}
' for command '
#{
cmd
}
'"
exit
1
end
if
ALLOWED_OPTIONS
[
cmd
][
option
]
value
=
ARGV
[
idx
]
idx
+=
1
else
value
=
true
end
options
[
option
]
=
value
else
# Remaining arguments are not options.
break
end
end
return
options
,
idx
end
end
COMMANDS
=
{
...
...
@@ -728,6 +757,10 @@ COMMANDS={
"help"
=>
[
"help_cluster_cmd"
,
1
,
"(show this help)"
]
}
ALLOWED_OPTIONS
=
{
"create"
=>
{
"slaves"
=>
false
}
}
def
show_help
puts
"Usage: redis-trib <command> <arguments ...>"
puts
...
...
@@ -749,7 +782,10 @@ if !cmd_spec
puts
"Unknown redis-trib subcommand '
#{
ARGV
[
0
]
}
'"
exit
1
end
rt
.
check_arity
(
cmd_spec
[
1
],
ARGV
.
length
)
# Parse options
cmd_options
,
first_non_option
=
rt
.
parse_options
(
ARGV
[
0
].
downcase
)
rt
.
check_arity
(
cmd_spec
[
1
],
ARGV
.
length
-
(
first_non_option
-
1
))
# Dispatch
rt
.
send
(
cmd_spec
[
0
])
rt
.
send
(
cmd_spec
[
0
]
,
ARGV
[
first_non_option
..-
1
],
cmd_options
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment