From: Amaury Denoyelle Date: Wed, 9 Mar 2022 14:07:31 +0000 (+0100) Subject: MEDIUM: server: remove experimental-mode for dynamic servers X-Git-Tag: v2.6-dev3~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=76e8b70e43e7460a236d7228f8112be57f916a74;p=thirdparty%2Fhaproxy.git MEDIUM: server: remove experimental-mode for dynamic servers 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. --- diff --git a/doc/management.txt b/doc/management.txt index e3a4abc54c..2e1b87db96 100644 --- a/doc/management.txt +++ b/doc/management.txt @@ -1541,9 +1541,7 @@ add map [@] > add server / [args]* - Instantiate a new server attached to the 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 . The 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; ..." | socat /var/run/haproxy.master - + echo "experimental-mode on; @1 ..." | socat /var/run/haproxy.master - expert-mode [on|off] This command is similar to experimental-mode but is used to toggle the diff --git a/reg-tests/server/cli_add_check_server.vtc b/reg-tests/server/cli_add_check_server.vtc index 9f48c0d65f..c63710c6bf 100644 --- a/reg-tests/server/cli_add_check_server.vtc +++ b/reg-tests/server/cli_add_check_server.vtc @@ -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." } diff --git a/reg-tests/server/cli_add_server.vtc b/reg-tests/server/cli_add_server.vtc index fefdb0cc8d..8c29305e74 100644 --- a/reg-tests/server/cli_add_server.vtc +++ b/reg-tests/server/cli_add_server.vtc @@ -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 and \\[:\\] 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." } diff --git a/reg-tests/server/cli_add_ssl_server.vtc b/reg-tests/server/cli_add_ssl_server.vtc index 843958df31..95caf3f6b3 100644 --- a/reg-tests/server/cli_add_ssl_server.vtc +++ b/reg-tests/server/cli_add_ssl_server.vtc @@ -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" diff --git a/reg-tests/server/cli_add_track_server.vtc b/reg-tests/server/cli_add_track_server.vtc index 6e90c625ae..318f236aa5 100644 --- a/reg-tests/server/cli_add_track_server.vtc +++ b/reg-tests/server/cli_add_track_server.vtc @@ -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 diff --git a/reg-tests/server/cli_delete_dynamic_server.vtc b/reg-tests/server/cli_delete_dynamic_server.vtc index a8b3036859..e66764164c 100644 --- a/reg-tests/server/cli_delete_dynamic_server.vtc +++ b/reg-tests/server/cli_delete_dynamic_server.vtc @@ -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." } diff --git a/reg-tests/server/cli_delete_server.vtc b/reg-tests/server/cli_delete_server.vtc index 972151816c..61d241c2af 100644 --- a/reg-tests/server/cli_delete_server.vtc +++ b/reg-tests/server/cli_delete_server.vtc @@ -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." } diff --git a/reg-tests/ssl/dynamic_server_ssl.vtc b/reg-tests/ssl/dynamic_server_ssl.vtc index e498a81ca2..b7730f5583 100644 --- a/reg-tests/ssl/dynamic_server_ssl.vtc +++ b/reg-tests/ssl/dynamic_server_ssl.vtc @@ -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 ~ ".*" diff --git a/src/server.c b/src/server.c index 6e1e2f1fe2..83295b6567 100644 --- a/src/server.c +++ b/src/server.c @@ -5034,8 +5034,8 @@ static struct cli_kw_list cli_kws = {{ },{ { { "set", "server", NULL }, "set server / [opts] : change a server's state, weight, address or ssl", cli_parse_set_server }, { { "get", "weight", NULL }, "get weight / : report a server's current weight", cli_parse_get_weight }, { { "set", "weight", NULL }, "set weight / (DEPRECATED) : change a server's weight (use 'set server' instead)", cli_parse_set_weight }, - { { "add", "server", NULL }, "add server / : create a new server (EXPERIMENTAL)", cli_parse_add_server, NULL, NULL, NULL, ACCESS_EXPERIMENTAL }, - { { "del", "server", NULL }, "del server / : remove a dynamically added server (EXPERIMENTAL)", cli_parse_delete_server, NULL, NULL, NULL, ACCESS_EXPERIMENTAL }, + { { "add", "server", NULL }, "add server / : create a new server", cli_parse_add_server, NULL }, + { { "del", "server", NULL }, "del server / : remove a dynamically added server", cli_parse_delete_server, NULL }, {{},} }};