1 """Controller for sharing Omada API coordinators between platforms."""
3 from tplink_omada_client
import OmadaSiteClient
4 from tplink_omada_client.devices
import OmadaSwitch
8 from .coordinator
import (
9 OmadaClientsCoordinator,
10 OmadaDevicesCoordinator,
11 OmadaGatewayCoordinator,
12 OmadaSwitchPortCoordinator,
17 """Controller for the Omada SDN site."""
19 _gateway_coordinator: OmadaGatewayCoordinator |
None =
None
24 omada_client: OmadaSiteClient,
26 """Create the controller."""
30 self._switch_port_coordinators: dict[str, OmadaSwitchPortCoordinator] = {}
35 """Initialize the all coordinators, and perform first refresh."""
39 gateway = next((d
for d
in devices
if d.type ==
"gateway"),
None)
50 """Get the connected client API for the site to manage."""
54 self, switch: OmadaSwitch
55 ) -> OmadaSwitchPortCoordinator:
56 """Get coordinator for network port information of a given switch."""
57 if switch.mac
not in self._switch_port_coordinators:
62 return self._switch_port_coordinators[switch.mac]
66 """Gets the coordinator for site's gateway, or None if there is no gateway."""
71 """Gets the coordinator for site's devices."""
76 """Gets the coordinator for site's clients."""
None __init__(self, HomeAssistant hass, OmadaSiteClient omada_client)
OmadaClientsCoordinator clients_coordinator(self)
OmadaDevicesCoordinator devices_coordinator(self)
None initialize_first_refresh(self)
OmadaSiteClient omada_client(self)
OmadaSwitchPortCoordinator get_switch_port_coordinator(self, OmadaSwitch switch)
OmadaGatewayCoordinator|None gateway_coordinator(self)