From 34ccd16a8d53df62a27f4550618b32f9c984c39f Mon Sep 17 00:00:00 2001 From: tomaae <23486452+tomaae@users.noreply.github.com> Date: Mon, 13 Apr 2020 06:43:02 +0200 Subject: [PATCH] query dhcp-server data point only if needed --- .../mikrotik_router/mikrotik_controller.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/custom_components/mikrotik_router/mikrotik_controller.py b/custom_components/mikrotik_router/mikrotik_controller.py index a6b37ba..e6f3417 100644 --- a/custom_components/mikrotik_router/mikrotik_controller.py +++ b/custom_components/mikrotik_router/mikrotik_controller.py @@ -811,14 +811,6 @@ class MikrotikControllerData: vals["address"] ) - # TODO: run only on demand - self.data["dhcp-server"] = parse_api( - data=self.data["dhcp-server"], - source=self.api.path("/ip/dhcp-server"), - key="name", - vals=[{"name": "name"}, {"name": "interface", "default": ""},], - ) - self.data["dhcp"] = parse_api( data=self.data["dhcp"], source=self.api.path("/ip/dhcp-server/lease"), @@ -835,7 +827,18 @@ class MikrotikControllerData: ensure_vals=[{"name": "interface", "default": "unknown"},], ) + dhcpserver_query = False for uid in self.data["dhcp"]: + if not dhcpserver_query and self.data["dhcp"][uid]["server"] not in self.data["dhcp-server"]: + _LOGGER.error("Query dhcp-server %s", self.data["dhcp-server"]) + self.data["dhcp-server"] = parse_api( + data=self.data["dhcp-server"], + source=self.api.path("/ip/dhcp-server"), + key="name", + vals=[{"name": "name"}, {"name": "interface", "default": "unknown"}, ], + ) + dhcpserver_query = True + if self.data["dhcp"][uid]["server"] in self.data["dhcp-server"]: self.data["dhcp"][uid]["interface"] = self.data["dhcp-server"][ self.data["dhcp"][uid]["server"]