Files
exposedgays/deploy/retry-stalled-tasks.py

91 lines
2.9 KiB
Python

#!/usr/bin/env python3
"""Retry stalled Pink Pulse + Supabase tasks with tight timeouts."""
import paramiko
import sys
COOLIFY = ("10.10.0.10", "localadministrator", "Bbt9115xty9176!")
SUPABASE = ("10.10.0.11", "localadministrator", "Bbt9115xty9176!")
MIGRATION_LOCAL = r"C:\Users\Local Administrator\exposedgays\supabase\migration_pulse_analytics.sql"
def run(host, user, password, cmd, timeout=45):
c = paramiko.SSHClient()
c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
c.connect(host, username=user, password=password, timeout=15, allow_agent=False, look_for_keys=False)
try:
print(f"\n=== {host}: {cmd[:120]} ===")
_, o, e = c.exec_command(cmd, timeout=timeout)
code = o.channel.recv_exit_status()
out = (o.read() + e.read()).decode(errors="replace")
print(out[:8000] if out else "(no output)")
print(f"exit {code}")
return code, out
finally:
c.close()
def scp_file(host, user, password, local_path, remote_path, timeout=60):
c = paramiko.SSHClient()
c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
c.connect(host, username=user, password=password, timeout=15, allow_agent=False, look_for_keys=False)
try:
print(f"\n=== SCP {local_path} -> {host}:{remote_path} ===")
sftp = c.open_sftp()
sftp.put(local_path, remote_path)
sftp.close()
print("SCP ok")
return 0
finally:
c.close()
def main():
h, u, p = COOLIFY
errors = 0
# 1. Pink Pulse ads dir
code, _ = run(h, u, p,
"test -d /home/localadministrator/thepinkpulse && "
"ls /home/localadministrator/thepinkpulse/src/components/ads/ 2>/dev/null | head -10 || "
"echo 'ads dir missing or empty'"
)
if code != 0:
errors += 1
# 2. Pink Pulse advertising grep
code, _ = run(h, u, p,
"grep -rn 'advertis\\|Advertise\\|popup' "
"/home/localadministrator/thepinkpulse/src/components --include='*.tsx' 2>/dev/null | head -40 || "
"echo 'no matches'"
)
if code != 0:
errors += 1
# 3. ExposedGays health
code, _ = run(h, u, p, "curl -sS --max-time 10 https://exposedgays.com/ 2>&1 | head -c 300")
if code != 0:
errors += 1
# 4. Supabase migration
sh, su, sp = SUPABASE
try:
scp_file(sh, su, sp, MIGRATION_LOCAL, "/tmp/migration_pulse_analytics.sql")
except Exception as ex:
print(f"SCP failed: {ex}")
errors += 1
else:
code, out = run(
sh, su, sp,
"cat /tmp/migration_pulse_analytics.sql | "
"docker exec -i supabase-db psql -U postgres -d postgres 2>&1 | tail -40",
timeout=90,
)
if code != 0 and "already exists" not in out.lower():
errors += 1
print(f"\n=== DONE ({errors} issues) ===")
sys.exit(1 if errors else 0)
if __name__ == "__main__":
main()