railiance-platform/scripts/verify-backup-pair-versions.py
codex dfb3e105fc
All checks were successful
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 2s
Record that both backup publisher slots are at version 2.
The placeholders are gone. The bucket policy still names only the original backup application.

Assistant: grok
Assistant-Session: 01a11cdb-f9fe-7011-947c-936e72007e54
2026-10-08 23:19:21 +02:00

59 lines
1.8 KiB
Python

#!/usr/bin/env python3
"""Confirm backup-primary version 2 replaced the placeholder. No key material."""
from __future__ import annotations
import json
import subprocess
from pathlib import Path
RECEIPT = Path("/home/worsch/.local/state/railiance/receipts/backup-pair-version2.json")
PATHS = {
"coulomb-social": "platform/workloads/coulomb-social/backup-primary",
"email-connect": "platform/workloads/email-connect/backup-primary",
}
FIELDS = ("AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY")
def kv(path):
proc = subprocess.run(["bao", "kv", "get", "-format=json", path], capture_output=True)
if proc.returncode:
raise SystemExit(61)
return json.loads(proc.stdout)["data"]["data"]
def main():
loaded = {name: kv(path) for name, path in PATHS.items()}
rows = []
access_keys = []
for name, values in loaded.items():
row = {"application": name, "fields": sorted(values)}
for field in FIELDS:
value = values.get(field)
row[field] = {
"present": isinstance(value, str) and bool(value),
"pending": value == "PENDING",
"length": len(value) if isinstance(value, str) else 0,
}
access_keys.append(values.get("AWS_ACCESS_KEY_ID"))
rows.append(row)
receipt = {
"applications": rows,
"access_keys_differ": access_keys[0] != access_keys[1],
"secrets_differ": (
loaded["coulomb-social"].get("AWS_SECRET_ACCESS_KEY")
!= loaded["email-connect"].get("AWS_SECRET_ACCESS_KEY")
),
}
RECEIPT.parent.mkdir(mode=0o700, exist_ok=True)
RECEIPT.write_text(json.dumps(receipt, indent=2) + "\n")
RECEIPT.chmod(0o600)
if __name__ == "__main__":
try:
main()
except SystemExit:
raise
except Exception:
raise SystemExit(62) from None