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:
Gmer4Lfe
2026-06-19 17:49:26 -04:00
parent b27b2d62f5
commit 28d434b76c
5 changed files with 24 additions and 27 deletions
+1 -1
View File
@@ -219,7 +219,7 @@ if [[ "$REMAINDER_MODE" == true ]]; then
# Updating them here risks version divergence: if remote's writeback after handback # 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. # encounters data written by a newer version, it may not handle it correctly.
for _tier in 1 2 3 4; do 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 eval "_tier_arr=(\"\${${_tier_var}[@]:-}\")" 2>/dev/null
for _c in "${_tier_arr[@]}"; do for _c in "${_tier_arr[@]}"; do
[[ -n "$_c" ]] && _exclude["$_c"]=1 [[ -n "$_c" ]] && _exclude["$_c"]=1
+4 -4
View File
@@ -206,7 +206,7 @@ if [[ "$SHOW_STATUS" == true ]]; then
fi fi
# Show Tier 1 containers for this host # 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}[@]:-}\")" eval "TIER1_CONTAINERS=(\"\${${TIER1_VAR}[@]:-}\")"
echo "$ICON_CONTAINERS Tier 1 to test: ${TIER1_CONTAINERS[*]:-none configured}" echo "$ICON_CONTAINERS Tier 1 to test: ${TIER1_CONTAINERS[*]:-none configured}"
echo "━━━━━━━━━━━━━━━━━━━━━━━" echo "━━━━━━━━━━━━━━━━━━━━━━━"
@@ -223,8 +223,8 @@ TOTAL_START=$(date +%s)
phase_pass() { PHASES_PASS+=("$1"); warn "$ICON_DONE Phase: $1 — PASSED ✅"; } phase_pass() { PHASES_PASS+=("$1"); warn "$ICON_DONE Phase: $1 — PASSED ✅"; }
phase_fail() { PHASES_FAIL+=("$1"); error "Phase: $1 — FAILED ❌"; } phase_fail() { PHASES_FAIL+=("$1"); error "Phase: $1 — FAILED ❌"; }
# Get Tier 1 containers for this server's fallback responsibility # Get Tier 1 containers defined in remote's own conf
TIER1_VAR="FALLBACK_${MY_ID}_COVERS_${REMOTE_ID}_TIER1" TIER1_VAR="FALLBACK_${REMOTE_ID}_TIER1"
eval "TIER1_CONTAINERS=(\"\${${TIER1_VAR}[@]:-}\")" eval "TIER1_CONTAINERS=(\"\${${TIER1_VAR}[@]:-}\")"
# ============================================================================================== # ==============================================================================================
@@ -286,7 +286,7 @@ fi
# Tier 1 containers configured # Tier 1 containers configured
if [[ ${#TIER1_CONTAINERS[@]} -eq 0 ]]; then if [[ ${#TIER1_CONTAINERS[@]} -eq 0 ]]; then
error "No Tier 1 containers configured for $MY_ID$REMOTE_ID" 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" phase_fail "Pre-flight"
exit 1 exit 1
fi fi
+15 -16
View File
@@ -142,30 +142,29 @@ for covered in "${ALL_HOST_IDS[@]}"; do
covered_owner_var="${covered}_OWNER"; covered_owner="${!covered_owner_var:-$covered}" covered_owner_var="${covered}_OWNER"; covered_owner="${!covered_owner_var:-$covered}"
covered_email_var="${covered}_OWNER_EMAIL"; covered_email="${!covered_email_var:-}" 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 any_tiers=false
declare -A tier_containers=() declare -A tier_containers=()
declare -A tier_delays=() declare -A tier_delays=()
covered_by="" covered_by=""
for covering in "${ALL_HOST_IDS[@]}"; do for tier in 1 2 3 4; do
[[ "$covering" == "$covered" ]] && continue containers=$(get_array "FALLBACK_${covered}_TIER${tier}")
[[ -z "$containers" ]] && continue
any_tiers=true
tier_containers[$tier]="$containers"
delay_var="${covered}_TIER${tier}_DELAY"
tier_delays[$tier]="${!delay_var:-0}"
done
for tier in 1 2 3 4; do if [[ "$any_tiers" == true ]]; then
containers=$(get_array "FALLBACK_${covering}_COVERS_${covered}_TIER${tier}") for covering in "${ALL_HOST_IDS[@]}"; do
[[ -z "$containers" ]] && continue [[ "$covering" == "$covered" ]] && continue
any_tiers=true
tier_containers[$tier]="$containers"
delay_var="${covered}_TIER${tier}_DELAY"
tier_delays[$tier]="${!delay_var:-0}"
done
[[ "$any_tiers" == true ]] && {
covering_owner_var="${covering}_OWNER" covering_owner_var="${covering}_OWNER"
covering_owner="${!covering_owner_var:-$covering}" covering_owner="${!covering_owner_var:-$covering}"
covered_by="$covering ($covering_owner)" covered_by="${covered_by:+$covered_by, }$covering ($covering_owner)"
} done
done fi
[[ "$any_tiers" == false ]] && continue [[ "$any_tiers" == false ]] && continue
+1 -1
View File
@@ -512,7 +512,7 @@ gather_partner_fallback_containers() {
eval "${out_var}=()" eval "${out_var}=()"
local tier var local tier var
for tier in TIER1 TIER2 TIER3 TIER4; do 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 # Check if var is set and is an array
if declare -p "$var" >/dev/null 2>&1; then if declare -p "$var" >/dev/null 2>&1; then
local -a _tmp_arr local -a _tmp_arr
+3 -5
View File
@@ -109,19 +109,17 @@ function vv_fallback_active(): array {
if ($c) $running[strtolower($c['n'])] = $c['i']; 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 = []; $result = [];
foreach ($allHostIds as $covered) { foreach ($allHostIds as $covered) {
if ($covered === $myId) continue; if ($covered === $myId) continue;
$coveredHostname = $vars[$covered] ?? ''; $coveredHostname = $vars[$covered] ?? '';
if (!$coveredHostname) continue; if (!$coveredHostname) continue;
// Covered host defines its own recovery profile — read from their conf
$coveredRaw = vv_read_conf_raw(strtolower($covered) . '.conf');
$names = []; $names = [];
for ($tier = 1; $tier <= 4; $tier++) 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 = []; $active = [];
foreach ($names as $name) { foreach ($names as $name) {