openswitch.py: Fix the OpenSwitch REST authentication

It's a cookie based authentication, that we get it
through /login endpoint, called by connect() method
and save the cookie for the rest of the call.
This commit is contained in:
Kei Nohguchi 2016-05-17 14:58:32 -07:00 committed by Peter Sprygada
parent 309aba128c
commit 94e4e4105d

View file

@ -114,7 +114,20 @@ class Rest(object):
if not port:
port = 80
self.baseurl = '%s://%s:%s/rest/v1' % (proto, host, port)
baseurl = '%s://%s:%s' % (proto, host, port)
headers = dict({'Content-Type': 'application/x-www-form-urlencoded'})
# Get a cookie and save it the rest of the operations.
url = '%s/%s' % (baseurl, 'login')
data = 'username=%s&password=%s' % (self.module.params['username'],
self.module.params['password'])
resp, hdrs = fetch_url(self.module, url, data=data,
headers=headers, method='POST')
# Update the base url for the rest of the operations.
self.baseurl = '%s/rest/v1' % (baseurl)
self.headers = dict({'Content-Type': 'application/json',
'Accept': 'application/json',
'Cookie': resp.headers.get('Set-Cookie')})
def _url_builder(self, path):
if path[0] == '/':
@ -127,7 +140,7 @@ class Rest(object):
if headers is None:
headers = dict()
headers.update({'Content-Type': 'application/json'})
headers.update(self.headers)
resp, hdrs = fetch_url(self.module, url, data=data, headers=headers,
method=method)