Releases: networktocode/pyntc
Releases · networktocode/pyntc
Release list
v3.2.0 - 2026-07-14
Release Overview
- Added support for ISSU and NSSU non-disruptive OS upgrades on Juniper devices, along with several fixes to Juniper
install_osandremote_file_copyhandling.
Added
- #400 - Added support for ISSU and NSSU non-disruptive OS upgrades on Juniper devices.
- #400 - Added a
snapshotoption toJunosDevice.install_osthat takes a post-upgraderequest system snapshot slice alternateand waits for completion; disabled by default because Junos does not require a snapshot to complete an upgrade.
Fixed
- #400 - Fixed
JunosDevice._get_free_spaceraisingFileSystemNotFoundErroron virtual-chassis, multi-RE, and cluster devices; the smallest member's free space is now returned. - #400 - Fixed
JunosDevice.remote_file_copydiscarding the device's actual error message on a failed copy; the underlying error is now included in the raisedFileTransferError. - #400 - Fixed
JunosDevice.remote_file_copyfailing with "filesystem is full" on small-flash platforms (e.g., EX switches); remote images are now downloaded directly to the destination path instead of being staged in the user's home directory on/var. - #400 - Fixed
JunosDevicepost-install version verification failing on platforms whoseshow versionoutput has no "JUNOS Base OS Software Suite" line (e.g., EX switches on 15.1). - #400 - Fixed
JunosDevice.install_osissuing a disruptive full-chassis reboot after an NSSU/ISSU upgrade, which already reboots each member in service during the install.
Full Changelog: v3.1.0...v3.2.0
v3.1.0 - 2026-07-06
v3.1.0 (2026-07-06)
Added
- #398 - Added native Cisco IOS-XR (eXR / 64-bit) support via the
cisco_iosxr_sshdriver (IOSXRDevice), includingremote_file_copy(FTP/TFTP/SCP/HTTP/HTTPS) and OS upgrades from a single golden ISO (built with Cisco's gisobuild tool) through the asynchronousinstall add/install activate/install commitworkflow.
Fixed
- #402 - Fixed nxos install_os failing due to using the default timeout on the long running
install allcommand.
Contributors
Full Changelog: v3.0.2...v3.1.0
v3.0.2 - 2026-05-28
Added
- #395 - Added an
install_modeproperty toBaseDevice(abstract) andIOSDevice; the IOS implementation returnsTruewhen the device boots frompackages.conf.
Deprecated
- #395 - Deprecated the
install_modeargument toIOSDevice.install_os; install mode is now derived from the device'sboot_optionsvia the newinstall_modeproperty and will be removed in a future release.
Fixed
- #394 - Fixed Junos reboots not being detected when waiting for the device to reload.
- #394 - Increased the default Junos reboot wait timeout from 1 hour to 2 hours.
New Contributors
- @Defiantearth made their first contribution in #394
Full Changelog: v3.0.1...v3.0.2
v3.0.1 - 2026-05-26
v3.0.1 (2026-05-26)
Added
- #387 - Added an
NXOSDevice.show_netmikomethod and deprecated the existingNXOSDevice.showmethod that uses pynxos. Developers should transition to theshow_netmikomethod to prepare for the eventual removal of pynxos.
Changed
- #387 - Changed the following NXOSDevice methods/properties to use Netmiko instead of pynxos:
_image_booted,_wait_for_device_reboot,uptime,hostname,os_version,_get_file_system,_get_free_space,remote_file_copy,redundancy_state,reboot,set_boot_options, andstartup_config.
Fixed
- #387 - Fixed a bug in nxos where nx-api commands were mixed with ssh commands.
- #387 - Fixed a bug in nxos
_build_url_copy_command_simplereturning the wrong type of data. - #387 - Fixed a bug in nxos failing to answer a prompt when using remote_file_copy.
- #387 - Fixed NXOSDevice.os_version to use netmiko SSH instead of NX-API.
- #387 - Fixed NXOSDevice.get_remote_checksum to use the correct
show filecommand form and parse the digest out of the device output. - #387 - Fixed NXOSDevice.save to use netmiko SSH instead of NX-API.
- #387 - Fixed NXOSDevice.show to use netmiko SSH instead of NX-API. Structured (non-
raw_text) results are now TextFSM-parsed lists of dicts. - #387 - Fixed NXOSDevice._wait_for_device_reboot to drop the pre-reboot SSH session and reconnect each poll so it reliably detects when the device comes back from a reload.
Full Changelog: v3.0.0...v3.0.1
v3.0.0 - 2026-05-06
v3.0.0 (2026-05-06)
Breaking Changes
- #383 - The pyntc rotating file handler is now opt-in via the
PYNTC_LOG_FILEenvironment variable. When unset, no log file is created. When set, its value is used as the log file path, and the handler is registered only once per logger to avoid duplicate entries on repeatedget_logcalls.
Full Changelog: v2.4.1...v3.0.0
v2.4.1 - 2026-05-01
v2.4.1 (2026-05-01)
Fixed
- #380 - Fixed nxos install_os waiting for the device to reboot even if a reboot was not requested.
Contributors
Full Changelog: v2.4.0...v2.4.1
v2.4.0 - 2026-04-30
Release Overview
- Add ability to check for sufficient free space before copying files to devices, with support for EOS, IOS, ASA, and JunOS platforms.
- Added reboot flag to Device.install_os for supported platforms.
v2.4.0 (2026-04-30)
Added
- #370 - Added a pre-transfer free-space check to EOS
file_copyandremote_file_copythat raisesNotEnoughFreeSpaceErrorwhen the target filesystem lacks room for the image. - #370 - Added
file_size_unit(bytes,megabytes, orgigabytes; defaultbytes) and a computedfile_size_bytestoFileCopyModelsoremote_file_copycan verify free space against a caller-supplied size; whenfile_sizeis omitted the pre-transfer check is skipped. - #371 - Added free space validation for file copy operations on IOS devices.
- #372 - Added a pre-transfer free-space check to Cisco ASA
file_copyandremote_file_copythat raisesNotEnoughFreeSpaceErrorwhen the target filesystem lacks room for the image. - #373 - Added a pre-transfer free-space check to Juniper JunOS
file_copyandremote_file_copythat raisesNotEnoughFreeSpaceErrorwhen the target filesystem lacks room for the image. - #375 - Added free space validation for file copy operations on NXOS devices.
- #376 - Added reboot flag to Device.install_os for supported platforms.
- #376 - Vendored pynxos library and added reboot flag to Device.set_boot_options.
Changed
- #356 - Bump dependencies
Contributors
New Contributors
Full Changelog: v2.3.0...v2.4.0
v2.3.0 - 2026-04-14
Release Overview
- Added the ability to for remote file copy on Cisco NXOS, Cisco ASA, and Arista EOS operating systems.
v2.3.0 (2026-04-14)
Added
- #365 - Added the remote file copy feature to Arista EOS devices.
- #365 - Added unittests for remote file copy on Arista EOS devices.
- #366 - Added
remote_file_copy,check_file_exists,get_remote_checksum, andverify_filesupport forASADevice(FTP, TFTP, SCP, HTTP, HTTPS). - #367 - Added remote file copy feature to Cisco NXOS devices.
- #367 - Added unittests for remote file copy for Cisco NXOS devices.
Changed
- #368 - Improved EOS remote file copy to validate scheme and query strings before connecting, use
clean_urlto prevent credential leakage, and simplify credential routing. - #368 - Changed copy command builders to include the source file path in the URL and use
flash:as the destination, matching EOS CLI conventions. - #368 - Fixed
_uptime_to_stringto use integer division, preventingValueErroron format specifiers. - #368 - Fixed
check_file_existsandget_remote_checksumto open the SSH connection before use, preventingAttributeErrorwhen called standalone. - #368 - Fixed password-prompt handling in
remote_file_copyto wait for the transfer to complete before proceeding to verification. - #368 - Simplified checksum parsing in
get_remote_checksumto use string splitting instead of regex. - #368 - Changed
verify_fileto return early when file does not exist and use case-insensitive checksum comparison. - #368 - Removed
include_usernameparameter fromremote_file_copyin favor of automatic credential routing based on scheme and username presence.
Removed
Fixed
- #366 - Fixed
ASADevice._get_file_systemto usere.searchinstead ofre.matchso the filesystem label is correctly parsed regardless of leading whitespace indiroutput. - #366 - Fixed
ASADevice._send_commandto anchor the%error pattern to the start of a line (^%) to prevent false-positiveCommandErrorraises during file copy operations. - #366 - Fixed
ASADevice.active_redundancy_statesto include"disabled"so standalone (non-failover) units are correctly treated as active.
Housekeeping
- #368 - Converted EOS remote file copy tests from hypothesis/pytest standalone functions to unittest TestCase with
self.assertRaisesandsubTestfor consistency with the rest of the codebase. - #368 - Removed duplicate test class
TestRemoteFileCopyCommandExecutionand consolidated intoTestRemoteFileCopy. - #368 - Added integration tests for EOS device connectivity and remote file copy across FTP, TFTP, SCP, HTTP, HTTPS, and SFTP protocols.
New Contributors
- @mattmiller87 made their first contribution in #364
- @jtdub made their first contribution in #366
Full Changelog: v2.2.1...v2.3.0
v2.2.1 - 2026-04-08
v2.2.1 (2026-04-08)
Added
- #360 - Added support for Python 3.14.
Fixed
- #354 - Fixed Github release publishing failing.
Contributors
Full Changelog: v2.2.0...v2.2.1
v2.2.0 - 2026-03-07
What's Changed
v2.2 Release Notes
- Added OS upgrade support for Junos devices.
v2.2.0 (2026-03-09)
Added
- #350 - Added OS upgrade support for Junos devices.
New Contributors
Full Changelog: v2.1.0...v2.2.0