#!/usr/bin/env python3 """Recover warm keycloak to canonical 10.7.1+26.6.2 healthy after adv_check5's cleanup-script bug left it undeployed on TYPE=10.7.9 (a tag I deleted). NOT a reconciler defect — my test's fault. Steps: recreate 10.7.9 tag (so abra can resolve the current from-version) -> deploy 10.7.9 (kc back up, marker present) -> delete marker realm -> deploy canonical 10.7.1 -> set last_good -> drop 10.7.9 tag -> verify clean.""" import os, subprocess, sys sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) from harness import sso import warm_reconcile as wr D = "warm-keycloak.ci.commoninternet.net" RDIR = os.path.expanduser("~/.abra/recipes/keycloak") GOOD = "04400df"; CANON = "10.7.1+26.6.2"; T9 = "10.7.9+26.6.2"; MARKER = "advmarker-rollback" def git(*a, check=True): return subprocess.run(["git", "-C", RDIR, "-c", "user.email=adv@cc-ci", "-c", "user.name=adv", *a], capture_output=True, text=True, check=check) print(f"START TYPE={wr.current_version(D)} health={wr.health_code(wr.SPECS['keycloak'])}") git("reset", "--hard", GOOD) git("tag", "-a", "-m", "adv", T9, GOOD + "^{commit}", check=False) print("recreated 10.7.9 tag; deploying 10.7.9 to bring kc back...") wr.deploy_version("keycloak", D, T9, 900) assert wr.wait_healthy(wr.SPECS["keycloak"]), "kc not healthy on 10.7.9" realms = sorted(sso.list_realms(D)) print(f"kc healthy on 10.7.9; realms={realms}") if MARKER in realms: sso.delete_keycloak_realm(D, MARKER); print("deleted marker realm") print("deploying canonical 10.7.1...") wr.deploy_version("keycloak", D, CANON, 900) assert wr.wait_healthy(wr.SPECS["keycloak"]), "kc not healthy on canonical" wr.write_last_good("keycloak", CANON) git("tag", "-d", T9, check=False) git("reset", "--hard", GOOD) final_realms = sorted(sso.list_realms(D)) faketags = [t for t in git("tag").stdout.split() if t in (T9, "10.7.10+26.6.2")] print(f"DONE TYPE={wr.current_version(D)} last_good={wr.read_last_good('keycloak')} " f"health={wr.health_code(wr.SPECS['keycloak'])} realms={final_realms} faketags={faketags}") ok = (wr.current_version(D) == CANON and wr.read_last_good("keycloak") == CANON and wr.health_code(wr.SPECS["keycloak"]) == 200 and final_realms == ["master"] and not faketags) print("RECOVER:", "OK" if ok else "INCOMPLETE") sys.exit(0 if ok else 1)