From: Aurelien DARRAGON Date: Wed, 29 Mar 2023 09:30:36 +0000 (+0200) Subject: MINOR: hlua_fcn: add Server.tracking() X-Git-Tag: v2.8-dev10~31 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=406511a2dffe8a4e011929854efc3322b55a5237;p=thirdparty%2Fhaproxy.git MINOR: hlua_fcn: add Server.tracking() This function returns the currently tracked server, if any. --- diff --git a/doc/lua-api/index.rst b/doc/lua-api/index.rst index 5c05871aa1..4055ac24d4 100644 --- a/doc/lua-api/index.rst +++ b/doc/lua-api/index.rst @@ -1337,6 +1337,15 @@ Server class :param class_server sv: A :ref:`server_class` which indicates the manipulated server. +.. js:function:: Server.tracking(sv) + + Check if the current server is tracking another server. + + :param class_server sv: A :ref:`server_class` which indicates the manipulated + server. + :returns: A :ref:`server_class` which indicates the tracked server or nil if + the server doesn't track another one. + .. js:function:: Server.event_sub(sv, event_types, func) Register a function that will be called on specific server events. diff --git a/src/hlua_fcn.c b/src/hlua_fcn.c index 61eb580f35..931b609706 100644 --- a/src/hlua_fcn.c +++ b/src/hlua_fcn.c @@ -1410,6 +1410,26 @@ int hlua_server_agent_force_down(lua_State *L) return 0; } +/* returns the tracked server, if any */ +int hlua_server_tracking(lua_State *L) +{ + struct server *sv; + struct server *tracked; + + sv = hlua_check_server(L, 1); + if (sv == NULL) { + return 0; + } + + tracked = sv->track; + if (tracked == NULL) + lua_pushnil(L); + else + hlua_fcn_new_server(L, tracked); + + return 1; +} + /* hlua_event_sub wrapper for per-server subscription: * * hlua_event_sub() is called with sv->e_subs subscription list and @@ -1472,6 +1492,7 @@ int hlua_fcn_new_server(lua_State *L, struct server *srv) hlua_class_function(L, "agent_disable", hlua_server_agent_disable); hlua_class_function(L, "agent_force_up", hlua_server_agent_force_up); hlua_class_function(L, "agent_force_down", hlua_server_agent_force_down); + hlua_class_function(L, "tracking", hlua_server_tracking); hlua_class_function(L, "event_sub", hlua_server_event_sub); return 1;