Supported Devices

General support matrix

_

EOS

Junos

IOS-XR (NETCONF)

IOS-XR (XML-Agent)

NX-OS

NX-OS SSH

IOS

Driver Name

eos

junos

iosxr_netconf

iosxr

nxos

nxos_ssh

ios

Structured data

Yes

Yes

Yes

No

Yes

No

No

Minimum version

4.15.0F

12.1

7.0

5.1.0

6.1 [1]

6.3.2

12.4(20)T

Backend library

pyeapi

junos-eznc

ncclient

pyIOSXR

pynxos

netmiko

netmiko

Caveats

EOS

IOS-XR (NETCONF)

NXOS

NXOS

IOS

Warning

Please, make sure you understand the caveats for your particular platforms before using the library.

Configuration support matrix

_

EOS

Junos

IOS-XR (NETCONF)

IOS-XR (XML-Agent)

NX-OS

IOS

Config. replace

Yes

Yes

Yes

Yes

Yes

Yes

Config. merge

Yes

Yes

Yes

Yes

Yes

Yes

Commit Confirm

Yes

Yes

No

No

No

Yes

Compare config

Yes

Yes

Yes

Yes [2]

Yes [4]

Yes

Atomic Changes

Yes

Yes

Yes

Yes

Yes/No [5]

Yes/No [5]

Rollback

Yes [3]

Yes

Yes

Yes

Yes/No [5]

Yes

Warning

Before building a workflow to deploy configuration it is important you understand what the table above means; what are atomic changes and which devices support it, what does replacing or merging configuration mean, etc. The key to success is to test your workflow and to try to break things on a lab first.

Getters support matrix

Note

The following table is built automatically. Every time there is a release of a supported driver a built is triggered. The result of the tests are aggregated on the following table.

EOSIOSIOSXRIOSXR_NETCONFJUNOSNXOSNXOS_SSH
get_arp_table
get_bgp_config
get_bgp_neighbors
get_bgp_neighbors_detail
get_config
get_environment
get_facts
get_firewall_policies
get_interfaces
get_interfaces_counters
get_interfaces_ip
get_ipv6_neighbors_table
get_lldp_neighbors
get_lldp_neighbors_detail
get_mac_address_table
get_network_instances
get_ntp_peers
get_ntp_servers
get_ntp_stats
get_optics
get_probes_config
get_probes_results
get_route_to
get_snmp_information
get_users
get_vlans
is_alive
ping
traceroute
  • ✅ - supported
  • ❌ - not supported
  • ☠ - broken

Other methods

_

EOS

Junos

IOS-XR (NETCONF)

IOS-XR

NX-OS

IOS

load_template

ping

traceroute

Available configuration templates

  • set_hostname (JunOS, IOS-XR, IOS) - Configures the hostname of the device.

  • set_ntp_peers (JunOS, IOS-XR, EOS, NXOS, IOS) - Configures NTP peers of the device.

  • delete_ntp_peers (JunOS, IOS-XR, EOS, NXOS, IOS): Removes NTP peers from device’s configuration.

  • set_probes (JunOS, IOS-XR): Configures RPM/SLA probes.

  • schedule_probes (IOS-XR): On Cisco devices, after defining the SLA probes, it is mandatory to schedule them. Defined also for JunOS as empty template, for consistency reasons.

  • delete_probes (JunOS, IOS-XR): Removes RPM/SLA probes.

Caveats

Optional arguments

NAPALM supports passing certain optional arguments to some drivers. To do that you have to pass a dictionary via the optional_args parameter when creating the object:

>>> from napalm import get_network_driver
>>> driver = get_network_driver('eos')
>>> optional_args = {'my_optional_arg1': 'my_value1', 'my_optional_arg2': 'my_value2'}
>>> device = driver('192.168.76.10', 'dbarroso', 'this_is_not_a_secure_password', optional_args=optional_args)
>>> device.open()

List of supported optional arguments

  • allow_agent (ios, iosxr, nxos_ssh) - Paramiko argument, enable connecting to the SSH agent (default: False).

  • alt_host_keys (ios, iosxr, nxos_ssh) - If True, host keys will be loaded from the file specified in alt_key_file.

  • alt_key_file (ios, iosxr, nxos_ssh) - SSH host key file to use (if alt_host_keys is True).

  • auto_probe (junos) - A timeout in seconds, for which to probe the device. Probing determines if the device accepts remote connections. If auto_probe is set to 0, no probing will be done. (default: 0).

  • auto_rollback_on_error (ios) - Disable automatic rollback (certain versions of IOS support configure replace, but not rollback on error) (default: True).

  • config_lock (iosxr_netconf, iosxr, junos) - Lock the config during open() (default: False).

  • lock_disable (junos) - Disable all configuration locking for management by an external system (default: False).

  • config_private (junos) - Configure private, no DB locking (default: False).

  • canonical_int (ios) - Convert operational interface’s returned name to canonical name (fully expanded name) (default: False).

  • dest_file_system (ios) - Destination file system for SCP transfers (default: flash:).

  • enable_password (eos) - Password required to enter privileged exec (enable) (default: '').

  • force_no_enable (ios, nxos_ssh) - Do not automatically enter enable-mode on connect (default: False).

  • global_delay_factor (ios, nxos_ssh) - Allow for additional delay in command execution (default: 1).

  • ignore_warning (junos) - Allows to set ignore_warning when loading configuration to avoid exceptions via junos-pyez. (default: False).

  • keepalive (iosxr, junos) - SSH keepalive interval, in seconds (default: 30 seconds).

  • key_file (ios, iosxr_netconf, iosxr, junos, nxos_ssh) - Path to a private key file. (default: False).

  • port (eos, ios, iosxr_netconf, iosxr, junos, nxos, nxos_ssh) - Allows you to specify a port other than the default.

  • secret (ios, nxos_ssh) - Password required to enter privileged exec (enable) (default: '').

  • ssh_config_file (ios, iosxr, junos, nxos_ssh) - File name of OpenSSH configuration file.

  • ssh_strict (ios, iosxr, nxos_ssh) - Automatically reject unknown SSH host keys (default: False, which means unknown SSH host keys will be accepted).

  • ssl_verify (nxos) - Requests argument, enable the SSL certificates verification. See requests ssl-cert-verification for valid values (default: None equivalent to False).

  • transport (eos, ios, nxos) - Protocol to connect with (see The transport argument for more information).

  • use_keys (ios, iosxr, nxos_ssh) - Paramiko argument, enable searching for discoverable private key files in ~/.ssh/ (default: False).

  • eos_autoComplete (eos) - Allows to set autoComplete when running commands. (default: None equivalent to False)

  • config_encoding (iosxr_netconf) - Set encoding to either "xml" or "cli" for configuration load methods. (default: "cli")

  • force_cfg_session_invalid (eos) - Force the config_session to be cleared in case of issues, like discard_config failure. (default: False)

  • huge_tree (junos) - Pass on this flag on Juniper devices when returning a large XML document. (default: False)

The transport argument

Certain drivers support providing an alternate transport in the optional_args, overriding the default protocol to connect with. Allowed transports are therefore device/library dependant:

_

EOS

NXOS

IOS

Default

https

https

ssh

Supported

http, https, ssh

http, https

telnet, ssh