Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
4 contributors

Users who have contributed to this file

@dbarrosop @pwoconnor @walidamer711 @ktbyers
62 lines (50 sloc) 1.63 KB
from typing import Any, Dict, Optional
from netmiko import ConnectHandler
from nornir.core.configuration import Config
from nornir.core.connections import ConnectionPlugin
napalm_to_netmiko_map = {
"ios": "cisco_ios",
"nxos": "cisco_nxos",
"nxos_ssh": "cisco_nxos",
"eos": "arista_eos",
"junos": "juniper_junos",
"iosxr": "cisco_xr",
}
class Netmiko(ConnectionPlugin):
"""
This plugin connects to the device using the Netmiko driver and sets the
relevant connection.
Inventory:
extras: maps to argument passed to ``ConnectHandler``.
"""
def open(
self,
hostname: Optional[str],
username: Optional[str],
password: Optional[str],
port: Optional[int],
platform: Optional[str],
extras: Optional[Dict[str, Any]] = None,
configuration: Optional[Config] = None,
) -> None:
parameters = {
"host": hostname,
"username": username,
"password": password,
"port": port,
}
try:
parameters[
"ssh_config_file"
] = configuration.ssh.config_file # type: ignore
except AttributeError:
pass
if platform is not None:
# Look platform up in corresponding map, if no entry return the host.nos unmodified
platform = napalm_to_netmiko_map.get(platform, platform)
parameters["device_type"] = platform
extras = extras or {}
parameters.update(extras)
self.connection = ConnectHandler(**parameters)
def close(self) -> None:
self.connection.disconnect()
You can’t perform that action at this time.