39d5e692700499c1376e73260c315e7b3cb00c03
CI / test (3.10) (push) Successful in 31s
CI / test (3.11) (push) Successful in 30s
CI / test (3.12) (push) Successful in 33s
CI / test (3.10) (pull_request) Successful in 33s
CI / test (3.11) (pull_request) Successful in 30s
CI / test (3.12) (pull_request) Successful in 32s
The driver no longer collects over SNMP. SNMP_HEALTH_PROFILE states where the switch publishes its values; the application polls and computes (napalm-device-types docs/STRUCTURE.md). This also fixes the memory figure: NETSWITCH-MIB hpLocalMemEntry column 6 is free memory, not used. On swt-l0-3-40 total 58720256 = free 39105640 + allocated 19614616, so the switch showed 66.6 % used instead of 33.4 %. The profile names column 6 as free. Interface counters now come from the 64-bit ifXTable where the switch has it, as the application reads them for every device. Closes #9
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://github.com/chrismanivong/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