# 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 ```bash pip install napalm napalm-hpe-aruba-procurve ``` Or from source: ```bash git clone https://github.com/chrismanivong/napalm-hpe-aruba-procurve pip install -e napalm-hpe-aruba-procurve/ ``` ## Quick start ```python 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