Skip to content

Commit 7e56062

Browse files
committed
change: use model_registry_mysql_config fixture
1 parent 3a056d2 commit 7e56062

4 files changed

Lines changed: 28 additions & 53 deletions

File tree

tests/model_registry/conftest.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -188,16 +188,22 @@ def model_registry_instance_oauth_proxy(
188188

189189
@pytest.fixture(scope="class")
190190
def model_registry_mysql_config(
191-
model_registry_db_deployment: Deployment, model_registry_db_secret: Secret
191+
model_registry_db_deployment: Deployment,
192+
model_registry_db_secret: Secret,
193+
ssl_ca: str | None = None,
194+
port: int = 3306,
192195
) -> dict[str, Any]:
193-
return {
196+
config = {
194197
"host": f"{model_registry_db_deployment.name}.{model_registry_db_deployment.namespace}.svc.cluster.local",
195198
"database": model_registry_db_secret.string_data["database-name"],
196199
"passwordSecret": {"key": "database-password", "name": model_registry_db_deployment.name},
197-
"port": 3306,
200+
"port": port,
198201
"skipDBCreation": False,
199202
"username": model_registry_db_secret.string_data["database-user"],
200203
}
204+
if ssl_ca is not None:
205+
config["ssl_ca"] = ssl_ca
206+
return config
201207

202208

203209
@pytest.fixture(scope="class")

tests/model_registry/rest_api/conftest.py

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
from tests.model_registry.utils import (
1212
get_model_registry_deployment_template_dict,
1313
create_model_registry_instance,
14-
make_mysql_config,
1514
)
1615
from tests.model_registry.constants import (
1716
DB_RESOURCES_NAME,
@@ -106,26 +105,19 @@ def patch_invalid_ca(
106105
@pytest.fixture(scope="function")
107106
def model_registry_instance_ca(
108107
model_registry_namespace: str,
109-
model_registry_db_secret: Secret,
110-
model_registry_db_service: Service,
111-
patch_invalid_ca: str,
108+
model_registry_mysql_config: dict[str, Any],
112109
) -> Generator[ModelRegistry, Any, Any]:
113110
"""
114111
Deploys a Model Registry instance with a custom CA certificate.
115112
"""
116-
mysql_config = make_mysql_config(
117-
db_service=model_registry_db_service,
118-
db_secret=model_registry_db_secret,
119-
ssl_ca=patch_invalid_ca,
120-
)
121113
with create_model_registry_instance(
122114
namespace=model_registry_namespace,
123115
name=SECURE_MR_NAME,
124116
labels=MODEL_REGISTRY_STANDARD_LABELS,
125117
grpc={},
126118
rest={},
127119
istio=ISTIO_CONFIG_DICT,
128-
mysql=mysql_config,
120+
mysql=model_registry_mysql_config,
129121
wait_for_resource=True,
130122
) as mr:
131123
mr.wait_for_condition(condition="Available", status="True")
@@ -138,6 +130,7 @@ def deploy_secure_mysql_and_mr(
138130
model_registry_db_secret: Secret,
139131
model_registry_db_service: Service,
140132
model_registry_db_deployment: Deployment,
133+
model_registry_mysql_config: dict[str, Any],
141134
) -> Generator[ModelRegistry, None, None]:
142135
"""
143136
Deploys MySQL with SSL/TLS and a Model Registry configured to use a secure DB connection.
@@ -161,19 +154,14 @@ def deploy_secure_mysql_and_mr(
161154
patch = {"spec": {"template": mysql_template["spec"]}}
162155

163156
with ResourceEditor(patches={model_registry_db_deployment: patch}):
164-
mysql_config = make_mysql_config(
165-
db_service=model_registry_db_service,
166-
db_secret=model_registry_db_secret,
167-
ssl_ca=CA_FILE_PATH,
168-
)
169157
with create_model_registry_instance(
170158
namespace=model_registry_namespace,
171159
name=SECURE_MR_NAME,
172160
labels=MODEL_REGISTRY_STANDARD_LABELS,
173161
grpc={},
174162
rest={},
175163
istio=ISTIO_CONFIG_DICT,
176-
mysql=mysql_config,
164+
mysql=model_registry_mysql_config,
177165
wait_for_resource=True,
178166
) as mr:
179167
mr.wait_for_condition(condition="Available", status="True")

tests/model_registry/rest_api/test_model_registry_secure_db.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,18 +34,31 @@ class TestModelRegistryWithSecureDB:
3434
Includes tests for both invalid and valid CA certificate scenarios.
3535
"""
3636

37+
@pytest.fixture
38+
def invalid_ca_mysql_config(patch_invalid_ca):
39+
"""
40+
Fixture that returns a dict for model_registry_mysql_config with ssl_ca set to the value from patch_invalid_ca.
41+
"""
42+
return {"ssl_ca": patch_invalid_ca}
43+
3744
# Implements RHOAIENG-26150
38-
@pytest.mark.usefixtures("model_registry_instance_ca")
3945
@pytest.mark.parametrize(
4046
"patch_invalid_ca",
4147
[{"ca_configmap_name": "odh-trusted-ca-bundle", "ca_file_name": "invalid-ca.crt"}],
4248
indirect=True,
4349
)
50+
@pytest.mark.parametrize(
51+
"model_registry_mysql_config",
52+
[pytest.param("invalid_ca_mysql_config")],
53+
indirect=True,
54+
)
4455
@pytest.mark.smoke
4556
def test_register_model_with_invalid_ca(
4657
self: Self,
4758
model_registry_rest_url: str,
4859
model_registry_rest_headers: dict[str, str],
60+
model_registry_instance_ca,
61+
patch_invalid_ca,
4962
) -> None:
5063
"""
5164
Test that model registration fails with an SSLError when the Model Registry is deployed

tests/model_registry/utils.py

Lines changed: 1 addition & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,9 @@
1010
from simple_logger.logger import get_logger
1111
from timeout_sampler import TimeoutExpiredError, TimeoutSampler
1212
from kubernetes.dynamic.exceptions import NotFoundError
13-
from tests.model_registry.constants import MR_DB_IMAGE_DIGEST, DB_RESOURCES_NAME
13+
from tests.model_registry.constants import MR_DB_IMAGE_DIGEST
1414
from utilities.exceptions import ProtocolNotSupportedError, TooManyServicesError
1515
from utilities.constants import Protocols, Annotations
16-
from ocp_resources.secret import Secret
1716

1817
ADDRESS_ANNOTATION_PREFIX: str = "routing.opendatahub.io/external-address-"
1918

@@ -316,34 +315,3 @@ def create_model_registry_instance(
316315
enable_database_upgrade=enable_database_upgrade,
317316
wait_for_resource=wait_for_resource,
318317
)
319-
320-
321-
def make_mysql_config(
322-
db_service: Service,
323-
db_secret: Secret,
324-
ssl_ca: str,
325-
db_resource_name: str = DB_RESOURCES_NAME,
326-
port: int = 3306,
327-
) -> dict[str, Any]:
328-
"""
329-
Factory to create a MySQL config dictionary for Model Registry.
330-
331-
Args:
332-
db_service: The MySQL Service resource.
333-
db_secret : The MySQL Secret resource.
334-
ssl_ca: Path to the CA bundle file.
335-
db_resource_name: Name of the DB resource (default: DB_RESOURCES_NAME).
336-
port: Port number for the MySQL connection (default: 3306).
337-
338-
Returns:
339-
dict: MySQL configuration dictionary.
340-
"""
341-
return {
342-
"host": f"{db_service.name}.{db_service.namespace}.svc.cluster.local",
343-
"database": db_secret.string_data["database-name"],
344-
"passwordSecret": {"key": "database-password", "name": db_resource_name},
345-
"port": port,
346-
"skipDBCreation": False,
347-
"username": db_secret.string_data["database-user"],
348-
"ssl_ca": ssl_ca,
349-
}

0 commit comments

Comments
 (0)