Metadata-Version: 2.4
Name: napalm-hpe-aruba-procurve
Version: 0.2.0
Summary: NAPALM driver for HPE/Aruba ProCurve switches with auto-detecting transport (REST API, SSH, legacy SSH, Telnet)
Author: Christian Manivong
License: Apache-2.0
Project-URL: Repository, https://github.com/chrismanivong/napalm-hpe-aruba-procurve
Classifier: Topic :: Utilities
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: MacOS
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: napalm>=4.0.0
Requires-Dist: netmiko>=4.0.0
Requires-Dist: paramiko>=5.0.0
Requires-Dist: netaddr
Requires-Dist: requests>=2.25.0
Requires-Dist: urllib3
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: pytest-cov; extra == "dev"
Requires-Dist: black; extra == "dev"
Requires-Dist: ruff; extra == "dev"

# 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
