Skip to content

Commit 2f0528b

Browse files
Add pod readiness check after LLMInferenceService deployment (#1203)
* Add pod readiness check after LLMInferenceService deployment * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent d90df16 commit 2f0528b

2 files changed

Lines changed: 24 additions & 1 deletion

File tree

tests/model_serving/model_server/llmd/conftest.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
from simple_logger.logger import get_logger
1919

2020
from tests.model_serving.model_server.llmd.llmd_configs import TinyLlamaOciConfig
21-
from tests.model_serving.model_server.llmd.utils import wait_for_llmisvc
21+
from tests.model_serving.model_server.llmd.utils import wait_for_llmisvc, wait_for_llmisvc_pods_ready
2222
from utilities.constants import Timeout
2323
from utilities.infra import create_inference_token, s3_endpoint_secret, update_configmap_data
2424
from utilities.llmd_constants import LLMDGateway
@@ -296,4 +296,5 @@ def _create_llmisvc_from_config(
296296

297297
with LLMInferenceService(**svc_kwargs) as llm_service:
298298
wait_for_llmisvc(llmisvc=llm_service, timeout=config_cls.wait_timeout)
299+
wait_for_llmisvc_pods_ready(client=client, llmisvc=llm_service)
299300
yield llm_service

tests/model_serving/model_server/llmd/utils.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,28 @@ def wait_for_llmisvc(llmisvc: LLMInferenceService, timeout: int = Timeout.TIMEOU
4141
LOGGER.info(f"LLMInferenceService {llmisvc.name} is Ready in namespace {llmisvc.namespace}")
4242

4343

44+
def wait_for_llmisvc_pods_ready(
45+
client: DynamicClient,
46+
llmisvc: LLMInferenceService,
47+
timeout: int = 30,
48+
) -> None:
49+
"""Wait for all LLMISVC pods (workload + router-scheduler) to be Ready."""
50+
pods = list(
51+
Pod.get(
52+
client=client,
53+
namespace=llmisvc.namespace,
54+
label_selector=(
55+
f"{Pod.ApiGroup.APP_KUBERNETES_IO}/part-of=llminferenceservice,"
56+
f"{Pod.ApiGroup.APP_KUBERNETES_IO}/name={llmisvc.name}"
57+
),
58+
)
59+
)
60+
LOGGER.info(f"Waiting for {len(pods)} pod(s) to be Ready for {llmisvc.name}")
61+
for pod in pods:
62+
pod.wait_for_condition(condition="Ready", status="True", timeout=timeout)
63+
LOGGER.info(f"Pod {pod.name} is Ready")
64+
65+
4466
def _get_inference_url(llmisvc: LLMInferenceService) -> str:
4567
"""Extract inference URL from LLMISVC status."""
4668
status = llmisvc.instance.status

0 commit comments

Comments
 (0)