Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 11 additions & 2 deletions src/deployment/kubernetes/_util.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
import logging
from contextlib import asynccontextmanager

from aiohttp import ClientTimeout
from aiohttp import ClientError, ClientTimeout
from kubernetes_asyncio.client import ApiClient, CoreV1Api, CustomObjectsApi, DiscoveryV1Api, StorageV1Api
from kubernetes_asyncio.config import load_incluster_config, load_kube_config
from kubernetes_asyncio.config.config_exception import ConfigException

from ...exceptions import VelaKubernetesError

KUBE_API_SERVER_TIMEOUT = 10
logger = logging.getLogger(__name__)


class ApiClientWithTimeout(ApiClient):
Expand All @@ -20,7 +22,14 @@ async def call_api(self, *args, _request_timeout=None, **kwargs):
_request_timeout = self.default_timeout
if "_request_timeout" not in kwargs:
kwargs["_request_timeout"] = _request_timeout
return await super().call_api(*args, **kwargs)
try:
return await super().call_api(*args, **kwargs)
except TimeoutError as exc:
logger.error("Kubernetes API request timed out (timeout=%ss)", _request_timeout, exc_info=exc)
raise VelaKubernetesError("Kubernetes API request timed out") from exc
except ClientError as exc:
logger.error("Kubernetes API request failed with client error", exc_info=exc)
raise VelaKubernetesError("Kubernetes API client error") from exc


async def _ensure_kubeconfig() -> None:
Expand Down