Support multiple certificates
Add new api number() to ClientCertProvider. The old way to invoke ClientCertProvider api still works Change-Id: I2bdef4ab4a2c6f24a28a4f41d7f58657c3e31bee
This commit is contained in:
parent
778dd72e86
commit
6bc6b15b98
|
@ -357,5 +357,8 @@ class ClientCertProvider(object):
|
|||
def __exit__(self, type, value, traceback):
|
||||
pass
|
||||
|
||||
def filename(self):
|
||||
return self._filename
|
||||
def filename(self, index=0):
|
||||
return self._filename[index]
|
||||
|
||||
def number(self):
|
||||
return len(self._filename)
|
||||
|
|
|
@ -151,15 +151,18 @@ class TimeoutSession(requests.Session):
|
|||
# Optimal solution for this would be to expose certificate as variable
|
||||
# and not as a file to the SSL library
|
||||
with get_cert_provider() as provider:
|
||||
self.cert = provider.filename()
|
||||
try:
|
||||
ret = request_with_retry_on_ssl_error(*args, **kwargs)
|
||||
except Exception as e:
|
||||
for index in range(0, provider.number()):
|
||||
self.cert = provider.filename(index)
|
||||
try:
|
||||
ret = request_with_retry_on_ssl_error(*args, **kwargs)
|
||||
except Exception as e:
|
||||
self.cert = None
|
||||
LOG.debug("request with cert error %s, index %s",
|
||||
e, str(index))
|
||||
if index == provider.number() - 1:
|
||||
raise e
|
||||
self.cert = None
|
||||
raise e
|
||||
|
||||
self.cert = None
|
||||
|
||||
self.cert = None
|
||||
return ret
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue