1 """Support for ClearPass Policy Manager."""
3 from __future__
import annotations
5 from datetime
import timedelta
8 from clearpasspy
import ClearPass
9 import voluptuous
as vol
12 DOMAIN
as DEVICE_TRACKER_DOMAIN,
13 PLATFORM_SCHEMA
as DEVICE_TRACKER_PLATFORM_SCHEMA,
23 GRANT_TYPE =
"client_credentials"
25 PLATFORM_SCHEMA = DEVICE_TRACKER_PLATFORM_SCHEMA.extend(
27 vol.Required(CONF_HOST): cv.string,
28 vol.Required(CONF_CLIENT_ID): cv.string,
29 vol.Required(CONF_API_KEY): cv.string,
33 _LOGGER = logging.getLogger(__name__)
36 def get_scanner(hass: HomeAssistant, config: ConfigType) -> CPPMDeviceScanner |
None:
37 """Initialize Scanner."""
39 config = config[DEVICE_TRACKER_DOMAIN]
42 "server": config[CONF_HOST],
43 "grant_type": GRANT_TYPE,
44 "secret": config[CONF_API_KEY],
45 "client": config[CONF_CLIENT_ID],
47 cppm = ClearPass(data)
48 if cppm.access_token
is None:
50 _LOGGER.debug(
"Successfully received Access Token")
55 """Initialize class."""
58 """Initialize class."""
63 """Initialize scanner."""
65 return [device[
"mac"]
for device
in self.
resultsresults]
68 """Retrieve device name."""
70 (result[
"name"]
for result
in self.
resultsresults
if result[
"mac"] == device),
None
74 """Retrieve data from Aruba Clearpass and return parsed result."""
75 endpoints = self.
_cppm_cppm.get_endpoints(100)[
"_embedded"][
"items"]
77 for item
in endpoints:
78 if self.
_cppm_cppm.online_status(item[
"mac_address"]):
79 device = {
"mac": item[
"mac_address"],
"name": item[
"mac_address"]}
80 devices.append(device)
83 _LOGGER.debug(
"Devices: %s", devices)
def get_device_name(self, device)
CPPMDeviceScanner|None get_scanner(HomeAssistant hass, ConfigType config)