Propagate new fallback model to all remaining script references
All FALLBACK_${MY_ID}_COVERS_${REMOTE_ID}_TIER* references updated to
FALLBACK_${REMOTE_ID}_TIER* across fallback_test.sh, partnership_manager.sh,
docker_update.sh, mesh_monitor.sh, and monitor.php. mesh_monitor.sh drops
the inner covering-host loop — tier data now lives in the covered host's own
conf so no cross-host scan is needed. monitor.php reads from the covered
host's conf file rather than the local host's.
This commit is contained in:
@@ -219,7 +219,7 @@ if [[ "$REMAINDER_MODE" == true ]]; then
|
||||
# Updating them here risks version divergence: if remote's writeback after handback
|
||||
# encounters data written by a newer version, it may not handle it correctly.
|
||||
for _tier in 1 2 3 4; do
|
||||
_tier_var="FALLBACK_${MY_ID}_COVERS_${REMOTE_ID}_TIER${_tier}"
|
||||
_tier_var="FALLBACK_${REMOTE_ID}_TIER${_tier}"
|
||||
eval "_tier_arr=(\"\${${_tier_var}[@]:-}\")" 2>/dev/null
|
||||
for _c in "${_tier_arr[@]}"; do
|
||||
[[ -n "$_c" ]] && _exclude["$_c"]=1
|
||||
|
||||
@@ -206,7 +206,7 @@ if [[ "$SHOW_STATUS" == true ]]; then
|
||||
fi
|
||||
|
||||
# Show Tier 1 containers for this host
|
||||
TIER1_VAR="FALLBACK_${MY_ID}_COVERS_${REMOTE_ID}_TIER1"
|
||||
TIER1_VAR="FALLBACK_${REMOTE_ID}_TIER1"
|
||||
eval "TIER1_CONTAINERS=(\"\${${TIER1_VAR}[@]:-}\")"
|
||||
echo "$ICON_CONTAINERS Tier 1 to test: ${TIER1_CONTAINERS[*]:-none configured}"
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
@@ -223,8 +223,8 @@ TOTAL_START=$(date +%s)
|
||||
phase_pass() { PHASES_PASS+=("$1"); warn "$ICON_DONE Phase: $1 — PASSED ✅"; }
|
||||
phase_fail() { PHASES_FAIL+=("$1"); error "Phase: $1 — FAILED ❌"; }
|
||||
|
||||
# Get Tier 1 containers for this server's fallback responsibility
|
||||
TIER1_VAR="FALLBACK_${MY_ID}_COVERS_${REMOTE_ID}_TIER1"
|
||||
# Get Tier 1 containers defined in remote's own conf
|
||||
TIER1_VAR="FALLBACK_${REMOTE_ID}_TIER1"
|
||||
eval "TIER1_CONTAINERS=(\"\${${TIER1_VAR}[@]:-}\")"
|
||||
|
||||
# ==============================================================================================
|
||||
@@ -286,7 +286,7 @@ fi
|
||||
# Tier 1 containers configured
|
||||
if [[ ${#TIER1_CONTAINERS[@]} -eq 0 ]]; then
|
||||
error "No Tier 1 containers configured for $MY_ID → $REMOTE_ID"
|
||||
error "Check FALLBACK_${MY_ID}_COVERS_${REMOTE_ID}_TIER1 in host*.conf"
|
||||
error "Check FALLBACK_${REMOTE_ID}_TIER1 in ${REMOTE_ID,,}.conf"
|
||||
phase_fail "Pre-flight"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -142,17 +142,14 @@ for covered in "${ALL_HOST_IDS[@]}"; do
|
||||
covered_owner_var="${covered}_OWNER"; covered_owner="${!covered_owner_var:-$covered}"
|
||||
covered_email_var="${covered}_OWNER_EMAIL"; covered_email="${!covered_email_var:-}"
|
||||
|
||||
# Find who covers this host and collect their tiers
|
||||
# Each host defines its own recovery profile — read directly from covered host's vars
|
||||
any_tiers=false
|
||||
declare -A tier_containers=()
|
||||
declare -A tier_delays=()
|
||||
covered_by=""
|
||||
|
||||
for covering in "${ALL_HOST_IDS[@]}"; do
|
||||
[[ "$covering" == "$covered" ]] && continue
|
||||
|
||||
for tier in 1 2 3 4; do
|
||||
containers=$(get_array "FALLBACK_${covering}_COVERS_${covered}_TIER${tier}")
|
||||
containers=$(get_array "FALLBACK_${covered}_TIER${tier}")
|
||||
[[ -z "$containers" ]] && continue
|
||||
any_tiers=true
|
||||
tier_containers[$tier]="$containers"
|
||||
@@ -160,12 +157,14 @@ for covered in "${ALL_HOST_IDS[@]}"; do
|
||||
tier_delays[$tier]="${!delay_var:-0}"
|
||||
done
|
||||
|
||||
[[ "$any_tiers" == true ]] && {
|
||||
if [[ "$any_tiers" == true ]]; then
|
||||
for covering in "${ALL_HOST_IDS[@]}"; do
|
||||
[[ "$covering" == "$covered" ]] && continue
|
||||
covering_owner_var="${covering}_OWNER"
|
||||
covering_owner="${!covering_owner_var:-$covering}"
|
||||
covered_by="$covering ($covering_owner)"
|
||||
}
|
||||
covered_by="${covered_by:+$covered_by, }$covering ($covering_owner)"
|
||||
done
|
||||
fi
|
||||
|
||||
[[ "$any_tiers" == false ]] && continue
|
||||
|
||||
|
||||
@@ -512,7 +512,7 @@ gather_partner_fallback_containers() {
|
||||
eval "${out_var}=()"
|
||||
local tier var
|
||||
for tier in TIER1 TIER2 TIER3 TIER4; do
|
||||
var="FALLBACK_${MY_ID}_COVERS_${REMOTE_ID}_${tier}"
|
||||
var="FALLBACK_${REMOTE_ID}_${tier}"
|
||||
# Check if var is set and is an array
|
||||
if declare -p "$var" >/dev/null 2>&1; then
|
||||
local -a _tmp_arr
|
||||
|
||||
@@ -109,19 +109,17 @@ function vv_fallback_active(): array {
|
||||
if ($c) $running[strtolower($c['n'])] = $c['i'];
|
||||
}
|
||||
|
||||
// Parse FALLBACK arrays from this host's conf
|
||||
$confFile = strtolower($myId) . '.conf';
|
||||
$rawConf = vv_read_conf_raw($confFile);
|
||||
|
||||
$result = [];
|
||||
foreach ($allHostIds as $covered) {
|
||||
if ($covered === $myId) continue;
|
||||
$coveredHostname = $vars[$covered] ?? '';
|
||||
if (!$coveredHostname) continue;
|
||||
|
||||
// Covered host defines its own recovery profile — read from their conf
|
||||
$coveredRaw = vv_read_conf_raw(strtolower($covered) . '.conf');
|
||||
$names = [];
|
||||
for ($tier = 1; $tier <= 4; $tier++)
|
||||
$names = array_merge($names, vv_parse_bash_array($rawConf, "FALLBACK_{$myId}_COVERS_{$covered}_TIER{$tier}"));
|
||||
$names = array_merge($names, vv_parse_bash_array($coveredRaw, "FALLBACK_{$covered}_TIER{$tier}"));
|
||||
|
||||
$active = [];
|
||||
foreach ($names as $name) {
|
||||
|
||||
Reference in New Issue
Block a user