HOST1 completes local onboard independently during Phase 1

partnership_manager.sh:
- --local-only flag for --onboard: skips remote pre-flight, WebUI reconfig,
  state push; runs FolderView3 folder creation + writes HOST1_LOCAL_DONE=true
  to setup.db + pushes it; exits without writing ACTIVE (partnership not yet
  established until Phase 2)

partnership_onboard.sh:
- Phase 1 exit now runs partnership_manager.sh --onboard --local-only after
  SSH + conf push, so HOST1 is fully configured on its own side before Phase 2

include/partnership.php:
- vv_pt_nodes() reads HOST1_LOCAL_DONE from setup.db; exposes as local_done
  on the self node (null for remote nodes)

pages/partnership.php:
- Self node card shows green "Local setup complete · waiting for partner"
  badge when local_done=true
- Actions: "Complete HOST1 Setup" button appears when HOST1 hasn't run local
  setup yet but HOST2 is already at phase 1 — lets user trigger it manually
- vvPtLocalSetup() top-level function calls partnership_manager.sh via run.php
This commit is contained in:
Gmer4Lfe
2026-05-30 19:55:56 -04:00
parent b59b94099a
commit d1ee880586
4 changed files with 104 additions and 14 deletions
+48
View File
@@ -200,6 +200,8 @@ REASON="manual"
UNBLOCK_HOST=""
FILTERED_ARGS=()
LOCAL_ONLY=false # --onboard --local-only: skips remote steps, runs HOST1-local setup only
for arg in "$@"; do
case "$arg" in
--onboard) MODE="onboard" ;;
@@ -208,6 +210,7 @@ for arg in "$@"; do
--check) MODE="check" ;;
--status) MODE="status" ;;
--unblock) MODE="unblock" ;;
--local-only) LOCAL_ONLY=true ;;
--confirm=*) TRANSFER_CONFIRM_INPUT="${arg#--confirm=}" ;;
--remote-seen) REMOTE_SEEN=true ;;
--remote-unseen) REMOTE_UNSEEN=true ;;
@@ -1408,6 +1411,51 @@ if [[ "$MODE" == "onboard" ]]; then
echo ""
echo "━━━ $ICON_FALLBACK Onboard — $(date '+%Y-%m-%d %H:%M:%S') ━━━"
# ── LOCAL-ONLY PATH ──────────────────────────────────────────────────────────
# HOST1-local setup steps that don't need HOST2 present. Called from
# partnership_onboard.sh --phase1-only so HOST1 can complete its own side
# (FolderView3, setup.db flag) while waiting for HOST2 to install and onboard.
if [[ "$LOCAL_ONLY" == true ]]; then
log "Mode: local-only — skipping remote pre-flight and WebUI steps"
log "Owner: $OWNER_ID ($OWNER) · Mirror: $MIRROR_ID ($MIRROR)"
echo ""
if [[ "${PARTNERSHIP_FOLDERVIEW3:-false}" == true ]]; then
echo "FolderView3 Integration"
PARTNER_FOLDER_NAME=$(derive_partner_folder_name "$MIRROR")
declare -a PARTNER_CONTAINERS=()
gather_partner_fallback_containers PARTNER_CONTAINERS
if [[ ${#PARTNER_CONTAINERS[@]} -gt 0 ]]; then
folderview3_create_partner_folder "$PARTNER_FOLDER_NAME" "${PARTNER_CONTAINERS[@]}"
else
log "No FALLBACK_${MY_ID}_COVERS_${MIRROR_ID}_TIER* containers — skipping folder"
fi
else
log "FolderView3 not configured — skipping"
fi
local_state_file="/boot/config/varaverk_setup.db"
if [[ "$DRY_RUN" == false ]]; then
local flag_key="${MY_ID}_LOCAL_DONE"
if grep -q "^${flag_key}=" "$local_state_file" 2>/dev/null; then
sed -i "s|^${flag_key}=.*|${flag_key}=true|" "$local_state_file"
else
echo "${flag_key}=true" >> "$local_state_file"
fi
command -v php &>/dev/null && \
php -r "require_once '/usr/local/emhttp/plugins/varaverk/include/config.php'; vv_push_setup_state();" 2>/dev/null || true
log "${MY_ID}_LOCAL_DONE=true written to setup.db ✅"
else
warn "DRY RUN — would write ${MY_ID}_LOCAL_DONE=true"
fi
echo ""
echo "HOST1 local setup complete. Waiting for $MIRROR_ID ($MIRROR) to onboard."
exit 0
fi
# ── FULL ONBOARD PATH (requires HOST2) ────────────────────────────────────
# Check already onboarded
if [[ -f "$LOCAL_STATE_FILE" ]]; then
CURRENT_STATE=$(read_state_file "$LOCAL_STATE_FILE" "state")