]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: cli: Add possiblity to change agent config via CLI/socket
authorMisiek <creating.www@gmail.com>
Mon, 9 Jan 2017 08:40:42 +0000 (09:40 +0100)
committerWilly Tarreau <w@1wt.eu>
Mon, 16 Jan 2017 10:38:59 +0000 (11:38 +0100)
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.

src/server.c

index 87452d3c9d5d78d91550a385f21e78c5e8af42ea..9cc02f74f1df73dd418a578436191a5b60e9515b 100644 (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) {