feat: Restart salt-master on config changes
Automatically restart salt-master when config changes are detected.
This commit is contained in:
5
tests/config-reloader/README.md
Normal file
5
tests/config-reloader/README.md
Normal file
@@ -0,0 +1,5 @@
|
||||
# Config Reloader Tests
|
||||
|
||||
Checks:
|
||||
|
||||
- `salt-master` is reloaded after config changes
|
||||
2
tests/config-reloader/config/fileserver.conf
Normal file
2
tests/config-reloader/config/fileserver.conf
Normal file
@@ -0,0 +1,2 @@
|
||||
# The buffer size in the file server can be adjusted here:
|
||||
file_buffer_size: 1048576
|
||||
54
tests/config-reloader/test.sh
Executable file
54
tests/config-reloader/test.sh
Executable file
@@ -0,0 +1,54 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
[ "${DEBUG}" == true ] && set -vx
|
||||
|
||||
echo "🧪 Running config-reloader tests ..."
|
||||
|
||||
# https://stackoverflow.com/a/4774063/3398062
|
||||
SCRIPT_PATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
|
||||
|
||||
# shellcheck source=assets/build/functions.sh
|
||||
COMMON_FILE="${SCRIPT_PATH}/../lib/common.sh"
|
||||
source "${COMMON_FILE}"
|
||||
trap cleanup EXIT
|
||||
|
||||
# Run test instance
|
||||
echo "==> Starting docker-salt-master (${PLATFORM}) ..."
|
||||
start_container_and_wait \
|
||||
--env SALT_RESTART_MASTER_ON_CONFIG_CHANGE=true \
|
||||
--volume "${SCRIPT_PATH}/config":/home/salt/data/config:ro \
|
||||
|| error "container started"
|
||||
ok "container started"
|
||||
|
||||
# Get initial configuration values
|
||||
echo "==> Checking initial configuration values ..."
|
||||
FILE_BUFFER_SIZE="$(salt-run config.get file_buffer_size)"
|
||||
YAML_UTF8="$(salt-run config.get yaml_utf8)"
|
||||
|
||||
FILE_BUFFER_SIZE_EXPECTED=1048576
|
||||
YAML_UTF8_EXPECTED=
|
||||
|
||||
check_equal "${FILE_BUFFER_SIZE}" "${FILE_BUFFER_SIZE_EXPECTED}" "file_buffer_size"
|
||||
check_equal "${YAML_UTF8}" "${YAML_UTF8_EXPECTED}" "yaml_utf8"
|
||||
|
||||
# Update fileserver config
|
||||
echo "==> Updating file_buffer_size config ..."
|
||||
FILE_BUFFER_SIZE_EXPECTED=2097152
|
||||
sed -i "s/file_buffer_size:.*/file_buffer_size: ${FILE_BUFFER_SIZE_EXPECTED}/" "${SCRIPT_PATH}/config/fileserver.conf"
|
||||
sleep 30 # Wait for the config to be reloaded
|
||||
|
||||
FILE_BUFFER_SIZE="$(salt-run config.get file_buffer_size)"
|
||||
check_equal "${FILE_BUFFER_SIZE}" "${FILE_BUFFER_SIZE_EXPECTED}" "file_buffer_size"
|
||||
|
||||
# Create yaml_utf8 config
|
||||
echo "==> Creating yaml_utf8 config ..."
|
||||
YAML_UTF8_EXPECTED=True
|
||||
cat > "${SCRIPT_PATH}/config/yaml_utf8.conf" <<EOF
|
||||
# Enable extra routines for YAML renderer used states containing UTF characters.
|
||||
yaml_utf8: ${YAML_UTF8_EXPECTED}
|
||||
EOF
|
||||
sleep 30 # Wait for the config to be reloaded
|
||||
|
||||
YAML_UTF8="$(salt-run config.get yaml_utf8)"
|
||||
check_equal "${YAML_UTF8}" "${YAML_UTF8_EXPECTED}" "yaml_utf8"
|
||||
@@ -43,6 +43,15 @@ function docker-exec()
|
||||
docker exec "${CONTAINER_NAME}" "$@"
|
||||
}
|
||||
|
||||
#--- FUNCTION -------------------------------------------------------------------------------------------------------
|
||||
# NAME: docker-logs
|
||||
# DESCRIPTION: Get the logs of the container.
|
||||
#----------------------------------------------------------------------------------------------------------------------
|
||||
function docker-logs()
|
||||
{
|
||||
docker logs "${CONTAINER_NAME}"
|
||||
}
|
||||
|
||||
#--- FUNCTION -------------------------------------------------------------------------------------------------------
|
||||
# NAME: salt-run
|
||||
# DESCRIPTION: Execute the salt-run command inside the container.
|
||||
@@ -107,3 +116,27 @@ function error()
|
||||
master_log
|
||||
return 1
|
||||
}
|
||||
|
||||
#--- FUNCTION -------------------------------------------------------------------------------------------------------
|
||||
# NAME: check_equal
|
||||
# DESCRIPTION: Check if the given value is equal to the expected value.
|
||||
#----------------------------------------------------------------------------------------------------------------------
|
||||
function check_equal()
|
||||
{
|
||||
local actual="$1"
|
||||
local expected="$2"
|
||||
local message="$3"
|
||||
|
||||
output=$(cat <<EOF
|
||||
${message}
|
||||
Expected: ${expected}
|
||||
Actual: ${actual}
|
||||
EOF
|
||||
)
|
||||
|
||||
if [[ "${actual}" == "${expected}" ]]; then
|
||||
ok "${output}"
|
||||
else
|
||||
error "${output}"
|
||||
fi
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user