]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MEDIUM: server: remove experimental-mode for dynamic servers
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Wed, 9 Mar 2022 14:07:31 +0000 (15:07 +0100)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Fri, 11 Mar 2022 13:28:28 +0000 (14:28 +0100)
Dynamic servers feature is now judged to be stable enough. Remove the
experimental-mode requirement for "add/del server" commands. This should
facilitate dynamic servers adoption.

doc/management.txt
reg-tests/server/cli_add_check_server.vtc
reg-tests/server/cli_add_server.vtc
reg-tests/server/cli_add_ssl_server.vtc
reg-tests/server/cli_add_track_server.vtc
reg-tests/server/cli_delete_dynamic_server.vtc
reg-tests/server/cli_delete_server.vtc
reg-tests/ssl/dynamic_server_ssl.vtc
src/server.c

index e3a4abc54cb67b1caaa0f3edf5a912a86022f3e0..2e1b87db961684fd3272b3085f3419bd4db3d604 100644 (file)
@@ -1541,9 +1541,7 @@ add map [@<ver>] <map> <payload>
     >
 
 add server <backend>/<server> [args]*
-  Instantiate a new server attached to the backend <backend>. Only supported on
-  a CLI connection running in experimental mode (see "experimental-mode on").
-  This method is still in development and may change in the future.
+  Instantiate a new server attached to the backend <backend>.
 
   The <server> name must not be already used in the backend. A special
   restriction is put on the backend which must used a dynamic load-balancing
@@ -2014,8 +2012,8 @@ experimental-mode [on|off]
   set the mode for any worker when connecting to its CLI.
 
   Example:
-    echo "@1; experimental-mode on; del server be1/s2" | socat /var/run/haproxy.master -
-    echo "experimental-mode on; @1 del server be1/s2" | socat /var/run/haproxy.master -
+    echo "@1; experimental-mode on; <experimental_cmd>..." | socat /var/run/haproxy.master -
+    echo "experimental-mode on; @1 <experimental_cmd>..." | socat /var/run/haproxy.master -
 
 expert-mode [on|off]
   This command is similar to experimental-mode but is used to toggle the
index 9f48c0d65fe0b0c6b7d2c7bd70cb56b4738c953b..c63710c6bf5aae9ff1633f64752c0aeaeb40bc92 100644 (file)
@@ -79,7 +79,7 @@ haproxy h1 -conf {
 
 # check on a functional server
 haproxy h1 -cli {
-       send "experimental-mode on; add server be1/s1 ${s1_addr}:${s1_port} check inter 200ms rise 1 fall 1"
+       send "add server be1/s1 ${s1_addr}:${s1_port} check inter 200ms rise 1 fall 1"
        expect ~ "New server registered."
 
        send "enable server be1/s1"
@@ -92,7 +92,7 @@ haproxy h1 -cli {
        send "disable server be1/s1"
        expect ~ ".*"
 
-       send "experimental-mode on; del server be1/s1"
+       send "del server be1/s1"
        expect ~ "Server deleted."
 }
 
@@ -100,7 +100,7 @@ server s2 -break
 
 # check on a disabled server
 haproxy h1 -cli {
-       send "experimental-mode on; add server be1/s2 ${s2_addr}:${s2_port} check inter 200ms rise 1 fall 1"
+       send "add server be1/s2 ${s2_addr}:${s2_port} check inter 200ms rise 1 fall 1"
        expect ~ "New server registered."
 
        send "enable server be1/s2"
@@ -113,13 +113,13 @@ haproxy h1 -cli {
        send "disable server be1/s2"
        expect ~ ".*"
 
-       send "experimental-mode on; del server be1/s2"
+       send "del server be1/s2"
        expect ~ "Server deleted."
 }
 
 # agent check
 haproxy h1 -cli {
-       send "experimental-mode on; add server be1/s3 ${s1_addr}:${s1_port} agent-check agent-addr ${s3_addr} agent-port ${s3_port} agent-send 'hello' agent-inter 200ms rise 1 fall 1"
+       send "add server be1/s3 ${s1_addr}:${s1_port} agent-check agent-addr ${s3_addr} agent-port ${s3_port} agent-send 'hello' agent-inter 200ms rise 1 fall 1"
        expect ~ "New server registered."
 
        send "enable agent be1/s3"
@@ -130,7 +130,7 @@ haproxy h1 -cli {
        send "disable agent be1/s3; disable server be1/s3"
        expect ~ ".*"
 
-       send "experimental-mode on; del server be1/s3"
+       send "del server be1/s3"
        expect ~ "Server deleted."
 }
 
index fefdb0cc8d49069ff69a2b79c77235cbc60153ae..8c29305e7457e8bfe76a89c18fe9431da6cc5c5b 100644 (file)
@@ -38,37 +38,33 @@ client c1 -connect ${h1_feS_sock} {
 } -run
 
 haproxy h1 -cli {
-       # experimental mode disabled
-       send "add server foo/s1 ${s1_addr}:${s1_port}"
-       expect ~ "This command is restricted to experimental mode only."
-
        # non existent backend
-       send "experimental-mode on; add server foo/s1 ${s1_addr}:${s1_port}"
+       send "add server foo/s1 ${s1_addr}:${s1_port}"
        expect ~ "No such backend."
 
        # missing address
-       send "experimental-mode on; add server test/s1"
+       send "add server test/s1"
        expect ~ "'server' expects <name> and <addr>\\[:<port>\\] as arguments."
 
        # invalid load-balancing algo
-       send "experimental-mode on; add server other/s1 ${s1_addr}:${s1_port}"
+       send "add server other/s1 ${s1_addr}:${s1_port}"
        expect ~ "Backend must use a dynamic load balancing to support dynamic servers."
 
        # invalid mux proto
-       send "experimental-mode on; add server other2/s1 ${s1_addr}:${s1_port} proto h2"
+       send "add server other2/s1 ${s1_addr}:${s1_port} proto h2"
        expect ~ "MUX protocol is not usable for server."
 
        # valid command
-       send "experimental-mode on; add server test/s1 ${s1_addr}:${s1_port}"
+       send "add server test/s1 ${s1_addr}:${s1_port}"
        expect ~ "New server registered."
 
        # duplicate server
-       send "experimental-mode on; add server test/s1 ${s1_addr}:${s1_port}"
+       send "add server test/s1 ${s1_addr}:${s1_port}"
        expect ~ "Already exists a server with the same name in backend."
 
        # valid command
        # specify the proto, it should be accepted for this backend
-       send "experimental-mode on; add server test/s2 ${s1_addr}:${s1_port} proto h2"
+       send "add server test/s2 ${s1_addr}:${s1_port} proto h2"
        expect ~ "New server registered."
 }
 
index 843958df31d1ac118de448fb25213a1b88792603..95caf3f6b338fd699599dff8673d11f509fe804f 100644 (file)
@@ -70,7 +70,7 @@ haproxy h1 -cli {
 
 haproxy h1 -cli {
        # non existent backend
-       send "experimental-mode on; add server li-ssl/s1 ${h1_feSslTerm_addr}:${h1_feSslTerm_port} ssl ca-file common.pem verify none"
+       send "add server li-ssl/s1 ${h1_feSslTerm_addr}:${h1_feSslTerm_port} ssl ca-file common.pem verify none"
        expect ~ "New server registered."
 
        send "enable server li-ssl/s1"
index 6e90c625ae83e4bdf0de28bbcd319ad25bc595d8..318f236aa5b5586f61412a550c0c2a6edd2b3d42 100644 (file)
@@ -117,15 +117,15 @@ haproxy h1 -conf {
 ###
 haproxy h1 -cli {
        # invalid command: track on a non-checked server
-       send "experimental-mode on; add server be_check/s1 ${s1_addr}:${s1_port} track be_check/srv_no_check"
+       send "add server be_check/s1 ${s1_addr}:${s1_port} track be_check/srv_no_check"
        expect ~ "unable to use be_check/srv_no_check for tracking as it does not have any check nor agent enabled."
 
        # valid track usage
-       send "experimental-mode on; add server be_check/s1 ${s1_addr}:${s1_port} track be_check/srv_check"
+       send "add server be_check/s1 ${s1_addr}:${s1_port} track be_check/srv_check"
        expect ~ "New server registered."
 
        # invalid command: track on a dynamic server
-       send "experimental-mode on; add server be_check/s3 ${s1_addr}:${s1_port} track be_check/s1"
+       send "add server be_check/s3 ${s1_addr}:${s1_port} track be_check/s1"
        expect ~ "unable to use be_check/s1 for tracking as it is a dynamic server."
 }
 
@@ -137,17 +137,17 @@ haproxy h1 -cli {
 # Delete the first dynamic server, enable be1/srv, S1 should report s1 and s3 UP
 ####
 haproxy h1 -cli {
-       send "experimental-mode on; add server be1/s1 ${s1_addr}:${s1_port} track be1/srv"
+       send "add server be1/s1 ${s1_addr}:${s1_port} track be1/srv"
        expect ~ "New server registered."
        send "enable server be1/s1"
        expect ~ ".*"
 
-       send "experimental-mode on; add server be1/s2 ${s1_addr}:${s1_port} track be1/srv"
+       send "add server be1/s2 ${s1_addr}:${s1_port} track be1/srv"
        expect ~ "New server registered."
        send "enable server be1/s2"
        expect ~ ".*"
 
-       send "experimental-mode on; add server be1/s3 ${s1_addr}:${s1_port} track be1/srv"
+       send "add server be1/s3 ${s1_addr}:${s1_port} track be1/srv"
        expect ~ "New server registered."
        send "enable server be1/s3"
        expect ~ ".*"
@@ -155,7 +155,7 @@ haproxy h1 -cli {
        send "disable server be1/srv"
        expect ~ ".*"
 
-       send "experimental-mode on; del server be1/s1"
+       send "del server be1/s1"
        expect ~ "Server deleted."
 
        send "enable server be1/srv"
@@ -170,17 +170,17 @@ haproxy h1 -cli {
 # Delete the second dynamic server, enable be2/srv, S2 should report s2 and s3 UP
 ####
 haproxy h1 -cli {
-       send "experimental-mode on; add server be2/s1 ${s1_addr}:${s1_port} track be2/srv"
+       send "add server be2/s1 ${s1_addr}:${s1_port} track be2/srv"
        expect ~ "New server registered."
        send "enable server be2/s1"
        expect ~ ".*"
 
-       send "experimental-mode on; add server be2/s2 ${s1_addr}:${s1_port} track be2/srv"
+       send "add server be2/s2 ${s1_addr}:${s1_port} track be2/srv"
        expect ~ "New server registered."
        send "enable server be2/s2"
        expect ~ ".*"
 
-       send "experimental-mode on; add server be2/s3 ${s1_addr}:${s1_port} track be2/srv"
+       send "add server be2/s3 ${s1_addr}:${s1_port} track be2/srv"
        expect ~ "New server registered."
        send "enable server be2/s3"
        expect ~ ".*"
@@ -188,7 +188,7 @@ haproxy h1 -cli {
        send "disable server be2/srv"
        expect ~ ".*"
 
-       send "experimental-mode on; del server be2/s2"
+       send "del server be2/s2"
        expect ~ "Server deleted."
 
        send "enable server be2/srv"
@@ -204,29 +204,29 @@ haproxy h1 -cli {
 ####
 haproxy h1 -cli {
        # create server 1, track on be3/srv
-       send "experimental-mode on; add server be3/s1 ${s1_addr}:${s1_port} track be3/srv"
+       send "add server be3/s1 ${s1_addr}:${s1_port} track be3/srv"
        expect ~ "New server registered."
        send "enable server be3/s1"
        expect ~ ".*"
 
        # create server 2, track on be3/srv
-       send "experimental-mode on; add server be3/s2 ${s1_addr}:${s1_port} track be3/srv"
+       send "add server be3/s2 ${s1_addr}:${s1_port} track be3/srv"
        expect ~ "New server registered."
        send "enable server be3/s2"
        expect ~ ".*"
 
        # create server 3, track on be3/srv
-       send "experimental-mode on; add server be3/s3 ${s1_addr}:${s1_port} track be3/srv"
+       send "add server be3/s3 ${s1_addr}:${s1_port} track be3/srv"
        expect ~ "New server registered."
        send "enable server be3/s3"
        expect ~ ".*"
 
        # delete all dynamic servers
-       send "experimental-mode on; disable server be3/s1; del server be3/s1"
+       send "disable server be3/s1; del server be3/s1"
        expect ~ "Server deleted."
-       send "experimental-mode on; disable server be3/s3; del server be3/s3"
+       send "disable server be3/s3; del server be3/s3"
        expect ~ "Server deleted."
-       send "experimental-mode on; disable server be3/s2; del server be3/s2"
+       send "disable server be3/s2; del server be3/s2"
        expect ~ "Server deleted."
 
        # disable / enable the static server
index a8b3036859e462f0eabe7649b0ec573555622a4f..e66764164ca3eda9f9e8cb114b1422541fb08630 100644 (file)
@@ -39,7 +39,7 @@ haproxy h1 -conf {
 # add a new dynamic server to be able to delete it then
 haproxy h1 -cli {
        # add a dynamic server and enable it
-       send "experimental-mode on; add server test/s2 ${s2_addr}:${s2_port}"
+       send "add server test/s2 ${s2_addr}:${s2_port}"
        expect ~ "New server registered."
 
        send "enable server test/s2"
@@ -47,16 +47,12 @@ haproxy h1 -cli {
 }
 
 haproxy h1 -cli {
-       # experimental mode disabled
-       send "del server test/s1"
-       expect ~ "This command is restricted to experimental mode only."
-
        # non existent backend
-       send "experimental-mode on; del server foo/s1"
+       send "del server foo/s1"
        expect ~ "No such backend."
 
        # non existent server
-       send "experimental-mode on; del server test/other"
+       send "del server test/other"
        expect ~ "No such server."
 }
 
@@ -74,14 +70,14 @@ client c1 -connect ${h1_feS_sock} {
 # delete the dynamic server
 haproxy h1 -cli {
        # server not in maintenance mode
-       send "experimental-mode on; del server test/s2"
+       send "del server test/s2"
        expect ~ "Only servers in maintenance mode can be deleted."
 
        send "disable server test/s2"
        expect ~ ".*"
 
        # valid command
-       send "experimental-mode on; del server test/s2"
+       send "del server test/s2"
        expect ~ "Server deleted."
 }
 
index 972151816c9995836c4f2ce6dcec98be01f18d0f..61d241c2afb024ad408a003e3853b743d9aad3e6 100644 (file)
@@ -27,38 +27,34 @@ haproxy h1 -conf {
 } -start
 
 haproxy h1 -cli {
-       # experimental mode disabled
-       send "del server test/s1"
-       expect ~ "This command is restricted to experimental mode only."
-
        # non existent backend
-       send "experimental-mode on; del server foo/s1"
+       send "del server foo/s1"
        expect ~ "No such backend."
 
        # non existent server
-       send "experimental-mode on; del server test/other"
+       send "del server test/other"
        expect ~ "No such server."
 
        # server referenced in ACL
-       send "experimental-mode on; del server test/s1"
+       send "del server test/s1"
        expect ~ "This server cannot be removed at runtime due to other configuration elements pointing to it."
 
        # tracked server
-       send "experimental-mode on; del server test/s2"
+       send "del server test/s2"
        expect ~ "This server cannot be removed at runtime due to other configuration elements pointing to it."
 
        # tracked server
-       send "experimental-mode on; del server test/s3"
+       send "del server test/s3"
        expect ~ "This server cannot be removed at runtime due to other configuration elements pointing to it."
 
        # server in running mode
-       send "experimental-mode on; del server test/s4"
+       send "del server test/s4"
        expect ~ "Only servers in maintenance mode can be deleted."
 
        send "disable server test/s4"
        expect ~ ".*"
 
        # valid command
-       send "experimental-mode on; del server test/s4"
+       send "del server test/s4"
        expect ~ "Server deleted."
 }
index e498a81ca21ca601208a18ff4dd7c10fadc6ade7..b7730f558350696480066b3e343eef021c0cbcbf 100644 (file)
@@ -70,11 +70,11 @@ haproxy h1 -cli {
        expect ~ ".*"
 
        # valid command
-       send "experimental-mode on; del server test/s1"
+       send "del server test/s1"
        expect ~ "Server deleted."
-       send "experimental-mode on; del server test/s2"
+       send "del server test/s2"
        expect ~ "Server deleted."
-       send "experimental-mode on; del server test/s3"
+       send "del server test/s3"
        expect ~ "Server deleted."
 }
 
@@ -95,7 +95,7 @@ haproxy h1 -cli {
 }
 
 haproxy h1 -cli {
-       send "experimental-mode on; add server test/s1 ${tmpdir}/ssl.sock ssl verify none crt ${testdir}/client1.pem"
+       send "add server test/s1 ${tmpdir}/ssl.sock ssl verify none crt ${testdir}/client1.pem"
        expect ~ "New server registered."
        send "enable server test/s1"
        expect ~ ".*"
index 6e1e2f1fe28cb12a7caf5dbc43dbd2070b33a415..83295b6567652ed5a4a17e6fb2978cefda630e05 100644 (file)
@@ -5034,8 +5034,8 @@ static struct cli_kw_list cli_kws = {{ },{
        { { "set", "server", NULL },             "set server <bk>/<srv> [opts]            : change a server's state, weight, address or ssl",             cli_parse_set_server },
        { { "get", "weight", NULL },             "get weight <bk>/<srv>                   : report a server's current weight",                            cli_parse_get_weight },
        { { "set", "weight", NULL },             "set weight <bk>/<srv>  (DEPRECATED)     : change a server's weight (use 'set server' instead)",         cli_parse_set_weight },
-       { { "add", "server", NULL },             "add server <bk>/<srv>                   : create a new server (EXPERIMENTAL)",                          cli_parse_add_server, NULL, NULL, NULL, ACCESS_EXPERIMENTAL },
-       { { "del", "server", NULL },             "del server <bk>/<srv>                   : remove a dynamically added server (EXPERIMENTAL)",            cli_parse_delete_server, NULL, NULL, NULL, ACCESS_EXPERIMENTAL },
+       { { "add", "server", NULL },             "add server <bk>/<srv>                   : create a new server",                                         cli_parse_add_server, NULL },
+       { { "del", "server", NULL },             "del server <bk>/<srv>                   : remove a dynamically added server",                           cli_parse_delete_server, NULL },
        {{},}
 }};