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>
52 lines
1.7 KiB
Python
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()
|