mirror of
https://github.com/samba-team/samba.git
synced 2025-08-30 17:49:30 +03:00
tools/ctdb: Fix arguments/semantics of rebalance node
There's no reason why specifying a node should be compulsory. This is a cluster-wide operation because it is implemented by the recovery master so multiple nodes should not be specified using -n. However, the command should be able to specify multiple nodes so let it have its own nodestring argument. This change should be backward compatible with the old requirement of specifying a single node via -n. Signed-off-by: Martin Schwenke <martin@meltin.net> (This used to be ctdb commit 0846c00597adb66bba8c9dbf63443d0c2f91a7d1)
This commit is contained in:
committed by
Amitay Isaacs
parent
c484361076
commit
5f0d85d4db
@ -1773,16 +1773,30 @@ static int rebalance_node(struct ctdb_context *ctdb, uint32_t pnn)
|
|||||||
*/
|
*/
|
||||||
static int control_rebalancenode(struct ctdb_context *ctdb, int argc, const char **argv)
|
static int control_rebalancenode(struct ctdb_context *ctdb, int argc, const char **argv)
|
||||||
{
|
{
|
||||||
switch (options.pnn) {
|
uint32_t *nodes;
|
||||||
case CTDB_BROADCAST_ALL:
|
uint32_t pnn_mode;
|
||||||
case CTDB_CURRENT_NODE:
|
int i, ret;
|
||||||
DEBUG(DEBUG_ERR,("You must specify a node number with -n <pnn> for the node to rebalance\n"));
|
|
||||||
|
assert_single_node_only();
|
||||||
|
|
||||||
|
if (argc > 1) {
|
||||||
|
usage();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Determine the nodes where IPs need to be reloaded */
|
||||||
|
if (!parse_nodestring(ctdb, argc == 1 ? argv[0] : NULL,
|
||||||
|
options.pnn, true, &nodes, &pnn_mode)) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return rebalance_node(ctdb, options.pnn);
|
for (i = 0; i < talloc_array_length(nodes); i++) {
|
||||||
}
|
if (!rebalance_node(ctdb, nodes[i])) {
|
||||||
|
ret = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static int rebalance_ip(struct ctdb_context *ctdb, ctdb_sock_addr *addr)
|
static int rebalance_ip(struct ctdb_context *ctdb, ctdb_sock_addr *addr)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user