Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions docs/admin/release_notes/version_3.1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# v3.1 Release Notes

This document describes all new features and changes in the release. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## Release Overview

- Added support for Cisco IOS-XR.

<!-- towncrier release notes start -->
## [v3.1.0 (2026-07-02)](https://github.com/networktocode/pyntc/releases/tag/v3.1.0)

### Added

- [#398](https://github.com/networktocode/pyntc/issues/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.
52 changes: 52 additions & 0 deletions docs/user/lib_overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,59 @@ It's main purpose is to simplify the execution of common tasks including:
- Cisco AireOS - uses netmiko (SSH)
- Cisco ASA - uses netmiko (SSH)
- Cisco IOS platforms - uses netmiko (SSH)
- Cisco IOS-XR (eXR / 64-bit) - uses netmiko (SSH)
- Cisco NX-OS - uses pynxos (NX-API)
- Arista EOS - uses pyeapi (eAPI)
- Juniper Junos - uses PyEz (NETCONF)
- F5 Networks - uses f5-sdk (ReST)

!!! note "IOS-XR upgrades require a golden ISO"
The `cisco_iosxr_ssh` driver (`IOSXRDevice`) performs eXR OS upgrades using the
asynchronous native install workflow (`install add` → poll → `install activate` →
poll → reload → `install commit` → verify).

The driver upgrades from a single **golden ISO**. On eXR a bare base ISO
**cannot be activated on its own** when optional feature packages (IS-IS, OSPF,
MPLS, multicast, etc.) are active: `install activate` aborts demanding the
matching-version RPMs be activated in the same operation. A golden ISO solves
this by bundling the base XR image and the matching feature RPMs into one file,
so it activates cleanly without supplying separate packages:

```python
device.install_os("ncs5k-golden-x-7.11.2-NTC7112.iso")
```

The golden ISO must already be staged on `harddisk:` (use `remote_file_copy`).
Installing a base ISO plus separate feature RPMs is **not** supported by this
driver.

!!! tip "Building a golden ISO with gisobuild"
Build a golden ISO with Cisco's [gisobuild](https://github.com/ios-xr/gisobuild)
tool. Provide the platform's base (`mini`) ISO, a repository of the matching
feature RPMs you want bundled, a label (which becomes part of the resulting
filename), and an output directory:

```bash
ntc@linux-server:~/xr/gisobuild$ mkdir -p /home/ntc/xr/7.11.1/giso_out

./src/gisobuild.py \
--iso /home/ntc/xr/7.11.1/ncs5k-mini-x-7.11.1.iso \
--repo /home/ntc/xr/7.11.1/ \
--pkglist ncs5k-isis-1.0.0.0-r7111.x86_64.rpm \
ncs5k-ospf-1.0.0.0-r7111.x86_64.rpm \
ncs5k-mpls-1.0.0.0-r7111.x86_64.rpm \
ncs5k-mpls-te-rsvp-1.0.0.0-r7111.x86_64.rpm \
ncs5k-mcast-1.0.0.0-r7111.x86_64.rpm \
ncs5k-mgbl-1.0.0.0-r7111.x86_64.rpm \
ncs5k-m2m-1.0.0.0-r7111.x86_64.rpm \
--label NTC711 \
--out-directory /home/ntc/xr/7.11.1/giso_out \
--create-checksum \
--clean \
--docker
```

On success gisobuild writes the golden ISO (e.g.
`ncs5k-golden-x-7.11.1-NTC711.iso`) into the output directory. Publish that file
to the server `remote_file_copy` pulls from, then pass its filename to
`install_os`.
2 changes: 2 additions & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,7 @@ nav:
- Uninstall: "admin/uninstall.md"
- Release Notes:
- "admin/release_notes/index.md"
- v3.1: "admin/release_notes/version_3.1.md"
- v3.0: "admin/release_notes/version_3.0.md"
- v2.4: "admin/release_notes/version_2.4.md"
- v2.3: "admin/release_notes/version_2.3.md"
Expand Down Expand Up @@ -163,6 +164,7 @@ nav:
- pyntc.devices.f5_device: "code-reference/pyntc/devices/f5_device.md"
- pyntc.devices.ios_device: "code-reference/pyntc/devices/ios_device.md"
- pyntc.devices.iosxewlc_device: "code-reference/pyntc/devices/iosxewlc_device.md"
- pyntc.devices.iosxr_device: "code-reference/pyntc/devices/iosxr_device.md"
- pyntc.devices.jnpr_device: "code-reference/pyntc/devices/jnpr_device.md"
- pyntc.devices.nxos_device: "code-reference/pyntc/devices/nxos_device.md"
- pyntc.devices.system_features: "code-reference/pyntc/devices/system_features/__init__.md"
Expand Down
Loading
Loading