"""Shared helpers for Garage object-store ops across all deployment modes.""" from __future__ import annotations import json import secrets from ._services_common import ( _LogFn, _exists, _kubectl, _log, _to_bool, ) def _garage_namespace(namespace: str | None, env: dict | None) -> str: service_ns = str((env or {}).get("SERVICE_NAMESPACE") or "").strip() if env: explicit = str(env.get("GARAGE_NAMESPACE") or "").strip() if explicit: return service_ns if explicit == "default" and service_ns else explicit raw = (namespace or "").strip() or service_ns or str((env or {}).get("NAMESPACE") or "").strip() or "knoe-system" if raw == "default": return service_ns or "knoe-system" return raw def _ensure_garage_secret(*, namespace: str, env: dict | None = None, log: _LogFn | None = None) -> None: secret_name = str((env or {}).get("GARAGE_SECRET_NAME") or "garage-secrets").strip() or "garage-secrets" force = _to_bool((env or {}).get("PROLE_GARAGE_FORCE_SECRET"), default=False) if not force and _exists("secret", secret_name, namespace, env=env): return payload = ( "apiVersion: v1\n" "kind: Secret\n" "metadata:\n" f" name: {secret_name}\n" "type: Opaque\n" "stringData:\n" f" rpc_secret: {json.dumps(secrets.token_hex(32))}\n" f" admin_token: {json.dumps(secrets.token_urlsafe(32))}\n" f" metrics_token: {json.dumps(secrets.token_urlsafe(32))}\n" ) _kubectl( ["-n", namespace, "apply", "-f", "-"], env=env, input_text=payload, timeout=90, check=True, ) _log(log, f"[GARAGE] Ensured secret/{secret_name} in namespace {namespace}")