Report the current weight and the initial weight of server <server> in
backend <backend> or an error if either doesn't exist. The initial weight is
the one that appears in the configuration file. Both are normally equal
- unless the current weight has been changed.
+ unless the current weight has been changed. Both the backend and the server
+ may be specified either by their name or by their numeric ID, prefixed with a
+ dash ('#').
set weight <backend>/<server> <weight>[%]
Change a server's weight to the value passed in argument. If the value ends
requests to consider changes. A typical usage of this command is to disable
a server during an update by setting its weight to zero, then to enable it
again after the update by setting it back to 100%. This command is restricted
- and can only be issued on sockets configured for level "admin".
+ and can only be issued on sockets configured for level "admin". Both the
+ backend and the server may be specified either by their name or by their
+ numeric ID, prefixed with a dash ('#').
/*
{
struct proxy *p;
struct server *s;
+ int pid, sid;
*sv = NULL;
+ pid = 0;
+ if (*bk_name == '#')
+ pid = atoi(bk_name + 1);
+ sid = 0;
+ if (*sv_name == '#')
+ sid = atoi(sv_name + 1);
+
for (p = proxy; p; p = p->next)
- if ((p->cap & PR_CAP_BE) && (strcmp(p->id, bk_name) == 0))
+ if ((p->cap & PR_CAP_BE) &&
+ ((pid && p->uuid == pid) ||
+ (!pid && strcmp(p->id, bk_name) == 0)))
break;
if (bk)
*bk = p;
return 0;
for (s = p->srv; s; s = s->next)
- if (strcmp(s->id, sv_name) == 0)
+ if ((sid && s->puid == sid) ||
+ (!sid && strcmp(s->id, sv_name) == 0))
break;
*sv = s;
if (!s)