A switch polled over CLI lists its member ports (3 with trunk_group: Trk3 since f35b59e), but no Trk3 interface. Over REST, api_client.get_interfaces synthesizes one row per trunk group, with lag_members and lag_mode.
Plan
The synthesis (group member ports by trunk_group, one logical entry per group) is vendor-neutral, so it goes into napalm_device_types.SwitchDriver as a concrete helper. Both procurve paths use it, and the REST path's own copy is removed. The CLI path takes the LACP vs static mode from show trunks.
## Failure signature
A switch polled over CLI lists its member ports (`3` with `trunk_group: Trk3` since f35b59e), but no `Trk3` interface. Over REST, `api_client.get_interfaces` synthesizes one row per trunk group, with `lag_members` and `lag_mode`.
## Plan
The synthesis (group member ports by `trunk_group`, one logical entry per group) is vendor-neutral, so it goes into `napalm_device_types.SwitchDriver` as a concrete helper. Both procurve paths use it, and the REST path's own copy is removed. The CLI path takes the LACP vs static mode from `show trunks`.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Failure signature
A switch polled over CLI lists its member ports (
3withtrunk_group: Trk3sincef35b59e), but noTrk3interface. Over REST,api_client.get_interfacessynthesizes one row per trunk group, withlag_membersandlag_mode.Plan
The synthesis (group member ports by
trunk_group, one logical entry per group) is vendor-neutral, so it goes intonapalm_device_types.SwitchDriveras a concrete helper. Both procurve paths use it, and the REST path's own copy is removed. The CLI path takes the LACP vs static mode fromshow trunks.