|
1 | | -import time |
2 | 1 | from typing import Generator, Any |
3 | 2 |
|
4 | 3 | import pytest |
|
21 | 20 | QWEN_MODEL_NAME, |
22 | 21 | LLMdInferenceSimConfig, |
23 | 22 | ) |
| 23 | +from timeout_sampler import retry |
| 24 | + |
24 | 25 | from utilities.inference_utils import create_isvc |
25 | 26 | from utilities.infra import get_data_science_cluster, wait_for_dsc_status_ready |
26 | 27 | from utilities.serving_runtime import ServingRuntimeFromTemplate |
@@ -204,14 +205,28 @@ def patched_dsc_kserve_headed( |
204 | 205 | admin_client, kserve_controller_manager_deployment: Deployment |
205 | 206 | ) -> Generator[DataScienceCluster, None, None]: |
206 | 207 | """Configure KServe Services to work in Headed mode i.e. using the Service port instead of the Pod port""" |
| 208 | + |
| 209 | + def _kserve_last_transition_time(dsc_resource: DataScienceCluster) -> str: |
| 210 | + return next(filter(lambda x: x["type"] == "KserveReady", dsc_resource.instance.status["conditions"]))[ |
| 211 | + "lastTransitionTime" |
| 212 | + ] |
| 213 | + |
| 214 | + @retry(wait_timeout=30, sleep=5) |
| 215 | + def _wait_for_headed_entities_status_ready(kserve_last_transition_time: str, dsc_resource: DataScienceCluster): |
| 216 | + if kserve_last_transition_time == _kserve_last_transition_time(dsc_resource): |
| 217 | + return False |
| 218 | + kserve_controller_manager_deployment.wait_for_replicas() |
| 219 | + wait_for_dsc_status_ready(dsc_resource=dsc_resource) |
| 220 | + return True |
| 221 | + |
207 | 222 | dsc = get_data_science_cluster(client=admin_client) |
208 | 223 | if not dsc.instance.spec.components.kserve.rawDeploymentServiceConfig == "Headed": |
209 | 224 | with ResourceEditor( |
210 | 225 | patches={dsc: {"spec": {"components": {"kserve": {"rawDeploymentServiceConfig": "Headed"}}}}} |
211 | 226 | ): |
212 | | - time.sleep(20) # noqa: FCN001 |
213 | | - kserve_controller_manager_deployment.wait_for_replicas() |
214 | | - wait_for_dsc_status_ready(dsc_resource=dsc) |
| 227 | + _wait_for_headed_entities_status_ready( |
| 228 | + kserve_last_transition_time=_kserve_last_transition_time(dsc), dsc_resource=dsc |
| 229 | + ) |
215 | 230 | yield dsc |
216 | 231 | else: |
217 | 232 | LOGGER.info("DSC already configured for Headed mode") |
|
0 commit comments