|
2 | 2 | import os |
3 | 3 | from kubernetes.dynamic import DynamicClient |
4 | 4 | import pytest |
5 | | -from tests.model_registry.rest_api.constants import MODEL_REGISTRY_BASE_URI |
| 5 | +import copy |
| 6 | +from tests.model_registry.rest_api.constants import MODEL_REGISTRY_BASE_URI, MODEL_REGISTER_DATA |
6 | 7 | from tests.model_registry.rest_api.utils import ( |
7 | 8 | register_model_rest_api, |
8 | 9 | execute_model_registry_patch_command, |
|
11 | 12 | from ocp_resources.deployment import Deployment |
12 | 13 | from tests.model_registry.utils import ( |
13 | 14 | get_model_registry_deployment_template_dict, |
| 15 | + apply_mysql_args_and_volume_mounts, |
| 16 | + add_mysql_certs_volumes_to_deployment, |
| 17 | + generate_random_name, |
14 | 18 | ) |
| 19 | + |
15 | 20 | from tests.model_registry.constants import ( |
16 | 21 | DB_RESOURCES_NAME, |
17 | 22 | CA_MOUNT_PATH, |
@@ -250,51 +255,20 @@ def patch_mysql_deployment_with_ssl_ca( |
250 | 255 | """ |
251 | 256 | CA_CONFIGMAP_NAME = request.param.get("ca_configmap_name", "mysql-ca-configmap") |
252 | 257 | CA_MOUNT_PATH = request.param.get("ca_mount_path", "/etc/mysql/ssl") |
253 | | - deployment = Deployment( |
254 | | - client=admin_client, |
255 | | - name=model_registry_db_deployment.name, |
256 | | - namespace=model_registry_namespace, |
257 | | - ) |
258 | | - deployment.wait_for_condition(condition="Available", status="True") |
259 | | - original_deployment = deployment.instance.to_dict() |
260 | | - spec = original_deployment["spec"]["template"]["spec"] |
| 258 | + deployment = model_registry_db_deployment.instance.to_dict() |
| 259 | + spec = deployment["spec"]["template"]["spec"] |
261 | 260 | my_sql_container = next(container for container in spec["containers"] if container["name"] == "mysql") |
262 | 261 | assert my_sql_container is not None, "Mysql container not found" |
263 | | - mysql_args = list(my_sql_container.get("args", [])) |
264 | | - mysql_args.extend([ |
265 | | - f"--ssl-ca={CA_MOUNT_PATH}/ca/ca-bundle.crt", |
266 | | - f"--ssl-cert={CA_MOUNT_PATH}/server_cert/tls.crt", |
267 | | - f"--ssl-key={CA_MOUNT_PATH}/server_key/tls.key", |
268 | | - ]) |
269 | | - |
270 | | - volumes_mounts = list(my_sql_container.get("volumeMounts", [])) |
271 | | - volumes_mounts.extend([ |
272 | | - {"name": CA_CONFIGMAP_NAME, "mountPath": f"{CA_MOUNT_PATH}/ca", "readOnly": True}, |
273 | | - { |
274 | | - "name": "mysql-server-cert", |
275 | | - "mountPath": f"{CA_MOUNT_PATH}/server_cert", |
276 | | - "readOnly": True, |
277 | | - }, |
278 | | - { |
279 | | - "name": "mysql-server-key", |
280 | | - "mountPath": f"{CA_MOUNT_PATH}/server_key", |
281 | | - "readOnly": True, |
282 | | - }, |
283 | | - ]) |
284 | 262 |
|
285 | | - my_sql_container["args"] = mysql_args |
286 | | - my_sql_container["volumeMounts"] = volumes_mounts |
287 | | - volumes = list(spec["volumes"]) |
288 | | - volumes.extend([ |
289 | | - {"name": CA_CONFIGMAP_NAME, "configMap": {"name": CA_CONFIGMAP_NAME}}, |
290 | | - {"name": "mysql-server-cert", "secret": {"secretName": "mysql-server-cert"}}, # pragma: allowlist secret |
291 | | - {"name": "mysql-server-key", "secret": {"secretName": "mysql-server-key"}}, # pragma: allowlist secret |
292 | | - ]) |
| 263 | + my_sql_container = apply_mysql_args_and_volume_mounts( |
| 264 | + my_sql_container=my_sql_container, ca_configmap_name=CA_CONFIGMAP_NAME, ca_mount_path=CA_MOUNT_PATH |
| 265 | + ) |
| 266 | + volumes = add_mysql_certs_volumes_to_deployment(spec=spec, ca_configmap_name=CA_CONFIGMAP_NAME) |
293 | 267 |
|
294 | 268 | patch = {"spec": {"template": {"spec": {"volumes": volumes, "containers": [my_sql_container]}}}} |
295 | | - with ResourceEditor(patches={deployment: patch}): |
296 | | - deployment.wait_for_condition(condition="Available", status="True") |
297 | | - yield deployment |
| 269 | + with ResourceEditor(patches={model_registry_db_deployment: patch}): |
| 270 | + model_registry_db_deployment.wait_for_condition(condition="Available", status="True") |
| 271 | + yield model_registry_db_deployment |
298 | 272 |
|
299 | 273 |
|
300 | 274 | @pytest.fixture(scope="class") |
@@ -359,3 +333,17 @@ def mysql_ssl_secrets( |
359 | 333 | "server_cert_secret": server_cert_secret, |
360 | 334 | "server_key_secret": server_key_secret, |
361 | 335 | } |
| 336 | + |
| 337 | + |
| 338 | +@pytest.fixture(scope="function") |
| 339 | +def model_data_for_test() -> Generator[dict[str, Any], None, None]: |
| 340 | + """ |
| 341 | + Generates a model data for the test. |
| 342 | +
|
| 343 | + Returns: |
| 344 | + dict[str, Any]: The model data for the test |
| 345 | + """ |
| 346 | + model_name = generate_random_name(prefix="model-rest-api") |
| 347 | + model_data = copy.deepcopy(MODEL_REGISTER_DATA) |
| 348 | + model_data["register_model_data"]["name"] = model_name |
| 349 | + yield model_data |
0 commit comments