fix_snmp hard-coded community "public" and found the management VLAN
for the source interface with a substring match, so 10.0.0.1 matched
10.0.0.10 and a DNS name never matched (#3).
The driver implements napalm-device-types 4.13's configure_snmp_agent
steps: the caller's community (read-only, viewDefault), the source
interface set to the VLAN whose address is exactly the listen address
or the management address, configuration saved, and the community
checked in show snmp community. Contact and location are reported as
not set; there is no verified CLI for them on this switch. A value
that would break the CLI is refused.
The requirements now name napalm-device-types 4.13 in both files.
BREAKING CHANGE: run_device_action is removed.
Part of #3 and #4.
The driver no longer collects over SNMP. SNMP_HEALTH_PROFILE states
where the switch publishes uptime (TimeTicks), CPU and memory (tables
with one row per stack unit, first row as before); the application
polls and computes (napalm-device-types docs/STRUCTURE.md).
Interface counters now come from the 64-bit ifXTable where the switch
has it, as the application reads them for every device.
Every CI run died at "pip install -e .[dev]": pyproject.toml asks for
napalm_device_types, which lives in git.netork.io/NAPALM rather than on PyPI,
and pip found only an unrelated 0.1.0 there. Not one test had run in CI.
The workflow now installs napalm-device-types from git first. The matrix
drops 3.8/3.9 and requires-python says >=3.10, because napalm-device-types
itself needs 3.10 -- the package never installed on anything older.
Replayed in a fresh venv: napalm-device-types 2.0.0 from git, then the
package with its dev extras, tests green.
TP-Link embeds system event log entries (link up/down, etc.) in
show running-config output. These change every event and cause false-
positive config-change detections. Strip lines matching #YYYY-MM-DD.
- Replace 'switchport general pvid {vlan}' (invalid) with 'switchport pvid {vlan}'
- For access mode: read current untagged VLAN memberships before entering
config mode, then issue 'no switchport general allowed vlan {old_vid}'
for each to avoid leaving the port with two untagged VLANs
- Add native_vlan support for trunk mode via 'switchport pvid {native_vlan}'
- Remove invalid 'switchport mode access/general' commands (not supported
on this switch family)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
get_poe_status()/set_poe() implement PoE port config via the JetStream
CLI's 'power inline' interface sub-commands. get_interfaces() now enriches
LagN entries and their member ports with trunk_group/lag_members/lag_mode
by parsing 'show link-aggregation summary'. New set_lag_members() adds/
removes members via channel-group/no channel-group.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- set_interface(): support enabled (shutdown/no shutdown) and description
- get_snmp_config(): detect "no community entry exists" as not-configured
instead of reporting running=True with no community
- _action_fix_snmp(): use config-mode prompt for in-config commands
(previously timed out waiting for the exec prompt) and return its result
SNMP health metrics using TP-Link enterprise MIB (OID 11863) for
uptime, per-unit CPU utilization, and per-unit memory utilization.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Implement `delete_vlan()`: removes VLAN from switch, automatically
moves untagged (PVID) ports to VLAN 1 before deletion to satisfy
TP-Link's constraint
- Implement `set_vlan()`: creates or updates a VLAN with optional name
- Implement `set_interface()`: configures trunk/access mode and VLAN
membership on a switch interface
- Add `_to_cli_interface()` helper to expand abbreviated port names
(e.g. Gi1/0/1 → gigabitEthernet 1/0/1)
- Import `InterfaceConfigDict` and `VlanConfigDict` from
`napalm_device_types.models`
- Bump `napalm_device_types` dependency to >=0.2.0
- Add TL-SG3210 to tested-device table in README
- Bump version to 0.1.2