MINOR: cli: Add possiblity to change agent config via CLI/socket

This change adds possibility to change agent-addr and agent-send directives
by CLI/socket. Now you can replace server's and their configuration without
reloading/restarting whole haproxy, so it's a step in no-reload/no-restart
direction.

Depends on #e9602af - agent-addr is implemented there.

Can be backported to 1.7.
This commit is contained in:
Misiek 2017-01-09 09:40:42 +01:00 committed by Willy Tarreau
parent ea849333ca
commit 2da082d732

View File

@ -3469,6 +3469,33 @@ static int cli_parse_set_server(char **args, struct appctx *appctx, void *privat
appctx->st0 = CLI_ST_PRINT;
}
}
else if (strcmp(args[3], "agent-addr") == 0) {
if (!(sv->agent.state & CHK_ST_ENABLED)) {
appctx->ctx.cli.msg = "agent checks are not enabled on this server.\n";
appctx->st0 = CLI_ST_PRINT;
} else {
if (str2ip(args[4], &sv->agent.addr) == NULL) {
appctx->ctx.cli.msg = "incorrect addr address given for agent.\n";
appctx->st0 = CLI_ST_PRINT;
}
}
}
else if (strcmp(args[3], "agent-send") == 0) {
if (!(sv->agent.state & CHK_ST_ENABLED)) {
appctx->ctx.cli.msg = "agent checks are not enabled on this server.\n";
appctx->st0 = CLI_ST_PRINT;
} else {
char *nss = strdup(args[4]);
if (!nss) {
appctx->ctx.cli.msg = "cannot allocate memory for new string.\n";
appctx->st0 = CLI_ST_PRINT;
} else {
free(sv->agent.send_string);
sv->agent.send_string = nss;
sv->agent.send_string_len = strlen(args[4]);
}
}
}
else if (strcmp(args[3], "check-port") == 0) {
int i = 0;
if (strl2irc(args[4], strlen(args[4]), &i) != 0) {