@@ -33,30 +33,40 @@ defmodule RabbitMQ.CLI.Queues.Commands.GrowCommand do
33
33
{ :validation_failure , :too_many_args }
34
34
end
35
35
36
- def validate ( [ _ , s ] , _ )
36
+ def validate ( args = [ n , s ] , opts ) do
37
+ case Integer . parse ( n ) do
38
+ { cluster_size , _ } when is_integer ( cluster_size ) ->
39
+ do_validate ( [ cluster_size , s ] , opts )
40
+
41
+ :error ->
42
+ do_validate ( args , opts )
43
+ end
44
+ end
45
+
46
+ def do_validate ( [ _ , s ] , _ )
37
47
when not ( s == "all" or
38
48
s == "even" ) do
39
49
{ :validation_failure , "strategy '#{ s } ' is not recognised." }
40
50
end
41
51
42
- def validate ( [ n , _ ] , _ )
52
+ def do_validate ( [ n , _ ] , _ )
43
53
when ( is_integer ( n ) and n <= 0 ) do
44
54
{ :validation_failure , "target quorum cluster size '#{ n } ' must be greater than 0." }
45
55
end
46
56
47
- def validate ( [ n , _ ] , % { membership: m } )
57
+ def do_validate ( [ n , _ ] , % { membership: m } )
48
58
when ( is_integer ( n ) and not ( m == "voter" or m == "promotable" ) ) do
49
59
{ :validation_failure , "voter status '#{ m } ' must be 'voter' or 'promotable' to grow to target quorum cluster size '#{ n } '." }
50
60
end
51
61
52
- def validate ( _ , % { membership: m } )
62
+ def do_validate ( _ , % { membership: m } )
53
63
when not ( m == "promotable" or
54
64
m == "non_voter" or
55
65
m == "voter" ) do
56
66
{ :validation_failure , "voter status '#{ m } ' is not recognised." }
57
67
end
58
68
59
- def validate ( _ , _ ) do
69
+ def do_validate ( _ , _ ) do
60
70
:ok
61
71
end
62
72
@@ -65,10 +75,12 @@ defmodule RabbitMQ.CLI.Queues.Commands.GrowCommand do
65
75
[
66
76
& Validators . rabbit_is_running / 2 ,
67
77
fn args = [ n , _ ] , opts ->
68
- if is_integer ( n ) do
69
- :ok
70
- else
71
- Validators . existing_cluster_member ( args , opts )
78
+ case Integer . parse ( n ) do
79
+ { cluster_size , _ } when is_integer ( cluster_size ) ->
80
+ :ok
81
+
82
+ :error ->
83
+ Validators . existing_cluster_member ( args , opts )
72
84
end
73
85
end
74
86
] ,
@@ -85,10 +97,12 @@ defmodule RabbitMQ.CLI.Queues.Commands.GrowCommand do
85
97
} ) do
86
98
87
99
node_or_quorum_cluster_size =
88
- if is_integer ( node_or_quorum_cluster_size ) do
89
- node_or_quorum_cluster_size
90
- else
91
- to_atom ( node_or_quorum_cluster_size )
100
+ case Integer . parse ( node_or_quorum_cluster_size ) do
101
+ { cluster_size , _ } when is_integer ( cluster_size ) ->
102
+ cluster_size
103
+
104
+ :error ->
105
+ to_atom ( node_or_quorum_cluster_size )
92
106
end
93
107
94
108
args = [ node_or_quorum_cluster_size , vhost_pat , queue_pat , to_atom ( strategy ) ]
@@ -160,8 +174,14 @@ defmodule RabbitMQ.CLI.Queues.Commands.GrowCommand do
160
174
do:
161
175
"Grows quorum queue clusters by adding a member (replica) on the specified node for all matching queues"
162
176
163
- def banner ( [ node , strategy ] , _ ) do
164
- "Growing #{ strategy } quorum queues on #{ node } ..."
177
+ def banner ( [ node_or_quorum_cluster_size , strategy ] , % { queue_pattern: queue_pattern } ) do
178
+ case Integer . parse ( node_or_quorum_cluster_size ) do
179
+ { cluster_size , _ } when is_integer ( cluster_size ) ->
180
+ "Growing #{ strategy } quorum queues matching '#{ queue_pattern } ' to a target cluster size of '#{ cluster_size } '..."
181
+
182
+ :error ->
183
+ "Growing #{ strategy } quorum queues matching '#{ queue_pattern } ' to #{ node_or_quorum_cluster_size } ..."
184
+ end
165
185
end
166
186
167
187
#
0 commit comments