chore: adopt the NAPALM driver standard
driver / standard (pull_request) Successful in 13s
driver / lint (pull_request) Successful in 11s
driver / types (pull_request) Successful in 42s
driver / test (3.10) (pull_request) Successful in 3m25s
driver / test (3.11) (pull_request) Successful in 3m23s
driver / test (3.12) (pull_request) Successful in 3m25s
driver / test (3.13) (pull_request) Successful in 3m19s
driver / lowest (pull_request) Successful in 3m7s
driver / security (pull_request) Successful in 53s
driver / build (pull_request) Successful in 34s
CI / driver (pull_request) Successful in 19m12s
driver / publish (pull_request) Skipped
driver / standard (pull_request) Successful in 13s
driver / lint (pull_request) Successful in 11s
driver / types (pull_request) Successful in 42s
driver / test (3.10) (pull_request) Successful in 3m25s
driver / test (3.11) (pull_request) Successful in 3m23s
driver / test (3.12) (pull_request) Successful in 3m25s
driver / test (3.13) (pull_request) Successful in 3m19s
driver / lowest (pull_request) Successful in 3m7s
driver / security (pull_request) Successful in 53s
driver / build (pull_request) Successful in 34s
CI / driver (pull_request) Successful in 19m12s
driver / publish (pull_request) Skipped
- 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 (was napalm_device_types>=0.4.0), LICENSE file, py.typed, SPDX license string, links to git.netork.io, a dev extra with floors. - README (pyproject named one that did not exist) and CHANGELOG.md. - mypy strict for the package; napalm_zyxel.zyxel_driver is exempt for now (24 errors), recorded in the quality baseline with its two complex functions. Coverage floor 68 % (measured 68.97 %). Closes #8
This commit is contained in:
1 parent
b306b64673
commit
51b8cda3e4
9 files changed
+341
-61
No files matched your search
@@ -0,0 +1,68 @@
|
||||
# napalm-zyxel
|
||||
|
||||
NAPALM driver for Zyxel VMG series residential gateways (VMG4005-B50A and similar), built on
|
||||
[napalm-device-types](https://git.netork.io/NAPALM/napalm-device-types)
|
||||
(`ResidentialGatewayDriver`).
|
||||
|
||||
## Tested against
|
||||
|
||||
| Model | Firmware |
|
||||
|---|---|
|
||||
| not recorded yet | not recorded yet |
|
||||
|
||||
## Connection
|
||||
|
||||
The gateway's web API (the Zyxel DAL protocol) over HTTP on port 80, or HTTPS on port 443
|
||||
with `use_tls`. The driver fetches the gateway's RSA public key, sends a fresh AES key
|
||||
encrypted with it, and logs in with the web interface account; every request and response
|
||||
after that is AES-encrypted.
|
||||
|
||||
```python
|
||||
from napalm import get_network_driver
|
||||
|
||||
driver = get_network_driver("zyxel")
|
||||
with driver("192.0.2.1", "admin", "secret", optional_args={"use_tls": True}) as device:
|
||||
print(device.get_facts())
|
||||
```
|
||||
|
||||
| Optional argument | Default | Meaning |
|
||||
|---|---|---|
|
||||
| `use_tls` | `False` | HTTPS instead of HTTP |
|
||||
| `port` | `443` with `use_tls`, else `80` | port of the web interface |
|
||||
| `verify` | `False` | verify the gateway's TLS certificate |
|
||||
|
||||
## Supported
|
||||
|
||||
| Getter / action | Source |
|
||||
|---|---|
|
||||
| `get_facts` | basic device information |
|
||||
| `get_interfaces`, `get_interfaces_ip` | basic device information (WAN, LAN, Wi-Fi) |
|
||||
| `get_arp_table` | derived from the active LAN hosts |
|
||||
| `get_wan_status` | basic device information |
|
||||
| `get_hosts` | DAL `LAN_HOSTS`, else the DHCP page |
|
||||
| `get_port_forwards`, `get_nat_translations` | DAL `NAT_PORTMAP`, else the status page |
|
||||
| `get_wireless_clients`, `get_ssids`, `get_radio_status` | DAL, else the wireless page |
|
||||
| `get_diagnostics` | DAL `DIAGNOSTICS` |
|
||||
| `ping` | DAL `PINGTEST` |
|
||||
| `is_alive` | TCP connect to the web port |
|
||||
| `reboot_host` | DAL `REBOOT` |
|
||||
| `restart_wifi` | DAL `WIFI_RESTART` |
|
||||
|
||||
## Not supported
|
||||
|
||||
Configuration changes (`load_merge_candidate` and `load_replace_candidate` raise
|
||||
`NotImplementedError`), `get_config`, LLDP, BGP, NTP, SNMP, users, routes, MAC address
|
||||
table, optics, environment, traceroute, VPN tunnels and the CLI.
|
||||
|
||||
## 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
|
||||
Reference in new issue
Block a user