driver / standard (pull_request) Successful in 13s
driver / lint (pull_request) Successful in 11s
driver / types (pull_request) Successful in 44s
driver / test (3.10) (pull_request) Successful in 45s
driver / test (3.11) (pull_request) Successful in 44s
driver / test (3.12) (pull_request) Successful in 43s
driver / test (3.13) (pull_request) Successful in 37s
driver / lowest (pull_request) Successful in 22s
driver / security (pull_request) Successful in 46s
driver / build (pull_request) Successful in 22s
CI / driver (pull_request) Successful in 5m28s
driver / publish (pull_request) Skipped
- CI moves to .gitea/workflows/ci.yml and calls the shared driver workflow of NAPALM/driver-standard; .github/ goes. - requires-python >=3.10 (napalm-device-types needs it), LICENSE file, CHANGELOG, py.typed, SPDX license string, links to git.netork.io; napalm-device-types >=4.21.1, a dev extra with floors. - [tool.napalm-standard] names the import package napalm_procurve, which is not the distribution name. - True floors for netaddr (>=0.7.10) and urllib3 (>=1.23): unbounded, the lowest job installed versions that do not import on Python 3.10. - mypy strict for the package; napalm_procurve.api_client, .parsers and .procurve are exempt for now (136 errors), recorded in the quality baseline with their long functions and the 1400-line procurve.py. Coverage floor 54 % (measured 54.28 %).
2.8 KiB
2.8 KiB
napalm-hpe-aruba-procurve
NAPALM driver for HPE / Aruba ProCurve switches — from ancient 2520G-8-PoE to modern 2530/2540 series.
Transport auto-detection
The driver probes transports in order and uses the first one that succeeds:
| Priority | Transport | Notes |
|---|---|---|
| 1 | REST API (HTTPS → HTTP, v7 → v6) | Newer 2530/2540 with rest-interface enabled |
| 2 | SSH (standard) | hp_procurve netmiko driver |
| 3 | SSH (legacy KEX) | Forces older kex/cipher negotiation for 2520G-8-PoE etc. |
| 4 | Telnet | Oldest devices without SSH or with broken SSH |
Override the transport with optional_args={"transport": "ssh_legacy"} to skip
auto-detection.
Switch prerequisites
REST API (newer switches, e.g. 2530, 2540)
web-management ssl
rest-interface
rest-interface session-idle-timeout 120
SSH (all ProCurve)
crypto key generate ssh rsa
ip ssh
Telnet is enabled by default on most ProCurve switches.
Installation
pip install napalm napalm-hpe-aruba-procurve
Or from source:
git clone https://git.netork.io/NAPALM/napalm-hpe-aruba-procurve
pip install -e napalm-hpe-aruba-procurve/
Quick start
from napalm import get_network_driver
Driver = get_network_driver("procurve")
with Driver(
"10.0.0.1",
"manager",
"secret",
optional_args={
# "transport": "ssh", # force transport (api/ssh/ssh_legacy/telnet)
# "port": 22,
# "ssl_verify": False, # disable SSL cert check for API
# "api_version": "v7", # API version hint (v3/v6/v7)
# "secret": "enablepassword", # enable password for CLI
},
) as dev:
print(dev.get_facts())
print(dev.get_interfaces())
Supported NAPALM methods
| Method | API | SSH/Telnet |
|---|---|---|
open() |
✅ | ✅ |
close() |
✅ | ✅ |
is_alive() |
✅ | ✅ |
get_facts() |
✅ | ✅ |
get_interfaces() |
✅ | ✅ |
get_interfaces_ip() |
✅ | ✅ |
get_arp_table() |
✅ | ✅ |
get_mac_address_table() |
✅ | ✅ |
get_lldp_neighbors() |
✅ | ✅ |
get_lldp_neighbors_detail() |
✅ | ✅ |
get_config() |
✅ | ✅ |
get_ntp_servers() |
✅ | ✅ |
get_environment() |
❌ | ✅ |
get_users() |
❌ | ✅ |
get_snmp_information() |
❌ | ✅ |
ping() |
✅ | ✅ |
cli() |
✅ | ✅ |
load_merge_candidate() |
❌ | ✅ |
load_replace_candidate() |
❌ | ✅ |
compare_config() |
❌ | ✅ |
commit_config() |
❌ | ✅ |
discard_config() |
❌ | ✅ |
rollback() |
❌ | ✅ |
Tested devices
- HP ProCurve 2520G-8-PoE (J9565A) — SSH legacy / Telnet
- HP ProCurve 2920-48G — SSH
- Aruba 2530-8-PoE+ — SSH + REST API
License
Apache 2.0