Differentiate between DRAIN and DRAIN (agent) when reporting stats.
This is consistent with the distinction made between DOWN and DOWN (agent).

Signed-off-by: Simon Horman <ho...@verge.net.au>

---
v2
* Reworked to use SRV_STATS_STATE_*
---
 src/dumpstats.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/dumpstats.c b/src/dumpstats.c
index 5704fe4fdcf4..095371fd4ae3 100644
--- a/src/dumpstats.c
+++ b/src/dumpstats.c
@@ -2929,6 +2929,7 @@ enum srv_stats_state {
        SRV_STATS_STATE_NOLB,
        SRV_STATS_STATE_DRAIN_GOING_DOWN,
        SRV_STATS_STATE_DRAIN,
+       SRV_STATS_STATE_DRAIN_AGENT,
        SRV_STATS_STATE_NO_CHECK,
 
        SRV_STATS_STATE_COUNT, /* Must be last */
@@ -2989,6 +2990,7 @@ static int stats_dump_sv_stats(struct stream_interface 
*si, struct proxy *px, in
                        [SRV_STATS_STATE_NOLB]                  = "NOLB",
                        [SRV_STATS_STATE_DRAIN_GOING_DOWN]      = "DRAIN %d/%d 
&darr;",
                        [SRV_STATS_STATE_DRAIN]                 = "DRAIN",
+                       [SRV_STATS_STATE_DRAIN_AGENT]           = "DRAIN 
(agent)",
                        [SRV_STATS_STATE_NO_CHECK]              = "<i>no 
check</i>",
                };
 
@@ -3243,6 +3245,7 @@ static int stats_dump_sv_stats(struct stream_interface 
*si, struct proxy *px, in
                        [SRV_STATS_STATE_NOLB]                  = "NOLB,",
                        [SRV_STATS_STATE_DRAIN_GOING_DOWN]      = "DRAIN 
%d/%d,",
                        [SRV_STATS_STATE_DRAIN]                 = "DRAIN,",
+                       [SRV_STATS_STATE_DRAIN_AGENT]           = "DRAIN 
(agent)",
                        [SRV_STATS_STATE_NO_CHECK]              = "no check,"
                };
 
@@ -3910,7 +3913,9 @@ static int stats_dump_proxy_to_buffer(struct 
stream_interface *si, struct proxy
                                        sv_colour = SRV_STATS_COLOUR_DRAINING;
 
                                if (sv->admin & SRV_ADMF_DRAIN) {
-                                       if (sv_state == 
SRV_STATS_STATE_UP_GOING_DOWN)
+                                       if (svs->agent.state & CHK_ST_ENABLED)
+                                               sv_state = 
SRV_STATS_STATE_DRAIN_AGENT;
+                                       else if (sv_state == 
SRV_STATS_STATE_UP_GOING_DOWN)
                                                sv_state = 
SRV_STATS_STATE_DRAIN_GOING_DOWN;
                                        else
                                                sv_state = 
SRV_STATS_STATE_DRAIN;
-- 
2.1.4


Reply via email to