diff --git a/lib/ansible/plugins/connection/napalm.py b/lib/ansible/plugins/connection/napalm.py index 16306c7b555..93d79ba81d1 100644 --- a/lib/ansible/plugins/connection/napalm.py +++ b/lib/ansible/plugins/connection/napalm.py @@ -138,10 +138,7 @@ try: from napalm.base import ModuleImportError HAS_NAPALM = True except ImportError: - raise AnsibleError( - 'Napalm is required to use the napalm connection type.\n' - 'Please run pip install napalm' - ) + HAS_NAPALM = False display = Display() @@ -158,6 +155,11 @@ class Connection(NetworkConnectionBase): self.napalm = None def _connect(self): + if not HAS_NAPALM: + raise AnsibleError( + 'Napalm is required to use the napalm connection type.\n' + 'Please run pip install napalm' + ) super(Connection, self)._connect() if not self.connected: diff --git a/lib/ansible/plugins/connection/netconf.py b/lib/ansible/plugins/connection/netconf.py index 9436a034c92..cd20e89aa41 100644 --- a/lib/ansible/plugins/connection/netconf.py +++ b/lib/ansible/plugins/connection/netconf.py @@ -188,8 +188,9 @@ try: from ncclient.operations import RPCError from ncclient.transport.errors import SSHUnknownHostError from ncclient.xml_ import to_ele, to_xml + HAS_NCCLIENT = True except ImportError: - raise AnsibleError("ncclient is not installed") + HAS_NCCLIENT = False display = Display() @@ -252,6 +253,12 @@ class Connection(NetworkConnectionBase): return super(Connection, self).exec_command(cmd, in_data, sudoable) def _connect(self): + if not HAS_NCCLIENT: + raise AnsibleError( + 'ncclient is required to use the netconf connection type.\n' + 'Please run pip install ncclient' + ) + display.display('ssh connection done, starting ncclient', log_only=True) allow_agent = True