from pathlib import Path REPO_ROOT = Path(__file__).resolve().parents[2] def test_gke_cnpg_manifest_uses_autopilot_baseline_profile() -> None: manifest = (REPO_ROOT / "deploy" / "gcp" / "gke" / "knoe-db.yaml").read_text(encoding="utf-8") assert "podAntiAffinityType: preferred" in manifest # nodeSelector was intentionally removed: knoe-cnpg-0 is a dedicated DB # cluster so all nodes are available to CNPG; a workload label selector # caused scheduling failures with CNPG v1.28 nodeAffinity translation. assert "nodeSelector" not in manifest or "nodeSelector removed" in manifest assert 'cpu: "100m"' in manifest assert 'cpu: "500m"' in manifest assert 'memory: "512Mi"' in manifest assert "metadata:" in manifest and "namespace: knoe-db-0" in manifest assert "CREATE EXTENSION IF NOT EXISTS postgis_topology;" in manifest assert "postgis_topology SCHEMA" not in manifest assert "barmanObjectStore" not in manifest def test_init_cnpg_gke_default_namespace_matches_manifest_namespace() -> None: script = (REPO_ROOT / "etc" / "init_cnpg_gke.sh").read_text(encoding="utf-8") assert 'CNPG_NAMESPACE="${CNPG_NAMESPACE:-knoe-db-0}"' in script def test_init_cnpg_gke_waits_for_service_account_and_retries_bucket_iam() -> None: script = (REPO_ROOT / "etc" / "init_cnpg_gke.sh").read_text(encoding="utf-8") assert "Waiting for service account propagation" in script assert "for i in $(seq 1 6); do" in script assert "WARN: IAM grant failed" in script assert "--from-file=ca.key=" in script def test_init_cnpg_gke_steps_down_storage_classes_when_quota_is_exhausted() -> None: script = (REPO_ROOT / "etc" / "init_cnpg_gke.sh").read_text(encoding="utf-8") assert 'CNPG_STORAGE_CLASS_ORDER="${CNPG_STORAGE_CLASS_ORDER:-premium-rwo,ssd,premium,standard-rwo,garage-hdd,standard,dynamic-rwo}"' in script assert "resolve_storage_class_candidates" in script assert "storage_class_is_compatible" in script assert "SSD_TOTAL_GB" in script assert "stepping down" in script assert "CNPG provisioning selected storageClass=" in script def test_init_cnpg_gke_manifest_rendering_only_substitutes_required_vars() -> None: script = (REPO_ROOT / "etc" / "init_cnpg_gke.sh").read_text(encoding="utf-8") assert "resolve_knoe_db_image_tag" in script assert "envsubst '${ARTIFACT_REGISTRY} ${KNOE_DB_IMAGE_TAG}'" in script assert "envsubst '${GCP_PROJECT_ID}'" in script