diff --git a/src/providers/inference/watsonx/provider.py b/src/providers/inference/watsonx/provider.py index 5ba4c6a9d..811d6d4ed 100644 --- a/src/providers/inference/watsonx/provider.py +++ b/src/providers/inference/watsonx/provider.py @@ -5,6 +5,7 @@ import asyncio from typing import TYPE_CHECKING, Any, Optional +import httpx from openai import APIError from pydantic_ai.embeddings import EmbeddingModel from pydantic_ai.embeddings.openai import OpenAIEmbeddingModel @@ -63,7 +64,7 @@ async def _discover_models(self) -> list[DiscoveredModel]: ), self._list_foundation_model_functions(), ) - except APIError as exc: + except (APIError, httpx.HTTPStatusError) as exc: raise ModelDiscoveryError(self.provider_id) from exc discovered: list[DiscoveredModel] = [] diff --git a/tests/unit/providers/inference/watsonx/test_provider.py b/tests/unit/providers/inference/watsonx/test_provider.py index 71367bc70..ba7c2fc13 100644 --- a/tests/unit/providers/inference/watsonx/test_provider.py +++ b/tests/unit/providers/inference/watsonx/test_provider.py @@ -128,8 +128,13 @@ async def test_discover_models_keeps_chat_and_embedding_only( ), body=None, ), + httpx.HTTPStatusError( + "IAM token exchange failed", + request=httpx.Request("POST", "https://iam.cloud.ibm.com/identity/token"), + response=httpx.Response(401), + ), ], - ids=["connection-error", "authentication-error"], + ids=["connection-error", "authentication-error", "iam-http-status-error"], ) async def test_discover_models_wraps_api_error( provider: WatsonxInferenceProvider,