Skip to content

Commit 80e6a9b

Browse files
committed
ref(scheduler): spin off response info in KubeException into KubeHTTPException
This offers more granularity when catching exceptions and if the HTTP version comes down the user will know there is a response class variable
1 parent 80cfc5b commit 80e6a9b

2 files changed

Lines changed: 19 additions & 8 deletions

File tree

rootfs/api/models/app.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
from api.models.container import Container
1919
from api.models.domain import Domain
2020

21-
from scheduler import KubeException
21+
from scheduler import KubeHTTPException, KubeException
2222

2323
logger = logging.getLogger(__name__)
2424

@@ -551,7 +551,7 @@ def list_pods(self, *args, **kwargs):
551551
data.sort(key=lambda x: x['started'], reverse=True)
552552

553553
return data
554-
except KubeException as e:
554+
except KubeHTTPException as e:
555555
pass
556556
except Exception as e:
557557
err = '(list pods): {}'.format(e)

rootfs/scheduler/__init__.py

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -264,14 +264,25 @@
264264

265265
class KubeException(Exception):
266266
def __init__(self, *args, **kwargs):
267-
self.response = kwargs.pop('response', object)
268267
Exception.__init__(self, *args, **kwargs)
269268

270269

271-
def error(resp, errmsg, *args):
270+
class KubeHTTPException(KubeException):
271+
def __init__(self, *args, **kwargs):
272+
self.response = kwargs.pop('response', object)
273+
KubeException.__init__(self, *args, **kwargs)
274+
275+
276+
def error(response, errmsg, *args):
272277
errmsg = errmsg.format(*args)
273-
errmsg = "failed to {}: {} {}\n{}".format(errmsg, resp.status_code, resp.reason, resp.json())
274-
raise KubeException(errmsg, response=resp)
278+
errmsg = "failed to {}: {} {}\n{}".format(
279+
errmsg,
280+
response.status_code,
281+
response.reason,
282+
response.json()
283+
)
284+
285+
raise KubeHTTPException(errmsg, response=response)
275286

276287

277288
def unhealthy(status_code):
@@ -1076,7 +1087,7 @@ def _delete_pod(self, name, namespace):
10761087
for _ in range(30):
10771088
try:
10781089
self._get_pod(name, namespace)
1079-
except KubeException as e:
1090+
except KubeHTTPException as e:
10801091
if e.response.status_code == 404:
10811092
break
10821093

@@ -1085,7 +1096,7 @@ def _delete_pod(self, name, namespace):
10851096
# Pod was not deleted within the grace period.
10861097
try:
10871098
self._get_pod(name, namespace)
1088-
except KubeException as e:
1099+
except KubeHTTPException as e:
10891100
if e.response.status_code != 404:
10901101
error(e.response, 'delete Pod "{}" in Namespace "{}"', name, namespace)
10911102

0 commit comments

Comments
 (0)