mirror of
https://github.com/haproxy/haproxy.git
synced 2026-02-03 20:39:41 -05:00
Relax the condition on "delete server" CLI handler to be able to remove all servers, even non dynamic, except if they are flagged as non purgeable. This change is necessary to extend the use cases for dynamic servers with reload. It's expected that each dynamic server created via the CLI is manually commited in the haproxy configuration by the user. Dynamic servers will be present on reload only if they are present in the configuration file. This means that non-dynamic servers must be allowed to be removable at runtime. The dynamic servers removal reg-test has been updated and renamed to reflect its purpose. A new test is present to check that non-purgeable servers cannot be removed.
86 lines
2.4 KiB
Text
86 lines
2.4 KiB
Text
# This script is to test the ability to remove servers, unless they are
|
|
# referenced by some elements from the configuration.
|
|
#
|
|
varnishtest "Delete server via cli"
|
|
|
|
feature ignore_unknown_macro
|
|
|
|
#REQUIRE_VERSION=2.4
|
|
|
|
server s1 {
|
|
rxreq
|
|
txresp
|
|
} -start
|
|
|
|
haproxy h1 -conf {
|
|
global
|
|
lua-load ${testdir}/get_srv_stats.lua
|
|
|
|
defaults
|
|
mode http
|
|
timeout connect 1s
|
|
timeout client 1s
|
|
timeout server 1s
|
|
|
|
frontend fe
|
|
bind "fd@${feS}"
|
|
acl s1_full srv_sess_rate(test/s1) gt 50
|
|
default_backend test
|
|
|
|
backend test
|
|
http-request add-header s4-stats %[lua.get_srv_stats(s4)]
|
|
use-server s3 unless { always_false }
|
|
server s1 ${s1_addr}:${s1_port} # referenced in ACL
|
|
server s2 ${s1_addr}:${s1_port} check # referenced in track
|
|
server s3 ${s1_addr}:${s1_port} track s2 # referenced in use-server
|
|
server s4 ${s1_addr}:${s1_port} # referenced in lua script
|
|
server s5 ${s1_addr}:${s1_port} # removable server
|
|
} -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"
|
|
expect ~ "No such backend."
|
|
|
|
# non existent server
|
|
send "experimental-mode on; del server test/other"
|
|
expect ~ "No such server."
|
|
|
|
# server referenced in ACL
|
|
send "experimental-mode on; 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"
|
|
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"
|
|
expect ~ "This server cannot be removed at runtime due to other configuration elements pointing to it."
|
|
}
|
|
|
|
# make a request to force the execution of the lua script which references a
|
|
# server
|
|
client c1 -connect ${h1_feS_sock} {
|
|
txreq
|
|
rxresp
|
|
} -run
|
|
|
|
haproxy h1 -cli {
|
|
send "experimental-mode on; del server test/s4"
|
|
expect ~ "This server cannot be removed at runtime due to other configuration elements pointing to it."
|
|
|
|
send "experimental-mode on; del server test/s5"
|
|
expect ~ "Only servers in maintenance mode can be deleted."
|
|
|
|
send "disable server test/s5"
|
|
expect ~ ".*"
|
|
|
|
# valid command
|
|
send "experimental-mode on; del server test/s5"
|
|
expect ~ "Server deleted."
|
|
}
|