Skip to content
This repository was archived by the owner on Mar 13, 2022. It is now read-only.

Commit a5e529d

Browse files
authored
Merge pull request #187 from fabianvf/dynamic-ignore-unavailable
Prevent 503s from killing the client during discovery
2 parents fd322f7 + fb259e1 commit a5e529d

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

dynamic/discovery.py

+9-8
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
from urllib3.exceptions import ProtocolError, MaxRetryError
2424

2525
from kubernetes import __version__
26-
from .exceptions import NotFoundError, ResourceNotFoundError, ResourceNotUniqueError, ApiException
26+
from .exceptions import NotFoundError, ResourceNotFoundError, ResourceNotUniqueError, ApiException, ServiceUnavailableError
2727
from .resource import Resource, ResourceList
2828

2929

@@ -155,7 +155,10 @@ def get_resources_for_api_version(self, prefix, group, version, preferred):
155155
subresources = {}
156156

157157
path = '/'.join(filter(None, [prefix, group, version]))
158-
resources_response = self.client.request('GET', path).resources or []
158+
try:
159+
resources_response = self.client.request('GET', path).resources or []
160+
except ServiceUnavailableError:
161+
resources_response = []
159162

160163
resources_raw = list(filter(lambda resource: '/' not in resource['name'], resources_response))
161164
subresources_raw = list(filter(lambda resource: '/' in resource['name'], resources_response))
@@ -251,13 +254,11 @@ def __search(self, parts, resources, reqParams):
251254
# Check if we've requested resources for this group
252255
if not resourcePart.resources:
253256
prefix, group, version = reqParams[0], reqParams[1], part
254-
try:
255-
resourcePart.resources = self.get_resources_for_api_version(prefix,
256-
group, part, resourcePart.preferred)
257-
except NotFoundError:
258-
raise ResourceNotFoundError
257+
resourcePart.resources = self.get_resources_for_api_version(
258+
prefix, group, part, resourcePart.preferred)
259+
259260
self._cache['resources'][prefix][group][version] = resourcePart
260-
self.__update_cache=True
261+
self.__update_cache = True
261262
return self.__search(parts[1:], resourcePart.resources, reqParams)
262263
elif isinstance(resourcePart, dict):
263264
# In this case parts [0] will be a specified prefix, group, version

0 commit comments

Comments
 (0)