MINOR: checks: replace state DISABLED with CONFIGURED and ENABLED

At the moment, health checks and agent checks are tied : no agent
check is emitted if no health check is enabled. Other parameters
are considered in the condition for letting checks run. It will
help us selectively enable checks (agent and regular checks) to be
know whether they're enabled/disabled and configured or not. Now
we can already emit an error when trying to enable an unconfigured
agent.
This commit is contained in:
Willy Tarreau 2013-12-11 20:11:55 +01:00
parent 2c115e5047
commit 2e10f5a759
4 changed files with 14 additions and 5 deletions

View File

@ -36,7 +36,8 @@ enum chk_result {
/* flags used by check->state */
#define CHK_ST_INPROGRESS 0x0001 /* a check is currently running */
#define CHK_ST_DISABLED 0x0002 /* this check is currently administratively disabled */
#define CHK_ST_CONFIGURED 0x0002 /* this check is configured and may be enabled */
#define CHK_ST_ENABLED 0x0004 /* this check is currently administratively enabled */
/* check status */
enum {

View File

@ -5123,6 +5123,7 @@ int cfg_parse_listen(const char *file, int linenum, char **args, int kwm)
goto out;
}
newsrv->check.state |= CHK_ST_CONFIGURED | CHK_ST_ENABLED;
newsrv->state |= SRV_CHECKED;
}
@ -5145,6 +5146,7 @@ int cfg_parse_listen(const char *file, int linenum, char **args, int kwm)
goto out;
}
newsrv->agent.state |= CHK_ST_CONFIGURED | CHK_ST_ENABLED;
newsrv->state |= SRV_AGENT_CHECKED;
}

View File

@ -1165,7 +1165,7 @@ static void event_srv_chk_r(struct connection *conn)
* parameter of this function is the agent or check field
* of the server.
*/
disabled = check->server->agent.state & CHK_ST_DISABLED;
disabled = !(check->server->agent.state & CHK_ST_ENABLED);
if (strchr(check->bi->data, '%')) {
if (disabled)
@ -1509,7 +1509,7 @@ static struct task *process_chk(struct task *t)
if (!(s->state & SRV_CHECKED) ||
s->proxy->state == PR_STSTOPPED ||
(s->state & SRV_MAINTAIN) ||
(check->state & CHK_ST_DISABLED))
!(check->state & CHK_ST_ENABLED))
goto reschedule;
/* we'll initiate a new check */

View File

@ -1528,7 +1528,13 @@ static int stats_sock_parse_request(struct stream_interface *si, char *line)
if (!sv)
return 1;
sv->agent.state &= ~CHK_ST_DISABLED;
if (!(sv->agent.state & CHK_ST_CONFIGURED)) {
appctx->ctx.cli.msg = "Agent was not configured on this server, cannot enable.\n";
appctx->st0 = STAT_CLI_PRINT;
return 1;
}
sv->agent.state |= CHK_ST_ENABLED;
return 1;
}
if (strcmp(args[1], "server") == 0) {
@ -1599,7 +1605,7 @@ static int stats_sock_parse_request(struct stream_interface *si, char *line)
if (!sv)
return 1;
sv->agent.state |= CHK_ST_DISABLED;
sv->agent.state &= ~CHK_ST_ENABLED;
return 1;
}
else if (strcmp(args[1], "server") == 0) {