44 lines
2.3 KiB
Python
44 lines
2.3 KiB
Python
#!/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)
|