Files
napalm-netgear/README.md
T
Christian Manivong 10a3b1efbf
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 47s
driver / test (3.11) (pull_request) Successful in 44s
driver / test (3.12) (pull_request) Successful in 44s
driver / test (3.13) (pull_request) Successful in 39s
driver / lowest (pull_request) Failing after 21s
driver / security (pull_request) Successful in 47s
driver / build (pull_request) Successful in 22s
CI / driver (pull_request) Failing after 5m32s
driver / publish (pull_request) Skipped
chore: adopt the NAPALM driver standard
- The distribution is renamed to napalm-netgear-switches: napalm-netgear
  on PyPI belongs to another project. The import package napalm_netgear
  and the napalm.drivers entry points netgear_smart and netgear_plus stay;
  [tool.napalm-standard] package names the import package for the check.
  README install line and CHANGELOG say the new name.
- CI moves to .gitea/workflows/ci.yml and calls the shared driver workflow
  of NAPALM/driver-standard; .github/ is gone.
- requires-python >=3.10 (napalm-device-types needs it), floor
  napalm-device-types>=4.21.1, LICENSE file, py.typed, SPDX license string,
  links to git.netork.io, a dev extra with floors, CHANGELOG.md.
- mypy strict for the package; napalm_netgear.netgear_plus and
  napalm_netgear.netgear_smart are exempt for now (139 errors), recorded
  in the quality baseline with their long and complex functions and the
  2070-line netgear_smart module. Coverage floor 48 % (measured 48.23 %).

Closes #14
2026-10-23 08:36:28 +02:00

119 lines
3.3 KiB
Markdown

# napalm-netgear-switches
NAPALM community driver for **Netgear Smart Managed** and **Netgear Plus Managed** switches
(GS108EPP, GS110TP, GS316EPP and compatible Smart Managed Pro series).
## Tested devices
| Model | Series | Tested |
|---|---|---|
| GS110TP | Smart Managed Pro | ✅ |
| GS108EPP | Smart Managed Pro | ✅ |
| GS316EPP | Smart Managed Pro | ✅ |
> Other models from the Netgear Smart Managed Pro series should work as well —
> contributions welcome.
## Requirements
| Dependency | Minimum version |
|---|---|
| Python | 3.10 |
| NAPALM | 4.0 |
| napalm-device-types | 4.21.1 |
| Netmiko | 4.0 |
## Installation
```bash
pip install napalm-netgear-switches
```
The name `napalm-netgear` on PyPI belongs to another project. The import package is
still `napalm_netgear`, and the drivers are still `netgear_smart` and `netgear_plus`.
Or from source:
```bash
git clone https://git.netork.io/NAPALM/napalm-netgear.git
cd napalm-netgear
pip install -e .
```
## Quick start
```python
from napalm import get_network_driver
driver = get_network_driver("netgear_smart")
with driver("192.168.0.239", "admin", "password") as device:
facts = device.get_facts()
print(facts)
```
## Implemented getters
| Getter | Status | Notes |
|---|---|---|
| `get_facts` | ✅ | model, hostname, os_version, serial, uptime |
| `get_interfaces` | ✅ | status, speed, description, MTU |
| `get_interfaces_ip` | ✅ | management VLAN IP/mask |
| `get_config` | ✅ | running + startup |
| `get_arp_table` | ✅ | |
| `get_mac_address_table` | ✅ | |
| `get_lldp_neighbors` | ✅ | |
| `get_lldp_neighbors_detail` | ✅ | |
| `get_vlans` | ✅ | |
| `get_environment` | ✅ | CPU + memory only |
| `get_interfaces_counters` | ✅ | |
| `get_users` | ✅ | |
| `get_snmp_information` | ✅ | |
| `get_ntp_servers` | ✅ | |
| `get_ntp_peers` | ✅ | same as servers |
| `get_route_to` | ✅ | static/connected only |
| `ping` | ✅ | |
| `cli` | ✅ | |
| `is_alive` | ✅ | |
| `load_merge_candidate` | ✅ | |
| `load_replace_candidate` | ✅ | additive — no atomic replace |
| `compare_config` | ✅ | |
| `commit_config` | ✅ | |
| `discard_config` | ✅ | |
| `rollback` | ✅ | session-scoped backup |
| `get_bgp_neighbors` | ❌ | not applicable |
| `get_optics` | ❌ | DDM not exposed via CLI |
| `get_ipv6_neighbors_table` | ❌ | not exposed via CLI |
| `get_ntp_stats` | ❌ | not exposed via CLI |
## Optional arguments
| Argument | Default | Description |
|---|---|---|
| `port` | `22` | SSH port |
| `force_no_enable` | `False` | Skip `enable` after login |
| `canonical_int_fmt` | `False` | Use canonical interface names |
Any additional keyword arguments are forwarded to Netmiko.
## CLI notes
* Netmiko device type: `netgear_prosafe`
* Prompt pattern: `(hostname) >` / `(hostname) #` / `(hostname) (Config)#`
* Interface naming: `0/1`, `0/2`, … (slot/port); LAG channels: `ch1`, `ch2`, …
* Config is persisted with `write memory`
* Key-value output uses `Key: value` **or** `Key..... value` notation
depending on firmware generation — both are handled automatically
## Development
The rules are in [STANDARDS.md](https://git.netork.io/NAPALM/driver-standard/src/branch/main/STANDARDS.md).
```bash
python -m venv .venv && .venv/bin/pip install -e ".[dev]"
.venv/bin/pytest --cov
```
## License
Apache 2.0 — see [LICENSE](LICENSE).