Skip to content

Releases: networktocode/pyntc

v3.2.0 - 2026-07-14

Choose a tag to compare

@jtdub jtdub released this 14 Jul 13:20
a39538e

Release Overview

  • Added support for ISSU and NSSU non-disruptive OS upgrades on Juniper devices, along with several fixes to Juniper install_os and remote_file_copy handling.

Added

  • #400 - Added support for ISSU and NSSU non-disruptive OS upgrades on Juniper devices.
  • #400 - Added a snapshot option to JunosDevice.install_os that takes a post-upgrade request system snapshot slice alternate and waits for completion; disabled by default because Junos does not require a snapshot to complete an upgrade.

Fixed

  • #400 - Fixed JunosDevice._get_free_space raising FileSystemNotFoundError on virtual-chassis, multi-RE, and cluster devices; the smallest member's free space is now returned.
  • #400 - Fixed JunosDevice.remote_file_copy discarding the device's actual error message on a failed copy; the underlying error is now included in the raised FileTransferError.
  • #400 - Fixed JunosDevice.remote_file_copy failing 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 JunosDevice post-install version verification failing on platforms whose show version output has no "JUNOS Base OS Software Suite" line (e.g., EX switches on 15.1).
  • #400 - Fixed JunosDevice.install_os issuing 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

Choose a tag to compare

@gsnider2195 gsnider2195 released this 06 Jul 21:12
fb23fbf

v3.1.0 (2026-07-06)

Added

  • #398 - Added native Cisco IOS-XR (eXR / 64-bit) support via the cisco_iosxr_ssh driver (IOSXRDevice), including remote_file_copy (FTP/TFTP/SCP/HTTP/HTTPS) and OS upgrades from a single golden ISO (built with Cisco's gisobuild tool) through the asynchronous install add / install activate / install commit workflow.

Fixed

  • #402 - Fixed nxos install_os failing due to using the default timeout on the long running install all command.

Contributors

Full Changelog: v3.0.2...v3.1.0

v3.0.2 - 2026-05-28

Choose a tag to compare

@jtdub jtdub released this 28 May 21:20
8af4d76

Added

  • #395 - Added an install_mode property to BaseDevice (abstract) and IOSDevice; the IOS implementation returns True when the device boots from packages.conf.

Deprecated

  • #395 - Deprecated the install_mode argument to IOSDevice.install_os; install mode is now derived from the device's boot_options via the new install_mode property 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

Full Changelog: v3.0.1...v3.0.2

v3.0.1 - 2026-05-26

Choose a tag to compare

@jtdub jtdub released this 26 May 18:48
bcad7f7

v3.0.1 (2026-05-26)

Added

  • #387 - Added an NXOSDevice.show_netmiko method and deprecated the existing NXOSDevice.show method that uses pynxos. Developers should transition to the show_netmiko method 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, and startup_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_simple returning 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 file command 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

Choose a tag to compare

@gsnider2195 gsnider2195 released this 07 May 00:36
05339d4

v3.0.0 (2026-05-06)

Breaking Changes

  • #383 - The pyntc rotating file handler is now opt-in via the PYNTC_LOG_FILE environment 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 repeated get_log calls.

Full Changelog: v2.4.1...v3.0.0

v2.4.1 - 2026-05-01

Choose a tag to compare

@gsnider2195 gsnider2195 released this 01 May 19:50
9ca4c9d

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

Choose a tag to compare

@smk4664 smk4664 released this 30 Apr 16:28
5afcdb2

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_copy and remote_file_copy that raises NotEnoughFreeSpaceError when the target filesystem lacks room for the image.
  • #370 - Added file_size_unit (bytes, megabytes, or gigabytes; default bytes) and a computed file_size_bytes to FileCopyModel so remote_file_copy can verify free space against a caller-supplied size; when file_size is 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_copy and remote_file_copy that raises NotEnoughFreeSpaceError when the target filesystem lacks room for the image.
  • #373 - Added a pre-transfer free-space check to Juniper JunOS file_copy and remote_file_copy that raises NotEnoughFreeSpaceError when 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

Choose a tag to compare

@itdependsnetworks itdependsnetworks released this 15 Apr 11:12
9934b2f

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, and verify_file support for ASADevice (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_url to 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_string to use integer division, preventing ValueError on format specifiers.
  • #368 - Fixed check_file_exists and get_remote_checksum to open the SSH connection before use, preventing AttributeError when called standalone.
  • #368 - Fixed password-prompt handling in remote_file_copy to wait for the transfer to complete before proceeding to verification.
  • #368 - Simplified checksum parsing in get_remote_checksum to use string splitting instead of regex.
  • #368 - Changed verify_file to return early when file does not exist and use case-insensitive checksum comparison.
  • #368 - Removed include_username parameter from remote_file_copy in favor of automatic credential routing based on scheme and username presence.

Removed

  • #364 - Removed log.init from iosxewlc device.
  • #364 - Removed warning filter for logging.

Fixed

  • #366 - Fixed ASADevice._get_file_system to use re.search instead of re.match so the filesystem label is correctly parsed regardless of leading whitespace in dir output.
  • #366 - Fixed ASADevice._send_command to anchor the % error pattern to the start of a line (^% ) to prevent false-positive CommandError raises during file copy operations.
  • #366 - Fixed ASADevice.active_redundancy_states to 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.assertRaises and subTest for consistency with the rest of the codebase.
  • #368 - Removed duplicate test class TestRemoteFileCopyCommandExecution and consolidated into TestRemoteFileCopy.
  • #368 - Added integration tests for EOS device connectivity and remote file copy across FTP, TFTP, SCP, HTTP, HTTPS, and SFTP protocols.

New Contributors

Full Changelog: v2.2.1...v2.3.0

v2.2.1 - 2026-04-08

Choose a tag to compare

@gsnider2195 gsnider2195 released this 08 Apr 17:59
6aaeaaf

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

Choose a tag to compare

@jeffkala jeffkala released this 07 Mar 17:01
31f3509

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