letsencrypt: Improve error handling (#2868)
* letsencrypt: improve error handling Use the new "body" field of the info dict in case of a HTTPError. * letsencrypt: HTTP 202 is a valid status while polling
This commit is contained in:
parent
2b6f3419b6
commit
d69a6f20da
1 changed files with 19 additions and 11 deletions
|
@ -169,14 +169,18 @@ def simple_get(module,url):
|
|||
result = None
|
||||
try:
|
||||
content = resp.read()
|
||||
except AttributeError:
|
||||
if info['body']:
|
||||
content = info['body']
|
||||
|
||||
if content:
|
||||
if info['content-type'].startswith('application/json'):
|
||||
result = module.from_json(content.decode('utf8'))
|
||||
try:
|
||||
result = module.from_json(content.decode('utf8'))
|
||||
except ValueError:
|
||||
module.fail_json(msg="Failed to parse the ACME response: {0} {1}".format(url,content))
|
||||
else:
|
||||
result = content
|
||||
except AttributeError:
|
||||
result = None
|
||||
except ValueError:
|
||||
module.fail_json(msg="Failed to parse the ACME response: {0} {1}".format(url,content))
|
||||
|
||||
if info['status'] >= 400:
|
||||
module.fail_json(msg="ACME request failed: CODE: {0} RESULT:{1}".format(info['status'],result))
|
||||
|
@ -370,14 +374,18 @@ class ACMEAccount(object):
|
|||
result = None
|
||||
try:
|
||||
content = resp.read()
|
||||
except AttributeError:
|
||||
if info['body']:
|
||||
content = info['body']
|
||||
|
||||
if content:
|
||||
if info['content-type'].startswith('application/json'):
|
||||
result = self.module.from_json(content.decode('utf8'))
|
||||
try:
|
||||
result = self.module.from_json(content.decode('utf8'))
|
||||
except ValueError:
|
||||
self.module.fail_json(msg="Failed to parse the ACME response: {0} {1}".format(url,content))
|
||||
else:
|
||||
result = content
|
||||
except AttributeError:
|
||||
result = None
|
||||
except ValueError:
|
||||
self.module.fail_json(msg="Failed to parse the ACME response: {0} {1}".format(url,content))
|
||||
|
||||
return result,info
|
||||
|
||||
|
@ -637,7 +645,7 @@ class ACMEClient(object):
|
|||
"keyAuthorization": keyauthorization,
|
||||
}
|
||||
result, info = self.account.send_signed_request(uri, challenge_response)
|
||||
if info['status'] != 200:
|
||||
if info['status'] not in [200,202]:
|
||||
self.module.fail_json(msg="Error validating challenge: CODE: {0} RESULT: {1}".format(info['status'], result))
|
||||
|
||||
status = ''
|
||||
|
|
Loading…
Reference in a new issue