Additional handling for 404
- sometimes 404 is acceptable
This commit is contained in:
parent
00ca2d2133
commit
0b5fd3a2cf
|
@ -120,7 +120,8 @@ def get_key_from_filesystem(module):
|
||||||
"the API key manually.")
|
"the API key manually.")
|
||||||
|
|
||||||
# Fetch Syncthing configuration
|
# Fetch Syncthing configuration
|
||||||
def remote_config(module, method='GET', config=None, result=None, device=None):
|
def remote_config(module, method='GET', config=None, result=None, device=None,
|
||||||
|
missing_ok=False):
|
||||||
unix_socket = None
|
unix_socket = None
|
||||||
if 'unix_socket' in module.params:
|
if 'unix_socket' in module.params:
|
||||||
unix_socket = module.params['unix_socket']
|
unix_socket = module.params['unix_socket']
|
||||||
|
@ -140,23 +141,32 @@ def remote_config(module, method='GET', config=None, result=None, device=None):
|
||||||
module, url=url, unix_socket=unix_socket,
|
module, url=url, unix_socket=unix_socket,
|
||||||
data=data, headers=headers,
|
data=data, headers=headers,
|
||||||
method=method, timeout=module.params['timeout'])
|
method=method, timeout=module.params['timeout'])
|
||||||
|
if info:
|
||||||
if not info or info['status'] != 200:
|
|
||||||
result['response'] = info
|
result['response'] = info
|
||||||
|
else:
|
||||||
module.fail_json(msg='Error occured while calling host', **result)
|
module.fail_json(msg='Error occured while calling host', **result)
|
||||||
|
|
||||||
|
if info['status'] not in [200, 404]:
|
||||||
|
module.fail_json(msg='Error occured while calling host', **result)
|
||||||
|
|
||||||
|
if info['status'] == 404:
|
||||||
|
if missing_ok:
|
||||||
|
return {}
|
||||||
|
else:
|
||||||
|
module.fail_json(msg='Error occured while calling host', **result)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
content = resp.read()
|
content = resp.read()
|
||||||
except AttributeError:
|
return json.loads(content)
|
||||||
|
except (AttributeError, json.decoder.JSONDecodeError):
|
||||||
result['content'] = info.pop('body', '')
|
result['content'] = info.pop('body', '')
|
||||||
result['response'] = str(info)
|
|
||||||
module.fail_json(msg='Error occured while reading response', **result)
|
module.fail_json(msg='Error occured while reading response', **result)
|
||||||
|
|
||||||
return json.loads(content)
|
return {} # not reachable but prevents linter complaints
|
||||||
|
|
||||||
|
|
||||||
def get_device(module, device=None):
|
def get_device(module, device=None):
|
||||||
return remote_config(module, device=device)
|
return remote_config(module, missing_ok=True, device=device)
|
||||||
def delete_device(module, device, result=None):
|
def delete_device(module, device, result=None):
|
||||||
return remote_config(module, method='DELETE', device=device, result=result)
|
return remote_config(module, method='DELETE', device=device, result=result)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user