ligbox-ops-platform/deploy/vm112-wizard/ensure-carbonio-list-domains.py
Ligbox Spec Hub b03bb2c37c feat(desk): UI/API Spec 039-041 + deploy atómico e smoke GREEN
Commita governance, user-wizard, operational-feed e catálogo RBAC;
adiciona deploy-desk-full.sh, smoke-desk.sh e regra anti-deploy parcial;
documenta credencial VM112 @betinplace.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-02 13:32:15 +00:00

52 lines
1.7 KiB
Python

#!/usr/bin/env python3
"""Garante list_all_domains() em carbonio.py na VM112 (Serviços IaaS / Spec 017).
Executar NA VM112 após patches que sobrescrevem carbonio.py sem gad cache.
python3 ensure-carbonio-list-domains.py
systemctl restart ligbox-wizard
"""
from __future__ import annotations
from pathlib import Path
PATH = Path("/opt/ligbox-wizard/backend/app/services/carbonio.py")
MARKER = "\ndef set_domain_public_hostname(domain: str) -> str:"
INSERT = '''
def list_all_domains(*, use_cache: bool = True) -> list[str]:
"""zmprov gad (~5s) — cache TTL curto para Serviços IaaS / Desk."""
cache_key = carbonio_cache.CACHE_KEY_ALL_DOMAINS
if use_cache:
cached = carbonio_cache.get(cache_key)
if cached is not None:
return list(cached)
code, out, _err = _zmprov_run("gad", log_cmd=False)
if code != 0:
return []
domains = [ln.strip().lower() for ln in out.splitlines() if ln.strip()]
if use_cache:
carbonio_cache.set(cache_key, domains, carbonio_cache.TTL_ALL_DOMAINS)
return domains
def invalidate_domain_list_cache() -> None:
carbonio_cache.invalidate_all_domains()
'''
def main() -> None:
if not PATH.is_file():
raise SystemExit(f"ERRO: {PATH} não encontrado — executar na VM112")
text = PATH.read_text(encoding="utf-8")
if "def list_all_domains" in text:
print("OK — list_all_domains já presente")
return
if MARKER not in text:
raise SystemExit("ERRO: marker set_domain_public_hostname não encontrado")
PATH.write_text(text.replace(MARKER, INSERT + MARKER, 1), encoding="utf-8")
print("OK — list_all_domains inserido; reiniciar: systemctl restart ligbox-wizard")
if __name__ == "__main__":
main()