Monitoring client connections on a cisco C9800-CL with 2.0.0p17 (CRE)

Oh holy … i just realized, there is a whole extra section for 9800 devices at the cisco_wlc_clients check to handle them differently from other cisco WLCs. Seems like there is work too to get this working:

def parse_cisco_wlc_9800_clients(
    string_table: List[StringTable],
) -> WlcClientsSection[ClientsTotal]:
    section: WlcClientsSection[ClientsTotal] = WlcClientsSection()
    for (ssid_name,), (num_clients_str,) in zip(string_table[0], string_table[1]):
        num_clients = int(num_clients_str)
        section.total_clients += num_clients
        if ssid_name not in section.clients_per_ssid:
            section.clients_per_ssid[ssid_name] = ClientsTotal(0)
        section.clients_per_ssid[ssid_name].total += num_clients
    return section


register.snmp_section(
    name="cisco_wlc_9800_clients",
    parsed_section_name="wlc_clients",
    detect=matches(OID_sysObjectID, r"^\.1\.3\.6\.1\.4\.1\.9\.1\.2530"),
    parse_function=parse_cisco_wlc_9800_clients,
    fetch=[
        SNMPTree(
            base=".1.3.6.1.4.1.9.9.512.1.1.1.1",
            oids=[
                "4",  # CISCO-LWAPP-WLAN-MIB::cLWlanSsid
            ],
        ),
        SNMPTree(
            base=".1.3.6.1.4.1.14179.2.1.1.1",
            oids=[
                "38",  # AIRESPACE-WIRELESS-MIB::bsnDot11EssNumberOfMobileStations
            ],
        ),
    ],
)

The connected clients count isn’t important for us so i never have checked this before.