NAPALM driver for HiOS network switches by Belden
Project description
NAPALM HiOS Driver
NAPALM driver for Hirschmann HiOS industrial switches by Belden. Three protocols — MOPS, SNMP, and SSH — with full getter parity and vendor-specific methods for MRP, RSTP, factory lifecycle, and config profiles.
Features
- MOPS (MIB Operations over HTTPS) — default protocol, same mechanism as the HiOS web UI. Atomic multi-table writes in a single POST, HTTP Basic auth, zero pysnmp/net-snmp dependency
- SNMPv3 authPriv (MD5/DES) — works with HiOS factory defaults including short passwords (< 8 chars)
- SSH — CLI parsing via Netmiko, lazy auto-connect when MOPS/SNMP is primary
- 19 standard getters on all 3 protocols, plus 3 SSH-only methods (
get_config,ping,cli) - Atomic config staging —
load_merge_candidate→compare_config→commit_config(MOPS: single POST; SSH: CLI commands) - RSTP/STP — full global and per-port get/set: mode, priority, timers, guards, edge ports, path cost
- MRP ring redundancy — configure manager/client roles, ring ports, recovery delay, domain management
- Factory lifecycle — detect and onboard factory-fresh HiOS 10.3+ devices, clear to defaults or full factory reset
- Config profiles — list, activate, delete NVM/ENVM config profiles with fingerprint tracking
- HiDiscovery — read/set discovery protocol mode (on/off/read-only) with blinking control
- VLAN Ingress/Egress — per-port ingress settings (PVID, frame types, filtering), per-VLAN egress membership (T/U/F), VLAN CRUD
- Auto-Disable — per-port timer/status monitoring, reason control, port reset
- Loop Protection — heartbeat-based loop detection with per-port and global config
- sFlow — receiver configuration + per-port flow sampling and counter polling (RFC 3176)
- Storm Control — per-port broadcast/multicast/unicast ingress rate limiting with pps/percent thresholds
- QoS — per-port trust mode, queue scheduling (strict/weighted), shaping, global dot1p/DSCP→TC mapping, management priority
- Multi-interface setters — pass a list of ports to
set_interface,set_rstp_port,set_auto_disable,reset_auto_disable,set_loop_protection,set_vlan_ingress,set_vlan_egressfor batched operations - MOPS atomic staging —
start_staging()→ multiple setter calls →commit_staging()batches all mutations into one atomic POST (e.g. change PVID + egress together so a port never loses comms) - Extended LLDP — 802.1/802.3 org-specific TLVs, multiple management addresses, autoneg, VLAN membership
- 493 unit tests and live device validation on BRS50 and GRS1042
Installation
pip install napalm-hios
Quick Start
from napalm import get_network_driver
driver = get_network_driver('hios')
# Default: MOPS (HTTPS, atomic writes, no SNMP dependency)
device = driver('192.168.1.4', 'admin', 'private')
# Or force a specific protocol:
# device = driver('192.168.1.4', 'admin', 'private',
# optional_args={'protocol_preference': ['snmp']})
device.open()
print(device.get_facts())
print(device.get_interfaces())
device.close()
Documentation
| Document | Contents |
|---|---|
| docs/usage.md | Standard NAPALM methods — arguments, return values, examples |
| docs/vendor_specific.md | Vendor methods — MRP, RSTP, HiDiscovery, factory reset, onboarding, profiles, extended LLDP |
| docs/protocols.md | Protocol details — MOPS/SNMP/SSH config, known cross-protocol differences, method availability matrix |
Supported Methods
Standard NAPALM getters (MOPS + SNMP + SSH)
get_facts | get_interfaces | get_interfaces_ip | get_interfaces_counters | get_lldp_neighbors | get_lldp_neighbors_detail | get_mac_address_table | get_arp_table | get_ntp_servers | get_ntp_stats | get_users | get_optics | get_environment | get_snmp_information | get_vlans
SSH-only (auto-connects SSH when primary is MOPS/SNMP)
get_config | ping | cli
Configuration workflow
load_merge_candidate → compare_config → commit_config | discard_config
Vendor-specific
Read:
get_mrp | get_mrp_sub_ring | get_hidiscovery | get_rstp | get_rstp_port | get_auto_disable | get_loop_protection | get_sflow | get_sflow_port | get_storm_control | get_qos | get_qos_mapping | get_management_priority | get_vlan_ingress | get_vlan_egress | get_lldp_neighbors_detail_extended | get_config_status | get_profiles | get_config_fingerprint | is_factory_default
Write:
set_interface | set_mrp | delete_mrp | set_mrp_sub_ring | delete_mrp_sub_ring | set_hidiscovery | set_rstp | set_rstp_port | set_auto_disable | reset_auto_disable | set_auto_disable_reason | set_loop_protection | set_sflow | set_sflow_port | set_storm_control | set_qos | set_qos_mapping | set_management_priority | set_vlan_ingress | set_vlan_egress | create_vlan | update_vlan | delete_vlan | save_config | clear_config | clear_factory | activate_profile | delete_profile | onboard | start_staging | commit_staging | discard_staging | get_staged_mutations
See docs/vendor_specific.md for arguments, return values, and protocol behaviour.
Protocol Support
Default order: MOPS → SNMP → SSH. Override with protocol_preference in optional_args.
| Protocol | Transport | Auth | Atomic Write | Dependencies |
|---|---|---|---|---|
| MOPS | HTTPS 443 | HTTP Basic | Yes (single POST) | requests |
| SNMP | UDP 161 | SNMPv3 authPriv (MD5/DES) | No | pysnmp |
| SSH | TCP 22 | Password | No | netmiko |
MOPS is the default and preferred protocol. SSH lazy-connects on demand for SSH-only methods. See docs/protocols.md for configuration, known cross-protocol differences, and the full method availability matrix.
Testing
# Unit tests (493+)
pytest tests/unit/ -v
# Live device test
python examples/test_all_commands.py <hostname> <user> <password>
Contributing
Issues and PRs welcome at GitHub. Driver tested against BRS50 and GRS1042 hardware. If you have a HiOS device and find a bug, include firmware version and the getter output.
License
Apache License 2.0 — see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file napalm_hios-1.12.0.tar.gz.
File metadata
- Download URL: napalm_hios-1.12.0.tar.gz
- Upload date:
- Size: 125.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
61e54e18437f6241583e5a31be1b5f4f2d906ef6774c99da06c41cd1b9980899
|
|
| MD5 |
7665066d4db7f65b6bf4a0de16aeabd8
|
|
| BLAKE2b-256 |
c3559c08c3c45d8124b9eb889ba3d213067c70f5029ae9c48aa1552198109d11
|
File details
Details for the file napalm_hios-1.12.0-py3-none-any.whl.
File metadata
- Download URL: napalm_hios-1.12.0-py3-none-any.whl
- Upload date:
- Size: 127.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9111991621bd1e001094b5d48c0f60548b6324592dba66ba073d99dea3ad5b33
|
|
| MD5 |
4f0226e1b0a3418042e7ea9aef5138b9
|
|
| BLAKE2b-256 |
4d944f35ac50850d48143a4a43c6c737ac4cbde9871ec102168f297fe9eb2701
|