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

Commit 2b6fb25

Browse files
kkzoKiran Naidoo
authored and
Kiran Naidoo
committed
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 7aa1ff4 commit 2b6fb25

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

consul/base.py

+11-1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,13 @@ class ClientError(ConsulException):
4141
pass
4242

4343

44+
class ConsulUnhealthy(ConsulException):
45+
"""
46+
429 response code: Some healthchecks are passing, at least one is warning
47+
"""
48+
pass
49+
50+
4451
#
4552
# Convenience to define checks
4653

@@ -194,7 +201,7 @@ def _compat(
194201

195202
class CB(object):
196203
@classmethod
197-
def _status(klass, response, allow_404=True):
204+
def _status(klass, response, allow_404=True, allow_429=True):
198205
# status checking
199206
if 400 <= response.code < 500:
200207
if response.code == 400:
@@ -206,6 +213,9 @@ def _status(klass, response, allow_404=True):
206213
elif response.code == 404:
207214
if not allow_404:
208215
raise NotFound(response.body)
216+
elif response.code == 429:
217+
if not allow_429:
218+
raise ConsulUnhealthy(response.body)
209219
else:
210220
raise ClientError("%d %s" % (response.code, response.body))
211221
elif 500 <= response.code < 600:

0 commit comments

Comments
 (0)