Files
cc-ci/runner/adv_recover.py

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)