Ignore AttributeError when trying to import p paramiko (#51243)
* Ignore AttributeError when trying to import p paramiko * preserve import error
This commit is contained in:
parent
ce8db479f0
commit
6d13acf1ff
2 changed files with 9 additions and 6 deletions
|
@ -206,8 +206,10 @@ try:
|
|||
from ncclient.transport.errors import SSHUnknownHostError
|
||||
from ncclient.xml_ import to_ele, to_xml
|
||||
HAS_NCCLIENT = True
|
||||
except ImportError:
|
||||
NCCLIENT_IMP_ERR = None
|
||||
except (ImportError, AttributeError) as err: # paramiko and gssapi are incompatible and raise AttributeError not ImportError
|
||||
HAS_NCCLIENT = False
|
||||
NCCLIENT_IMP_ERR = err
|
||||
|
||||
logging.getLogger('ncclient').setLevel(logging.INFO)
|
||||
|
||||
|
@ -270,8 +272,8 @@ class Connection(NetworkConnectionBase):
|
|||
def _connect(self):
|
||||
if not HAS_NCCLIENT:
|
||||
raise AnsibleError(
|
||||
'ncclient is required to use the netconf connection type.\n'
|
||||
'Please run pip install ncclient'
|
||||
'ncclient is required to use the netconf connection type: %s.\n'
|
||||
'Please run pip install ncclient' % to_native(NCCLIENT_IMP_ERR)
|
||||
)
|
||||
|
||||
self.queue_message('log', 'ssh connection done, starting ncclient')
|
||||
|
|
|
@ -168,13 +168,14 @@ SETTINGS_REGEX = re.compile(r'(\w+)(?:\s*=\s*|\s+)(.+)')
|
|||
|
||||
# prevent paramiko warning noise -- see http://stackoverflow.com/questions/3920502/
|
||||
HAVE_PARAMIKO = False
|
||||
PARAMIKO_IMP_ERR = None
|
||||
with warnings.catch_warnings():
|
||||
warnings.simplefilter("ignore")
|
||||
try:
|
||||
import paramiko
|
||||
HAVE_PARAMIKO = True
|
||||
except ImportError:
|
||||
pass
|
||||
except (ImportError, AttributeError) as err: # paramiko and gssapi are incompatible and raise AttributeError not ImportError
|
||||
PARAMIKO_IMP_ERR = err
|
||||
|
||||
|
||||
class MyAddPolicy(object):
|
||||
|
@ -305,7 +306,7 @@ class Connection(ConnectionBase):
|
|||
''' activates the connection object '''
|
||||
|
||||
if not HAVE_PARAMIKO:
|
||||
raise AnsibleError("paramiko is not installed")
|
||||
raise AnsibleError("paramiko is not installed: %s" % to_native(PARAMIKO_IMP_ERR))
|
||||
|
||||
port = self._play_context.port or 22
|
||||
display.vvv("ESTABLISH PARAMIKO SSH CONNECTION FOR USER: %s on PORT %s TO %s" % (self._play_context.remote_user, port, self._play_context.remote_addr),
|
||||
|
|
Loading…
Reference in a new issue