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:
@@ -14,14 +14,12 @@
|
|||||||
|
|
||||||
import base64
|
import base64
|
||||||
|
|
||||||
import eventlet
|
|
||||||
from oslo_serialization import jsonutils
|
from oslo_serialization import jsonutils
|
||||||
|
import requests
|
||||||
import six
|
import six
|
||||||
|
|
||||||
from vmware_nsx.plugins.nsx_v.vshield.common import exceptions
|
from vmware_nsx.plugins.nsx_v.vshield.common import exceptions
|
||||||
|
|
||||||
httplib2 = eventlet.import_patched('httplib2')
|
|
||||||
|
|
||||||
|
|
||||||
def _xmldump(obj):
|
def _xmldump(obj):
|
||||||
"""Sort of improved xml creation method.
|
"""Sort of improved xml creation method.
|
||||||
@@ -90,36 +88,45 @@ class VcnsApiHelper(object):
|
|||||||
self.encode = jsonutils.dumps
|
self.encode = jsonutils.dumps
|
||||||
else:
|
else:
|
||||||
self.encode = xmldumps
|
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,
|
def request(self, method, uri, params=None, headers=None,
|
||||||
encodeparams=True):
|
encodeparams=True):
|
||||||
uri = self.address + uri
|
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:
|
if headers is None:
|
||||||
headers = {}
|
headers = {}
|
||||||
|
|
||||||
|
headers['Accept'] = 'application/' + self.format
|
||||||
|
headers['Authorization'] = 'Basic ' + self.authToken.strip()
|
||||||
headers['Content-Type'] = 'application/' + self.format
|
headers['Content-Type'] = 'application/' + self.format
|
||||||
headers['Accept'] = 'application/' + self.format,
|
|
||||||
headers['Authorization'] = 'Basic ' + self.authToken
|
|
||||||
|
|
||||||
if encodeparams is True:
|
if params:
|
||||||
body = self.encode(params) if params else None
|
if encodeparams is True:
|
||||||
|
data = self.encode(params)
|
||||||
|
else:
|
||||||
|
data = params
|
||||||
else:
|
else:
|
||||||
body = params if params else None
|
data = None
|
||||||
header, response = http.request(uri, method,
|
|
||||||
body=body, headers=headers)
|
response = requests.request(method,
|
||||||
status = int(header['status'])
|
uri,
|
||||||
|
verify=self.verify_cert,
|
||||||
|
data=data,
|
||||||
|
headers=headers)
|
||||||
|
|
||||||
|
status = response.status_code
|
||||||
if 200 <= status < 300:
|
if 200 <= status < 300:
|
||||||
return header, response
|
return response.headers, response.text
|
||||||
if status in self.errors:
|
if status in self.errors:
|
||||||
cls = self.errors[status]
|
cls = self.errors[status]
|
||||||
else:
|
else:
|
||||||
cls = exceptions.VcnsApiException
|
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)
|
||||||
|
|||||||
Reference in New Issue
Block a user