feat: enhance network configuration handling in updater script
- Improved network mode handling by introducing a variable for network names, allowing for better management of custom networks. - Added support for network aliases, enabling the specification of multiple aliases for a given network in the snapshot. - Enhanced health check logging to include the last HTTP status received, providing better visibility into health check failures.
This commit is contained in:
@@ -248,19 +248,30 @@ build_run_args_from_snapshot() {
|
|||||||
' "$snapshot_file")
|
' "$snapshot_file")
|
||||||
|
|
||||||
local network_mode
|
local network_mode
|
||||||
|
local network_name=""
|
||||||
network_mode="$(jq -r '.HostConfig.NetworkMode // empty' "$snapshot_file")"
|
network_mode="$(jq -r '.HostConfig.NetworkMode // empty' "$snapshot_file")"
|
||||||
if [[ "$network_mode" == "host" ]]; then
|
if [[ "$network_mode" == "host" ]]; then
|
||||||
args+=(--network host)
|
args+=(--network host)
|
||||||
elif [[ -n "$network_mode" && "$network_mode" != "default" && "$network_mode" != "bridge" ]]; then
|
elif [[ -n "$network_mode" && "$network_mode" != "default" && "$network_mode" != "bridge" ]]; then
|
||||||
args+=(--network "$network_mode")
|
network_name="$network_mode"
|
||||||
|
args+=(--network "$network_name")
|
||||||
else
|
else
|
||||||
local custom_network
|
network_name="$(jq -r '.NetworkSettings.Networks // {} | keys[0] // empty' "$snapshot_file")"
|
||||||
custom_network="$(jq -r '.NetworkSettings.Networks // {} | keys[0] // empty' "$snapshot_file")"
|
if [[ -n "$network_name" && "$network_name" != "bridge" ]]; then
|
||||||
if [[ -n "$custom_network" && "$custom_network" != "bridge" ]]; then
|
args+=(--network "$network_name")
|
||||||
args+=(--network "$custom_network")
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ -n "$network_name" ]]; then
|
||||||
|
while IFS= read -r alias; do
|
||||||
|
[[ -n "$alias" ]] || continue
|
||||||
|
args+=(--network-alias "$alias")
|
||||||
|
done < <(jq -r --arg net "$network_name" '
|
||||||
|
.NetworkSettings.Networks[$net].Aliases // []
|
||||||
|
| .[]
|
||||||
|
' "$snapshot_file")
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ "$(jq -r '.HostConfig.Privileged // false' "$snapshot_file")" == "true" ]]; then
|
if [[ "$(jq -r '.HostConfig.Privileged // false' "$snapshot_file")" == "true" ]]; then
|
||||||
args+=(--privileged)
|
args+=(--privileged)
|
||||||
fi
|
fi
|
||||||
@@ -289,11 +300,13 @@ wait_for_health() {
|
|||||||
local health_url="$3"
|
local health_url="$3"
|
||||||
local expect_status="$4"
|
local expect_status="$4"
|
||||||
local deadline=$((SECONDS + HEALTH_TIMEOUT_SECONDS))
|
local deadline=$((SECONDS + HEALTH_TIMEOUT_SECONDS))
|
||||||
|
local last_status=""
|
||||||
|
|
||||||
while (( SECONDS < deadline )); do
|
while (( SECONDS < deadline )); do
|
||||||
if [[ "$health_type" == "http" ]]; then
|
if [[ "$health_type" == "http" ]]; then
|
||||||
local status
|
local status
|
||||||
status="$(curl --silent --output /dev/null --write-out '%{http_code}' --max-time 5 "$health_url" || true)"
|
status="$(curl --silent --output /dev/null --write-out '%{http_code}' --max-time 5 "$health_url" || true)"
|
||||||
|
last_status="$status"
|
||||||
if [[ "$status" == "$expect_status" ]]; then
|
if [[ "$status" == "$expect_status" ]]; then
|
||||||
log info "target=${target_id} action=health_ok status=${status}"
|
log info "target=${target_id} action=health_ok status=${status}"
|
||||||
return 0
|
return 0
|
||||||
@@ -305,7 +318,7 @@ wait_for_health() {
|
|||||||
sleep 2
|
sleep 2
|
||||||
done
|
done
|
||||||
|
|
||||||
log error "target=${target_id} action=health_fail reason=timeout seconds=${HEALTH_TIMEOUT_SECONDS}"
|
log error "target=${target_id} action=health_fail reason=timeout seconds=${HEALTH_TIMEOUT_SECONDS} url=${health_url} last_status=${last_status:-none}"
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user