Skip to content

Commit 971856e

Browse files
authored
Merge branch 'Venafi:master' into retire-cert
2 parents edf0efd + 51abc35 commit 971856e

5 files changed

Lines changed: 27 additions & 8 deletions

File tree

docker-entrypoint.sh

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ bandit -r vcert/
88

99
# ID 40291 is pip, ignore so we can still test python 2.7
1010
#Ignoring false-positive issue with pytest. ref: https://github.com/pytest-dev/py/issues/287
11-
safety check -i 40291 -i 51457
11+
#Ignoring cryptography issue 59473 The cryptography package before 41.0.2 for Python mishandles SSH certificates that have critical options.
12+
# If we upgrade to cryptography 41.0.2 or higher we get `pyo3 modules may only be initialized once per interpreter process` and tests cannot run
13+
safety check -i 40291 -i 51457 -i 59473
1214

1315
pytest -v --junit-xml=junit.xml --junit-prefix=`python -V | tr ' ' '_'` --cov=vcert --cov=vcert.parser --cov=vcert.policy --cov-report term --cov-report xml

requirements-build.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
pytest==7.3.1
1+
pytest==7.4.3
22
pytest-cov==4.1.0
33
safety==2.3.5
44
bandit==1.7.5

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@ requests==2.31.0
22
python-dateutil==2.8.2
33
cryptography==40.0.2
44
six==1.16.0
5-
ruamel.yaml==0.17.31
5+
ruamel.yaml==0.18.5
66
pynacl==1.5.0

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
long_description = f.read()
1212

1313
setup(name='vcert',
14-
version='0.16.0',
14+
version='0.16.2',
1515
url="https://github.com/Venafi/vcert-python",
1616
packages=['vcert', 'vcert.parser', 'vcert.policy'],
1717
install_requires=['requests==2.31.0', 'python-dateutil==2.8.2', 'certvalidator<=0.11.1', 'six==1.16.0',

vcert/connection_cloud.py

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,9 @@ def request_cert(self, request, zone):
403403
status, data = self._post(URLS.CERTIFICATE_REQUESTS, data=request_data)
404404
if status == HTTPStatus.CREATED:
405405
request.id = data['certificateRequests'][0]['id']
406-
request.cert_guid = data['certificateRequests'][0]['certificateIds'][0]
406+
if 'certificateIds' in data['certificateRequests'][0] \
407+
and len(data['certificateRequests'][0]['certificateIds']) > 0:
408+
request.cert_guid = data['certificateRequests'][0]['certificateIds'][0]
407409
return True
408410
else:
409411
log.error(f"unexpected server response {status}: {data}")
@@ -413,11 +415,26 @@ def retrieve_cert(self, request):
413415
cert_status = self._get_cert_status(request)
414416
if cert_status.status == CertStatuses.PENDING or cert_status.status == CertStatuses.REQUESTED:
415417
log.info(f"Certificate status is {cert_status.status}")
416-
return None
417-
elif cert_status.status == CertStatuses.FAILED:
418+
# Time in seconds
419+
time_start = time.time()
420+
while True:
421+
log.debug("Waiting for certificate...")
422+
time.sleep(3)
423+
cert_status = self._get_cert_status(request)
424+
if cert_status.status == CertStatuses.ISSUED:
425+
log.info(f"Certificate status is {cert_status.status}")
426+
break
427+
elif (time.time() - time_start) < request.timeout:
428+
continue
429+
else:
430+
raise RetrieveCertificateTimeoutError(f"Operation timed out at {request.timeout} seconds "
431+
f"while waiting for certificate with id {request.id} to be ISSUED")
432+
433+
if cert_status.status == CertStatuses.FAILED:
418434
log.debug(f"Certificate status is {cert_status.status}. Returning data for debug")
419435
return "Certificate FAILED"
420-
elif cert_status.status == CertStatuses.ISSUED:
436+
437+
if cert_status.status == CertStatuses.ISSUED:
421438
request.cert_guid = cert_status.certificateIds[0]
422439
dek_info = self._get_dek_hash(request.cert_guid)
423440
if dek_info and dek_info.public_key:

0 commit comments

Comments
 (0)