NSX|V Use requests module for HTTP/HTTPS
Replace the httplib2 with the more secure requests module Change-Id: Idc348040e7c362d78c26df8c4c2b6ef9bf6d2acb
This commit is contained in:
parent
d149b2dee4
commit
44aa29be8c
@ -14,14 +14,12 @@
|
||||
|
||||
import base64
|
||||
|
||||
import eventlet
|
||||
from oslo_serialization import jsonutils
|
||||
import requests
|
||||
import six
|
||||
|
||||
from vmware_nsx.plugins.nsx_v.vshield.common import exceptions
|
||||
|
||||
httplib2 = eventlet.import_patched('httplib2')
|
||||
|
||||
|
||||
def _xmldump(obj):
|
||||
"""Sort of improved xml creation method.
|
||||
@ -90,36 +88,45 @@ class VcnsApiHelper(object):
|
||||
self.encode = jsonutils.dumps
|
||||
else:
|
||||
self.encode = xmldumps
|
||||
self.ca_file = ca_file
|
||||
self.insecure = insecure
|
||||
|
||||
if insecure:
|
||||
self.verify_cert = False
|
||||
else:
|
||||
if ca_file:
|
||||
self.verify_cert = ca_file
|
||||
else:
|
||||
self.verify_cert = True
|
||||
|
||||
def request(self, method, uri, params=None, headers=None,
|
||||
encodeparams=True):
|
||||
uri = self.address + uri
|
||||
http = httplib2.Http()
|
||||
if self.ca_file is not None:
|
||||
http.ca_certs = self.ca_file
|
||||
http.disable_ssl_certificate_validation = False
|
||||
else:
|
||||
http.disable_ssl_certificate_validation = self.insecure
|
||||
if headers is None:
|
||||
headers = {}
|
||||
|
||||
headers['Accept'] = 'application/' + self.format
|
||||
headers['Authorization'] = 'Basic ' + self.authToken.strip()
|
||||
headers['Content-Type'] = 'application/' + self.format
|
||||
headers['Accept'] = 'application/' + self.format,
|
||||
headers['Authorization'] = 'Basic ' + self.authToken
|
||||
|
||||
if params:
|
||||
if encodeparams is True:
|
||||
body = self.encode(params) if params else None
|
||||
data = self.encode(params)
|
||||
else:
|
||||
body = params if params else None
|
||||
header, response = http.request(uri, method,
|
||||
body=body, headers=headers)
|
||||
status = int(header['status'])
|
||||
data = params
|
||||
else:
|
||||
data = None
|
||||
|
||||
response = requests.request(method,
|
||||
uri,
|
||||
verify=self.verify_cert,
|
||||
data=data,
|
||||
headers=headers)
|
||||
|
||||
status = response.status_code
|
||||
if 200 <= status < 300:
|
||||
return header, response
|
||||
return response.headers, response.text
|
||||
if status in self.errors:
|
||||
cls = self.errors[status]
|
||||
else:
|
||||
cls = exceptions.VcnsApiException
|
||||
raise cls(uri=uri, status=status, header=header, response=response)
|
||||
raise cls(uri=uri, status=status,
|
||||
header=response.headers, response=response.text)
|
||||
|
Loading…
x
Reference in New Issue
Block a user