Releases: napalm-automation/napalm
5.1.0
IMPORTANT
Starting with this release, NAPALM offers support for Python 3.9+ only.
Python 3.8 support has been dropped (since it is now end-of-life, see https://discuss.python.org/t/python-3-8-is-now-officially-eol/66983), while adding support for Python 3.13.
What's Changed
- fix: documentation build by @M0NsTeRRR in #2066
- fix: documentation build (#2066) by @mirceaulinic in #2067
- Fixes #2086 stripping whitespace by @Smertan in #2087
- Bump types-setuptools from 69.2.0.20240317 to 69.5.0.20240519 by @dependabot[bot] in #2090
- Bump pytest from 7.3.1 to 8.2.1 by @dependabot[bot] in #2089
- Bump sphinx from 7.2.6 to 7.3.7 by @dependabot[bot] in #2072
- Bump black from 24.3.0 to 24.4.2 by @dependabot[bot] in #2079
- Bump mypy from 1.9.0 to 1.10.0 by @dependabot[bot] in #2076
- Closes #2028: Fix typo by @vishnubraj in #2088
- Bump jinja2 from 3.1.3 to 3.1.4 by @dependabot[bot] in #2082
- Bump types-six from 1.16.21.20240311 to 1.16.21.20240513 by @dependabot[bot] in #2083
- Bump coveralls from 3.3.1 to 4.0.1 by @dependabot[bot] in #2085
- Bump ansible from 9.4.0 to 9.6.0 by @dependabot[bot] in #2091
- Bump types-requests from 2.31.0.20240406 to 2.32.0.20240521 by @dependabot[bot] in #2092
- Bump types-setuptools from 69.5.0.20240519 to 69.5.0.20240522 by @dependabot[bot] in #2093
- Rework
eos.get_bgp_neighbor
by @bewing in #2116 - added pyenv
.python-version
file to the gitignore by @hellt in #2145 - Small fixes for nxos_ssh by @n-rodriguez in #2148
- Improve nxos_ssh version handling by @bewing in #2152
- Bump ansible version in docs requirements by @bewing in #2158
- Draft: Update eos CLI vrf command by @bewing in #2157
- use plain dict in IOSDriver.get_bgp_neighbors_detail() by @paketb0te in #2163
- Support NTP server details in base, EOS by @bewing in #2160
- Bump urllib3 from 2.2.1 to 2.2.2 by @dependabot[bot] in #2102
- Bump types-requests from 2.32.0.20240521 to 2.32.0.20240712 by @dependabot[bot] in #2114
- Bump pytest from 8.2.1 to 8.3.2 by @dependabot[bot] in #2132
- Bump mypy from 1.10.0 to 1.11.1 by @dependabot[bot] in #2136
- Bump types-pyyaml from 6.0.12.20240311 to 6.0.12.20240808 by @dependabot[bot] in #2140
- Bump types-requests from 2.32.0.20240712 to 2.32.0.20241016 by @dependabot[bot] in #2168
- Bump pytest from 8.3.2 to 8.3.4 by @dependabot[bot] in #2169
- Bump urllib3 from 2.2.2 to 2.3.0 by @dependabot[bot] in #2171
- Bump ansible from 9.6.1 to 11.2.0 by @dependabot[bot] in #2174
- Bump markupsafe from 2.1.5 to 3.0.2 by @dependabot[bot] in #2180
- Bump ansible from 11.2.0 to 11.3.0 by @dependabot[bot] in #2185
- Bump ttp-templates from 0.3.6 to 0.3.7 by @dependabot[bot] in #2181
- Bump jinja2 from 3.1.4 to 3.1.5 by @dependabot[bot] in #2184
- Bump types-pyyaml from 6.0.12.20240808 to 6.0.12.20241230 by @dependabot[bot] in #2182
- Bump types-six from 1.16.21.20240513 to 1.17.0.20241205 by @dependabot[bot] in #2187
- Bump pytest from 8.3.4 to 8.3.5 by @dependabot[bot] in #2190
- Bump mock from 5.1.0 to 5.2.0 by @dependabot[bot] in #2191
- [EOS] Fix confirm_commit for ssh transport by @carljungg in #2179
- Discard unexpected NTP strings by @bewing in #2198
- Remove external mock dependency by @s-t-e-v-e-n-k in #2155
- Bump jinja2 from 3.1.5 to 3.1.6 by @dependabot[bot] in #2196
- Add support for PY3.13; use vendored version of telnetlib by @ktbyers in #2137
- Bump pytest-cov from 5.0.0 to 6.0.0 by @dependabot[bot] in #2173
- Bump mypy from 1.11.1 to 1.15.0 by @dependabot[bot] in #2172
- Bump sphinx from 7.3.7 to 8.2.3 by @dependabot[bot] in #2189
- Bump types-six from 1.17.0.20241205 to 1.17.0.20250304 by @dependabot[bot] in #2193
- Bump types-requests from 2.32.0.20241016 to 2.32.0.20250306 by @dependabot[bot] in #2195
- Rename ssh_config_file to ssh_config for iosxr_netconf driver by @ubaumann in #2218
- [eos] fix banner when transport is ssh by @derekdainys in #2135
- Explicitly close IOSXR connection by @justinbrink in #2214
- Remove calls to deprecated
pkg_resources
by @bewing in #2241 - pytest wrapper should return None, not result by @bewing in #2120
- Remove transitive dependency scp from requirements.txt by @karyotakisg in #2243
- Fix pyez dependency issue by @ktbyers in #2247
- Dependabot updates by @ktbyers in #2248
- More dependabot updates by @ktbyers in #2249
- Prep for napalm 5.1.0 release by @ktbyers in #2251
- Release 5.1.0 (attempt 2) by @ktbyers in #2254
New Contributors
- @Smertan made their first contribution in #2087
- @vishnubraj made their first contribution in #2088
- @n-rodriguez made their first contribution in #2148
- @carljungg made their first contribution in #2179
- @derekdainys made their first contribution in #2135
- @justinbrink made their first contribution in #2214
- @karyotakisg made their first contribution in #2243
Full Changelog: 5.0.0...5.1.0
5.0.0
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.
Breaking changes for Arista EOS
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.
New features
- Add
format
optional variable to core drivers to support get_config() options by @s1mplesimon in #1972 - [Junos] Add
huge_tree
as an optional_arg in junos to fix xml huge tree node #2012 by @architkhatri98 in #2013 - [Validate] Add tolerance percentage by @sjhloco in #1813
Improvements and bug fixes
- [NX-OS] Update nxos.py to expose file transfer errors by @NoahFeinberg in #1974
- [Validate] Use isinstance(list) instead of types comparison by @jsenecal in #1985
- [Junos] Do not try to parse a "none" value and convert it to "" for get_ipv6_neighbors_table by @jsenecal in #1983
- [JUNOS] Fix call to lxml.etree.ElementBase.getparent erroneously using get_parent by @chrismooredev in #1796
- [NX-OS SSH, IOS] IPv6 Regex update by @ubaumann in #2016
- [IOS] Make get_vlans name whitespace aware , see #1789 by @network-shark in #2010
- [NX-OS] Fix get_bgp_neighbor when neighbor is admin shut by @tcaiazza in #1980
- [JUNOS] get_bgp_config() - ValueError: Can't convert with callable None (Fix #1753) by @jtishey in #1754
- [IOS] get_bgp_neighbors same IP different VRF - Fix #1497 #1231 by @jtishey in #1751
- [NX-OS] Handle non standard output for PSU's in get_environment by @tcaiazza in #1809
- [IOS-XR] Use
LastStateTransitionTime
to populatelast_flapped
forget_interfaces()
in IOS-XR by @jlixfeld in #1966 - [Junos] Fix
Can't convert with callable None
by @teresalves in #1931 - [NX-OS] Closes #2005: Change rollback behavior by @decoupca in #2006
- Optimize Dockerfile by @duhow in #1942
- Add .dockerignore file for Docker build by @mirceaulinic in #2061
New Contributors
- @NoahFeinberg made their first contribution in #1974
- @jsenecal made their first contribution in #1985
- @chrismooredev made their first contribution in #1796
- @s-t-e-v-e-n-k made their first contribution in #2002
- @sjhloco made their first contribution in #1813
- @jlixfeld made their first contribution in #1966
- @teresalves made their first contribution in #1931
- @decoupca made their first contribution in #2006
- @duhow made their first contribution in #1942
- @architkhatri98 made their first contribution in #2013
- @s1mplesimon made their first contribution in #1972
Full Changelog: 4.1.0...5.0.0
4.1.0
Improvements
- Improve get_bgp_config behavior across platforms.
- EOS and Salt add optional_arg force_cfg_session_invalid that allows the config session to be invalidated on failure.
- Improve EOS VRF parsing
Bug and doc fixes
- Minor doc fixes
- CI-CD fixes
- Properly close Netmiko SSH connections for EOS-SSH
- Improve EOS get_bgp_neighbors()
- Increase default commit_config timeout on IOS/IOS-XE
- NX-OS pull full configuration for merge operation diff
- Improve NX-OS SSH Netmiko behavior (for Netmiko V4)
4.0.0
Type Hinting
After months of work, @Kircheneer added type hinting support in #1412 and #1476.
New features
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
Improvements
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
Bug fixes
[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
3.4.1
Pinning to junos-eznc>=2.6.3.
Release 3.4.0
Junos
- Junos discard_config on error fix #1448
- Junos LLDP improvements #1470
- Junos pass self.ignore_warning to diff call in compare_config() #1480
NX-OS
- Improve NX-API error messages #1461
- NX-OS disable SSL InsecureRequestWarning if ssl_verify is False #1510
- NX-OS unknown interface MTU and unknown speed as -1 #1511
- NX-OS improve JSON handling in newer NX-OS versions #1490
IOS
- IOS allow BGP configuration with no explicit AFI #1477
- Escape vlan_name on IOS before building regex string #1546
- Handle get_network_instances for IOS devices that do not support show vrf detail #1547
EOS
- EOS fix get_bgp_config mismatch between neighbors and peer-group #1503
IOS-XR
- Pass IOS-XR NETCONF optional_args to ncclient connect #1535
General
- Bandwidth parameter returned as a float
- Pin Netmiko to require Netmiko version 3.3.X or 3.4.X
Release 3.3.1
[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
3.3.0
NETCONF driver for IOS-XR
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!
Commit Confirmed
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.
New Features
[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
Bug Fixes
[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
3.2.0
New features
[EOS] Add get_vlans
getter #1279
[NX-OS] Feature/nxos ssh get_interfaces_counters
#1287
Bug fixes and behaviour changes
[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
3.1.0
Core changes
- Fix:
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 theenable
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. - lxml text retrieval (find_txt) shouldn't fail if no text element available #1242
Driver changes
- [NX-OS] Initial version for nxos_ssh get_optics #1215
- [NX-OS] Fixed get_bgp_neighbors and asdot notation on NX-OS #1230
- [Junos] Fix "KeyError in get_environment() on Juniper MX10k3 with Junos 19.2R1.8 #1247" by making PEM naming consistent #1248
- [IOS] Fix get_optics metric #1220
- [IOS] Allow username detection on older Cisco ios versions #1121