MINOR: cli: ability to change a server's port

Enrichment of the 'set server <b>/<s> addr' cli directive to allow changing
now a server's port.
The new syntax looks like:
  set server <b>/<s> addr [port <port>]
This commit is contained in:
Baptiste Assmann 2016-08-03 22:34:12 +02:00 committed by Willy Tarreau
parent d458adcc52
commit 3749ebf6fc
2 changed files with 18 additions and 2 deletions

View File

@ -1582,8 +1582,11 @@ set rate-limit ssl-sessions global <value>
is passed in number of sessions per second sent to the SSL stack. It applies is passed in number of sessions per second sent to the SSL stack. It applies
before the handshake in order to protect the stack against handshake abuses. before the handshake in order to protect the stack against handshake abuses.
set server <backend>/<server> addr <ip4 or ip6 address> set server <backend>/<server> addr <ip4 or ip6 address> [port <port>]
Replace the current IP address of a server by the one provided. Replace the current IP address of a server by the one provided.
Optionnaly, the port can be changed using the 'port' parameter.
Note that changing the port also support switching from/to port mapping
(notation with +X or -Y), only if a port is configured for the health check.
set server <backend>/<server> agent [ up | down ] set server <backend>/<server> agent [ up | down ]
Force a server's agent to a new state. This can be useful to immediately Force a server's agent to a new state. This can be useful to immediately

View File

@ -1800,7 +1800,20 @@ static int stats_sock_parse_request(struct stream_interface *si, char *line)
appctx->st0 = STAT_CLI_PRINT; appctx->st0 = STAT_CLI_PRINT;
} }
else if (strcmp(args[3], "addr") == 0) { else if (strcmp(args[3], "addr") == 0) {
warning = server_parse_addr_change_request(sv, args[4], "stats command"); char *addr = NULL;
char *port = NULL;
if (strlen(args[4]) == 0) {
appctx->ctx.cli.msg = "set server <b>/<s> requires an <addr> .\n";
appctx->st0 = STAT_CLI_PRINT;
return 1;
}
else {
addr = args[4];
}
if (strcmp(args[5], "port") == 0) {
port = args[6];
}
warning = update_server_addr_port(sv, addr, port, "stats socket command");
if (warning) { if (warning) {
appctx->ctx.cli.msg = warning; appctx->ctx.cli.msg = warning;
appctx->st0 = STAT_CLI_PRINT; appctx->st0 = STAT_CLI_PRINT;