diff options
author | Brian Waldon <bcwaldon@gmail.com> | 2013-04-29 11:34:24 -0700 |
---|---|---|
committer | Brian Waldon <bcwaldon@gmail.com> | 2013-04-29 13:47:57 -0700 |
commit | eae3d724c08b7bf13ef2ae5588fc0df4cbcc271c (patch) | |
tree | 40e317203bec7feaebd61c52f2e5e72b81c6e32f /novaclient/exceptions.py | |
parent | 201b74b6cc4e458d3b19a948352952e53048b79f (diff) | |
download | python-novaclient-eae3d724c08b7bf13ef2ae5588fc0df4cbcc271c.tar.gz |
Expose retry_after attribute of OverLimit exception
Fixes bug 1174469
Change-Id: Ic1e67f6f91d4fe2072ff68dfb36330cd86c1d5b4
Diffstat (limited to 'novaclient/exceptions.py')
-rw-r--r-- | novaclient/exceptions.py | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/novaclient/exceptions.py b/novaclient/exceptions.py index 958f0bc1..b331c3c0 100644 --- a/novaclient/exceptions.py +++ b/novaclient/exceptions.py @@ -123,6 +123,14 @@ class OverLimit(ClientException): http_status = 413 message = "Over limit" + def __init__(self, *args, **kwargs): + try: + self.retry_after = int(kwargs.pop('retry_after')) + except (KeyError, ValueError): + self.retry_after = 0 + + super(OverLimit, self).__init__(*args, **kwargs) + # NotImplemented is a python keyword. class HTTPNotImplemented(ClientException): @@ -164,6 +172,9 @@ def from_response(response, body, url, method=None): if response.headers: kwargs['request_id'] = response.headers.get('x-compute-request-id') + if 'retry-after' in response.headers: + kwargs['retry_after'] = response.headers.get('retry-after') + if body: message = "n/a" details = "n/a" |