From b12e90311f0e28850f28ead6be17d741cd2f23ad Mon Sep 17 00:00:00 2001 From: Ganesh Nalawade Date: Thu, 1 Mar 2018 22:23:14 +0530 Subject: [PATCH] map network_os to ncclient device_params (#36819) * map network_os to ncclient device_params Fixes #36786 * update device map * Add default netconf fallback plugin --- lib/ansible/plugins/connection/netconf.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/ansible/plugins/connection/netconf.py b/lib/ansible/plugins/connection/netconf.py index 8601875702..46b120c434 100644 --- a/lib/ansible/plugins/connection/netconf.py +++ b/lib/ansible/plugins/connection/netconf.py @@ -157,6 +157,10 @@ except ImportError: logging.getLogger('ncclient').setLevel(logging.INFO) +network_os_device_param_map = { + "nxos": "nexus" +} + class Connection(ConnectionBase): """NetConf connections""" @@ -238,7 +242,7 @@ class Connection(ConnectionBase): if network_os: display.display('discovered network_os %s' % network_os, log_only=True) - device_params = {'name': (network_os or 'default')} + device_params = {'name': (network_os_device_param_map.get(network_os) or network_os or 'default')} ssh_config = os.getenv('ANSIBLE_NETCONF_SSH_CONFIG', False) if ssh_config in BOOLEANS_TRUE: @@ -276,7 +280,8 @@ class Connection(ConnectionBase): if self._netconf: display.display('loaded netconf plugin for network_os %s' % network_os, log_only=True) else: - display.display('unable to load netconf for network_os %s' % network_os) + self._netconf = netconf_loader.get("default", self) + display.display('unable to load netconf plugin for network_os %s, falling back to default plugin' % network_os) return 0, to_bytes(self._manager.session_id, errors='surrogate_or_strict'), b''