Fix exceptions thrown from cryptography import (#16723)

A simple import of cryptography can throw several types of errors. For example,
if `setuptools` is less than cryptography's minimum requirement of 11.3, then
this import of cryptography will throw a VersionConflict here. An earlier case
threw a DistributionNotFound exception.

An optional dependency should not stop ansible. If the error is more than
an ImportError, log a warning, so that errors can be fixed in ansible or
elsewhere.
This commit is contained in:
Connor Osborn 2016-07-20 03:32:23 -07:00 committed by Toshio Kuratomi
parent ed959d72f1
commit 505a1de605

View file

@ -30,6 +30,12 @@ from hashlib import sha256
from binascii import hexlify
from binascii import unhexlify
try:
from __main__ import display
except ImportError:
from ansible.utils.display import Display
display = Display()
# Note: Only used for loading obsolete VaultAES files. All files are written
# using the newer VaultAES256 which does not require md5
from hashlib import md5
@ -71,10 +77,9 @@ try:
except ImportError:
pass
except Exception as e:
if e.__module__ == 'pkg_resources' and e.__class__.__name__ == 'DistributionNotFound':
pass
else:
raise
display.warning("Optional dependency 'cryptography' raised an exception, falling back to 'Crypto'")
import traceback
traceback.print_exc()
from ansible.compat.six import PY3
from ansible.utils.unicode import to_unicode, to_bytes