Network Automation and Programmability Abstraction Layer with Multivendor support
IMPORTANT
Starting with this release, NAPALM offers support for Python 3.8+ only.
Python 3.7 support has been dropped (since it is now end-of-life, see https://www.python.org/downloads/release/python-370/), while adding support for Python 3.12.
Beginning with this release, NAPALM only supports Arista EOS 4.23 and later. On this occasion, the eos_fn0039_config
optional argument has also been removed. This optional argument was used to transform old style configuration to the new style, available beginning with EOS release 4.23.0, as per FN 0039.
format
optional variable to core drivers to support get_config() options by @s1mplesimon in https://github.com/napalm-automation/napalm/pull/1972
huge_tree
as an optional_arg in junos to fix xml huge tree node #2012 by @architkhatri98 in https://github.com/napalm-automation/napalm/pull/2013
LastStateTransitionTime
to populate last_flapped
for get_interfaces()
in IOS-XR by @jlixfeld in https://github.com/napalm-automation/napalm/pull/1966
Can't convert with callable None
by @teresalves in https://github.com/napalm-automation/napalm/pull/1931
Full Changelog: https://github.com/napalm-automation/napalm/compare/4.1.0...5.0.0
After months of work, @Kircheneer added type hinting support in #1412 and #1476.
Add Commit-Confirm support for Cisco IOS #1691
New encoding
argument added to the cli
method to return the output of operational / show commands in the desired format. Currently supported on Junos and EOS. #1637 & #1663
Added ttp_parse
helper function to codebase #1563
Replaced ciscoconfparse
with netutils
#1565
New SSH transport available for Arista EOS - thanks @thomasbridge74 #1502
Adds mac
and ip
checks for getters #1560
The uptime
field in the get_facts
return is now float
type: #1651
[NX-OS] Improve compare_config for NXOS partial merging #1567
[EOS] support arbitrary transport class #1643 & #1647
[EOS] move config lock check to _load_config #1642
[EOS] Handle modern memory output from Arista EOS 4.27+ #1673
[IOS-XR] Improving get_facts behavior to handle XML changes in newer OS versions #1667
[Junos] make sure we don't duplicate LLDP neighbor entries #1640
[Junos] find for system uptime
element #1675
[IOS-XR] get_lldp_neighbor_details
does not support 'N/A' capabilities #1681
[IOS-XR] get_lldp_neighbor_details
add alternative lldp local interface key #1682
[NX-OS] get_interfaces
fix description on SVI interfaces #1571
[IOS] get_vlans
does not return all interfaces if they wrap around in the config #1569
[Junos] Fix #1549: Check peer admin status from the BGP options #1566
[EOS] get_bgp_neighbors_detail
only returns back a single peer for a certain EOS platform #1573
Pinning to junos-eznc>=2.6.3.
[IOS-XR] Fix #1330 (get_bgp_neighbors_detail
: flap_count return a negative value) #1449
[IOS] Fix #1387 (get_network_instances
fails KeyError
when deleting item from interfaces) #1447
[Junos] Fix bgp flap_count
issue for iosxr_netconf #1457
[Junos] Change the function cli
when result is xml object #1456
[EOS, IOS, Junos, NXOS] Add source_interface
argument to ping
#1455
Over the last 18 months Cisco has been working on implementing a NETCONF-based driver for the IOS-XR platforms. The new driver is now available in the core NAPALM library, besides the existing driver (which uses the proprietary XML API). The minimum IOS-XR version required is 7.0. Check out https://napalm.readthedocs.io/en/latest/support/iosxr_netconf.html for more information and caveats.
Many thanks to the Cisco team, in particular to @neelimapp and @111pontes for their work, and @ktbyers for coordinating these efforts.
As this is a brand new driver, you may encounter various issues, and we will welcome your reports and pull requests to fix those!
Beginning with this release, NAPALM natively supports commit confirmed operations. See https://napalm.readthedocs.io/en/latest/tutorials/changing_the_config.html#committing-the-configuration-with-a-required-confirmation for more usage details.
[Junos] Add get_vlans for Junos #1398 [Junos] Added Support for Logical Interfaces Counters #1382 [Junos] Use aply-groups inheritance on get-configuration RPC calls #1363 [Core] Adding cannonical mapping for 25GE, 50GE, 200GE and 400GE interfaces #1329
[EOS] Fix for BGP description not found by get_bgp_neighbors in some EOS versions #1356 [EOS] Set next hop to something valid for vxlan routes #1347 [EOS] Fix naplam.get_route_to() not working on EOS:failed to detect a valid IP address from u'' #1346 [IOS-XR] XR 7+: get_lldp_neighbors_detail query only the NodeTable #1404 [IOS-XR] Resolve #1181 (IOS-XR get_environment() throws an error in 6.3.2 on NCS5501) and reduce the get_facts heavy workload #1400 [IOS-XR] Look up the KeepAliveTime and HoldTime keys in the VRF tree #1290 [Junos] Fix sanitized bug for Junos #1414 [Junos] Multiple next-hop self config stanzas generate a list #1362 [Junos] Add wildcard for set matches on junos #1318 [Junos] Fix mapping for Juniper devices with Netmiko #1288 [IOS] Handle control plane interface #1411 [IOS] Set minimum ttl to zero to fix issue #1320 #1321 [NX-OS] Cast uptime values to int before processing #1343
[EOS] Add get_vlans
getter #1279
[NX-OS] Feature/nxos ssh get_interfaces_counters
#1287
[IOS] get_network_instances
fixes, see #1095 for more details.
[IOS-XR] get_route_to
fix pyIOSXR.exceptions.XMLCLIError for some versions #1267
[EOS] Fix get_arp_table
for static ARP records #1272
[EOS] Add EOS-4.23+ translation for show environment temperature #1278
[IOS] Update get_probe
code to make it work it IOS XE 16.12.x #1285
force_no_enable
enabled on ios and nx only #1240
If you maintain a thrid-party driver using Netmiko for the underlying layer, but that doesn't make use of the enable
features typically found on IOS-like devices, it is recommended to pin to this NAPALM version, so it won't break compatibility. See #1241 for more information.Release 3.0.0 introduced support for the Arista FN 0039 command changes (#1093), by replacing the old style commands with the new style commands. This also affected the way NAPALM loads the configuration on the device (i.e., it would transform your configuration before loading). In order to prevent this, and avoid unexpected results, we introduced a new optional argument eos_fn0039_config
, defaulting to False
, which you can use to select whether you want NAPALM to convert the configuration command before loading. By default, NAPALM won't transform your configuration, but setting eos_fn0039_config
to True
it would help you transition to newer EOS versions.