|
1 | 1 | from typing import Self, Any |
2 | 2 | import pytest |
| 3 | +from kubernetes.dynamic import DynamicClient |
| 4 | +from ocp_resources.deployment import Deployment |
3 | 5 | from ocp_resources.model_registry_modelregistry_opendatahub_io import ModelRegistry |
| 6 | +from ocp_resources.persistent_volume_claim import PersistentVolumeClaim |
| 7 | +from ocp_resources.pod import Pod |
| 8 | +from ocp_resources.secret import Secret |
| 9 | +from ocp_resources.service import Service |
4 | 10 |
|
5 | 11 | from tests.model_registry.rest_api.constants import ( |
6 | 12 | MODEL_REGISTER, |
|
21 | 27 |
|
22 | 28 |
|
23 | 29 | LOGGER = get_logger(name=__name__) |
| 30 | +CONNECTION_STRING: str = "/var/run/postgresql:5432 - accepting connections" |
24 | 31 |
|
25 | 32 |
|
26 | 33 | @pytest.mark.parametrize( |
|
38 | 45 | MODEL_REGISTER_DATA, |
39 | 46 | marks=(pytest.mark.sanity), |
40 | 47 | ), |
| 48 | + pytest.param( |
| 49 | + {"db_name": "default"}, |
| 50 | + {"db_name": "default"}, |
| 51 | + MODEL_REGISTER_DATA, |
| 52 | + ), |
41 | 53 | ], |
42 | 54 | indirect=True, |
43 | 55 | ) |
@@ -87,6 +99,73 @@ def test_validate_model_registry_resource( |
87 | 99 | resource_name=data_key, |
88 | 100 | ) |
89 | 101 |
|
| 102 | + @pytest.mark.parametrize( |
| 103 | + "kind, name_suffix", |
| 104 | + [ |
| 105 | + pytest.param( |
| 106 | + Secret, |
| 107 | + "postgres-credentials", |
| 108 | + id="test_secret_default_db_exists", |
| 109 | + ), |
| 110 | + pytest.param( |
| 111 | + Deployment, |
| 112 | + "postgres", |
| 113 | + id="test_deployment_default_db_exists", |
| 114 | + ), |
| 115 | + pytest.param( |
| 116 | + Service, |
| 117 | + "postgres", |
| 118 | + id="test_service_default_db_exists", |
| 119 | + ), |
| 120 | + pytest.param( |
| 121 | + PersistentVolumeClaim, |
| 122 | + "postgres-storage", |
| 123 | + id="test_pvc_default_db_exists", |
| 124 | + ), |
| 125 | + ], |
| 126 | + ) |
| 127 | + def test_default_postgres_db_resource_exists( |
| 128 | + self: Self, |
| 129 | + skip_if_not_default_db: None, |
| 130 | + kind: Any, |
| 131 | + name_suffix: str, |
| 132 | + model_registry_instance: list[ModelRegistry], |
| 133 | + model_registry_namespace: str, |
| 134 | + ) -> None: |
| 135 | + """ |
| 136 | + Check resources created for default postgres database |
| 137 | + """ |
| 138 | + model_registry = model_registry_instance[0] |
| 139 | + resource_name = f"{model_registry.name}-{name_suffix}" |
| 140 | + resource = kind(name=resource_name, namespace=model_registry_namespace) |
| 141 | + if not resource.exists: |
| 142 | + pytest.fail(f"Resource: {resource_name} is not created, in {model_registry_namespace}") |
| 143 | + owner_reference = resource.instance.metadata.ownerReferences |
| 144 | + assert owner_reference, f"Owner reference not found for resource: {resource_name}" |
| 145 | + assert owner_reference[0].kind == model_registry.kind |
| 146 | + assert owner_reference[0].name == model_registry.name |
| 147 | + for field in ["controller", "blockOwnerDeletion"]: |
| 148 | + assert owner_reference[0][field] is True |
| 149 | + |
| 150 | + def test_default_postgres_db_pod_log( |
| 151 | + self: Self, |
| 152 | + skip_if_not_default_db: None, |
| 153 | + admin_client: DynamicClient, |
| 154 | + model_registry_namespace: str, |
| 155 | + model_registry_default_postgres_deployment_match_label: dict[str, str], |
| 156 | + ): |
| 157 | + label_selector = ",".join([ |
| 158 | + f"{k}={v}" for k, v in model_registry_default_postgres_deployment_match_label.items() |
| 159 | + ]) |
| 160 | + LOGGER.info(label_selector) |
| 161 | + pods = list(Pod.get(dyn_client=admin_client, namespace=model_registry_namespace, label_selector=label_selector)) |
| 162 | + assert pods, ( |
| 163 | + "No pods found for default postgres deployment with " |
| 164 | + f"label: {model_registry_default_postgres_deployment_match_label}" |
| 165 | + ) |
| 166 | + postgres_pod_log = pods[0].log(container="postgres") |
| 167 | + assert CONNECTION_STRING in postgres_pod_log |
| 168 | + |
90 | 169 | def test_model_registry_validate_api_version( |
91 | 170 | self: Self, |
92 | 171 | model_registry_instance, |
|
0 commit comments