mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-06-28 03:00:23 -07:00
Merge pull request #16553 from ericchou1/devel
Added axapi_authenticate_v3 and axapi_call_v3 for AXAPIv3
This commit is contained in:
commit
d64eaae232
1 changed files with 37 additions and 0 deletions
|
@ -88,6 +88,43 @@ def axapi_authenticate(module, base_url, username, password):
|
||||||
sessid = result['session_id']
|
sessid = result['session_id']
|
||||||
return base_url + '&session_id=' + sessid
|
return base_url + '&session_id=' + sessid
|
||||||
|
|
||||||
|
def axapi_authenticate_v3(module, base_url, username, password):
|
||||||
|
url = base_url
|
||||||
|
auth_payload = {"credentials": {"username": username, "password": password}}
|
||||||
|
result = axapi_call_v3(module, url, post=auth_payload)
|
||||||
|
if axapi_failure(result):
|
||||||
|
return module.fail_json(msg=result['response']['err']['msg'])
|
||||||
|
signature = result['authresponse']['signature']
|
||||||
|
return signature
|
||||||
|
|
||||||
|
def axapi_call_v3(module, url, method=None, body=None, signature=None):
|
||||||
|
'''
|
||||||
|
Returns a datastructure based on the result of the API call
|
||||||
|
'''
|
||||||
|
if signature:
|
||||||
|
headers = {'content-type': 'application/json', 'Authorization': 'A10 %s' % signature}
|
||||||
|
else:
|
||||||
|
headers = {'content-type': 'application/json'}
|
||||||
|
rsp, info = fetch_url(module, url, method=method, data=json.dumps(body), headers=headers)
|
||||||
|
if not rsp or info['status'] >= 400:
|
||||||
|
module.fail_json(msg="failed to connect (status code %s), error was %s" % (info['status'], info.get('msg', 'no error given')))
|
||||||
|
try:
|
||||||
|
raw_data = rsp.read()
|
||||||
|
data = json.loads(raw_data)
|
||||||
|
except ValueError:
|
||||||
|
# at least one API call (system.action.write_config) returns
|
||||||
|
# XML even when JSON is requested, so do some minimal handling
|
||||||
|
# here to prevent failing even when the call succeeded
|
||||||
|
if 'status="ok"' in raw_data.lower():
|
||||||
|
data = {"response": {"status": "OK"}}
|
||||||
|
else:
|
||||||
|
data = {"response": {"status": "fail", "err": {"msg": raw_data}}}
|
||||||
|
except:
|
||||||
|
module.fail_json(msg="could not read the result from the host")
|
||||||
|
finally:
|
||||||
|
rsp.close()
|
||||||
|
return data
|
||||||
|
|
||||||
def axapi_enabled_disabled(flag):
|
def axapi_enabled_disabled(flag):
|
||||||
'''
|
'''
|
||||||
The axapi uses 0/1 integer values for flags, rather than strings
|
The axapi uses 0/1 integer values for flags, rather than strings
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue