Skip to content
This repository was archived by the owner on May 30, 2024. It is now read-only.

Commit e5d4af8

Browse files
kkzoKiran Naidoo
authored andcommitted
Support Consul response code: 429
Consul returns a 429 response code when: Some healthchecks are passing, at least one is warning (see https://www.consul.io/api-docs/agent/service). This PR updates the callback handler to support response code 429.
1 parent b105755 commit e5d4af8

1 file changed

Lines changed: 9 additions & 1 deletion

File tree

consul/base.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,11 @@ class ClientError(ConsulException):
4040
"""Encapsulates 4xx Http error code"""
4141
pass
4242

43+
class ConsulUnhealthy(ConsulException):
44+
"""
45+
429 response code: Some healthchecks are passing, at least one is warning
46+
"""
47+
pass
4348

4449
#
4550
# Convenience to define checks
@@ -194,7 +199,7 @@ def _compat(
194199

195200
class CB(object):
196201
@classmethod
197-
def _status(klass, response, allow_404=True):
202+
def _status(klass, response, allow_404=True, allow_429=True):
198203
# status checking
199204
if 400 <= response.code < 500:
200205
if response.code == 400:
@@ -206,6 +211,9 @@ def _status(klass, response, allow_404=True):
206211
elif response.code == 404:
207212
if not allow_404:
208213
raise NotFound(response.body)
214+
elif response.code == 429:
215+
if not allow_429:
216+
raise ConsulUnhealthy(response.body)
209217
else:
210218
raise ClientError("%d %s" % (response.code, response.body))
211219
elif 500 <= response.code < 600:

0 commit comments

Comments
 (0)