API, renamed path and update functions

This commit is contained in:
Tomaae 2022-06-28 20:28:00 +02:00
parent 7782503f78
commit c10fb9fedb
No known key found for this signature in database
GPG key ID: 8360BBD8A381D1C0
2 changed files with 45 additions and 45 deletions

View file

@ -376,7 +376,7 @@ class MikrotikControllerData:
# --------------------------- # ---------------------------
def set_value(self, path, param, value, mod_param, mod_value): def set_value(self, path, param, value, mod_param, mod_value):
"""Change value using Mikrotik API""" """Change value using Mikrotik API"""
return self.api.update(path, param, value, mod_param, mod_value) return self.api.set_value(path, param, value, mod_param, mod_value)
# --------------------------- # ---------------------------
# execute # execute
@ -414,7 +414,7 @@ class MikrotikControllerData:
"""Update Mikrotik data""" """Update Mikrotik data"""
packages = parse_api( packages = parse_api(
data={}, data={},
source=self.api.path("/system/package"), source=self.api.query("/system/package"),
key="name", key="name",
vals=[ vals=[
{"name": "name"}, {"name": "name"},
@ -667,7 +667,7 @@ class MikrotikControllerData:
"""Get all interfaces data from Mikrotik""" """Get all interfaces data from Mikrotik"""
self.data["interface"] = parse_api( self.data["interface"] = parse_api(
data=self.data["interface"], data=self.data["interface"],
source=self.api.path("/interface"), source=self.api.query("/interface"),
key="default-name", key="default-name",
key_secondary="name", key_secondary="name",
vals=[ vals=[
@ -747,7 +747,7 @@ class MikrotikControllerData:
self.data["interface"] = parse_api( self.data["interface"] = parse_api(
data=self.data["interface"], data=self.data["interface"],
source=self.api.path("/interface/ethernet"), source=self.api.query("/interface/ethernet"),
key="default-name", key="default-name",
key_secondary="name", key_secondary="name",
vals=[ vals=[
@ -786,7 +786,7 @@ class MikrotikControllerData:
): ):
self.data["interface"] = parse_api( self.data["interface"] = parse_api(
data=self.data["interface"], data=self.data["interface"],
source=self.api.path( source=self.api.query(
"/interface/ethernet", "/interface/ethernet",
command="monitor", command="monitor",
args={".id": vals[".id"], "once": True}, args={".id": vals[".id"], "once": True},
@ -818,7 +818,7 @@ class MikrotikControllerData:
else: else:
self.data["interface"] = parse_api( self.data["interface"] = parse_api(
data=self.data["interface"], data=self.data["interface"],
source=self.api.path( source=self.api.query(
"/interface/ethernet", "/interface/ethernet",
command="monitor", command="monitor",
args={".id": vals[".id"], "once": True}, args={".id": vals[".id"], "once": True},
@ -839,7 +839,7 @@ class MikrotikControllerData:
"""Get system resources data from Mikrotik""" """Get system resources data from Mikrotik"""
self.data["route"] = parse_api( self.data["route"] = parse_api(
data={}, data={},
source=self.api.path("/ip/route"), source=self.api.query("/ip/route"),
key="dst-address", key="dst-address",
vals=[ vals=[
{"name": "dst-address"}, {"name": "dst-address"},
@ -861,7 +861,7 @@ class MikrotikControllerData:
"""Get system resources data from Mikrotik""" """Get system resources data from Mikrotik"""
self.data["bridge_host"] = parse_api( self.data["bridge_host"] = parse_api(
data=self.data["bridge_host"], data=self.data["bridge_host"],
source=self.api.path("/interface/bridge/host"), source=self.api.query("/interface/bridge/host"),
key="mac-address", key="mac-address",
vals=[ vals=[
{"name": "mac-address"}, {"name": "mac-address"},
@ -925,7 +925,7 @@ class MikrotikControllerData:
"""Get NAT data from Mikrotik""" """Get NAT data from Mikrotik"""
self.data["nat"] = parse_api( self.data["nat"] = parse_api(
data=self.data["nat"], data=self.data["nat"],
source=self.api.path("/ip/firewall/nat"), source=self.api.query("/ip/firewall/nat"),
key=".id", key=".id",
vals=[ vals=[
{"name": ".id"}, {"name": ".id"},
@ -1007,7 +1007,7 @@ class MikrotikControllerData:
"""Get Mangle data from Mikrotik""" """Get Mangle data from Mikrotik"""
self.data["mangle"] = parse_api( self.data["mangle"] = parse_api(
data=self.data["mangle"], data=self.data["mangle"],
source=self.api.path("/ip/firewall/mangle"), source=self.api.query("/ip/firewall/mangle"),
key=".id", key=".id",
vals=[ vals=[
{"name": ".id"}, {"name": ".id"},
@ -1101,7 +1101,7 @@ class MikrotikControllerData:
"""Get Filter data from Mikrotik""" """Get Filter data from Mikrotik"""
self.data["filter"] = parse_api( self.data["filter"] = parse_api(
data=self.data["filter"], data=self.data["filter"],
source=self.api.path("/ip/firewall/filter"), source=self.api.query("/ip/firewall/filter"),
key=".id", key=".id",
vals=[ vals=[
{"name": ".id"}, {"name": ".id"},
@ -1213,7 +1213,7 @@ class MikrotikControllerData:
"""Get Kid-control data from Mikrotik""" """Get Kid-control data from Mikrotik"""
self.data["kid-control"] = parse_api( self.data["kid-control"] = parse_api(
data=self.data["kid-control"], data=self.data["kid-control"],
source=self.api.path("/ip/kid-control"), source=self.api.query("/ip/kid-control"),
key="name", key="name",
vals=[ vals=[
{"name": "name"}, {"name": "name"},
@ -1248,7 +1248,7 @@ class MikrotikControllerData:
"""Get PPP data from Mikrotik""" """Get PPP data from Mikrotik"""
self.data["ppp_secret"] = parse_api( self.data["ppp_secret"] = parse_api(
data=self.data["ppp_secret"], data=self.data["ppp_secret"],
source=self.api.path("/ppp/secret"), source=self.api.query("/ppp/secret"),
key="name", key="name",
vals=[ vals=[
{"name": "name"}, {"name": "name"},
@ -1272,7 +1272,7 @@ class MikrotikControllerData:
self.data["ppp_active"] = parse_api( self.data["ppp_active"] = parse_api(
data={}, data={},
source=self.api.path("/ppp/active"), source=self.api.query("/ppp/active"),
key="name", key="name",
vals=[ vals=[
{"name": "name"}, {"name": "name"},
@ -1317,7 +1317,7 @@ class MikrotikControllerData:
else: else:
self.data["routerboard"] = parse_api( self.data["routerboard"] = parse_api(
data=self.data["routerboard"], data=self.data["routerboard"],
source=self.api.path("/system/routerboard"), source=self.api.query("/system/routerboard"),
vals=[ vals=[
{"name": "routerboard", "type": "bool"}, {"name": "routerboard", "type": "bool"},
{"name": "model", "default": "unknown"}, {"name": "model", "default": "unknown"},
@ -1338,7 +1338,7 @@ class MikrotikControllerData:
if 0 < self.major_fw_version < 7: if 0 < self.major_fw_version < 7:
self.data["health"] = parse_api( self.data["health"] = parse_api(
data=self.data["health"], data=self.data["health"],
source=self.api.path("/system/health"), source=self.api.query("/system/health"),
vals=[ vals=[
{"name": "temperature", "default": "unknown"}, {"name": "temperature", "default": "unknown"},
{"name": "voltage", "default": "unknown"}, {"name": "voltage", "default": "unknown"},
@ -1352,7 +1352,7 @@ class MikrotikControllerData:
elif 0 < self.major_fw_version >= 7: elif 0 < self.major_fw_version >= 7:
self.data["health7"] = parse_api( self.data["health7"] = parse_api(
data=self.data["health7"], data=self.data["health7"],
source=self.api.path("/system/health"), source=self.api.query("/system/health"),
key="name", key="name",
vals=[ vals=[
{"name": "value", "default": "unknown"}, {"name": "value", "default": "unknown"},
@ -1372,7 +1372,7 @@ class MikrotikControllerData:
self.data["resource"] = parse_api( self.data["resource"] = parse_api(
data=self.data["resource"], data=self.data["resource"],
source=self.api.path("/system/resource"), source=self.api.query("/system/resource"),
vals=[ vals=[
{"name": "platform", "default": "unknown"}, {"name": "platform", "default": "unknown"},
{"name": "board-name", "default": "unknown"}, {"name": "board-name", "default": "unknown"},
@ -1470,7 +1470,7 @@ class MikrotikControllerData:
self.execute("/system/package/update", "check-for-updates", None, None) self.execute("/system/package/update", "check-for-updates", None, None)
self.data["fw-update"] = parse_api( self.data["fw-update"] = parse_api(
data=self.data["fw-update"], data=self.data["fw-update"],
source=self.api.path("/system/package/update"), source=self.api.query("/system/package/update"),
vals=[ vals=[
{"name": "status"}, {"name": "status"},
{"name": "channel", "default": "unknown"}, {"name": "channel", "default": "unknown"},
@ -1506,7 +1506,7 @@ class MikrotikControllerData:
"""Get list of all scripts from Mikrotik""" """Get list of all scripts from Mikrotik"""
self.data["script"] = parse_api( self.data["script"] = parse_api(
data=self.data["script"], data=self.data["script"],
source=self.api.path("/system/script"), source=self.api.query("/system/script"),
key="name", key="name",
vals=[ vals=[
{"name": "name"}, {"name": "name"},
@ -1522,7 +1522,7 @@ class MikrotikControllerData:
"""Get list of all environment variables from Mikrotik""" """Get list of all environment variables from Mikrotik"""
self.data["environment"] = parse_api( self.data["environment"] = parse_api(
data=self.data["environment"], data=self.data["environment"],
source=self.api.path("/system/script/environment"), source=self.api.query("/system/script/environment"),
key="name", key="name",
vals=[ vals=[
{"name": "name"}, {"name": "name"},
@ -1537,7 +1537,7 @@ class MikrotikControllerData:
"""Get list of all environment variables from Mikrotik""" """Get list of all environment variables from Mikrotik"""
self.data["hostspot_host"] = parse_api( self.data["hostspot_host"] = parse_api(
data={}, data={},
source=self.api.path("/ip/hotspot/host"), source=self.api.query("/ip/hotspot/host"),
key="mac-address", key="mac-address",
vals=[ vals=[
{"name": "mac-address"}, {"name": "mac-address"},
@ -1570,7 +1570,7 @@ class MikrotikControllerData:
"""Get Queue data from Mikrotik""" """Get Queue data from Mikrotik"""
self.data["queue"] = parse_api( self.data["queue"] = parse_api(
data=self.data["queue"], data=self.data["queue"],
source=self.api.path("/queue/simple"), source=self.api.query("/queue/simple"),
key="name", key="name",
vals=[ vals=[
{"name": ".id"}, {"name": ".id"},
@ -1659,7 +1659,7 @@ class MikrotikControllerData:
"""Get ARP data from Mikrotik""" """Get ARP data from Mikrotik"""
self.data["arp"] = parse_api( self.data["arp"] = parse_api(
data=self.data["arp"], data=self.data["arp"],
source=self.api.path("/ip/arp"), source=self.api.query("/ip/arp"),
key="mac-address", key="mac-address",
vals=[{"name": "mac-address"}, {"name": "address"}, {"name": "interface"}], vals=[{"name": "mac-address"}, {"name": "address"}, {"name": "interface"}],
ensure_vals=[{"name": "bridge", "default": ""}], ensure_vals=[{"name": "bridge", "default": ""}],
@ -1699,7 +1699,7 @@ class MikrotikControllerData:
"""Get static DNS data from Mikrotik""" """Get static DNS data from Mikrotik"""
self.data["dns"] = parse_api( self.data["dns"] = parse_api(
data=self.data["dns"], data=self.data["dns"],
source=self.api.path("/ip/dns/static"), source=self.api.query("/ip/dns/static"),
key="name", key="name",
vals=[{"name": "name"}, {"name": "address"}, {"name": "comment"}], vals=[{"name": "name"}, {"name": "address"}, {"name": "comment"}],
) )
@ -1714,7 +1714,7 @@ class MikrotikControllerData:
"""Get DHCP data from Mikrotik""" """Get DHCP data from Mikrotik"""
self.data["dhcp"] = parse_api( self.data["dhcp"] = parse_api(
data=self.data["dhcp"], data=self.data["dhcp"],
source=self.api.path("/ip/dhcp-server/lease"), source=self.api.query("/ip/dhcp-server/lease"),
key="mac-address", key="mac-address",
vals=[ vals=[
{"name": "mac-address"}, {"name": "mac-address"},
@ -1784,7 +1784,7 @@ class MikrotikControllerData:
"""Get DHCP server data from Mikrotik""" """Get DHCP server data from Mikrotik"""
self.data["dhcp-server"] = parse_api( self.data["dhcp-server"] = parse_api(
data=self.data["dhcp-server"], data=self.data["dhcp-server"],
source=self.api.path("/ip/dhcp-server"), source=self.api.query("/ip/dhcp-server"),
key="name", key="name",
vals=[{"name": "name"}, {"name": "interface", "default": "unknown"}], vals=[{"name": "name"}, {"name": "interface", "default": "unknown"}],
) )
@ -1796,7 +1796,7 @@ class MikrotikControllerData:
"""Get DHCP network data from Mikrotik""" """Get DHCP network data from Mikrotik"""
self.data["dhcp-network"] = parse_api( self.data["dhcp-network"] = parse_api(
data=self.data["dhcp-network"], data=self.data["dhcp-network"],
source=self.api.path("/ip/dhcp-server/network"), source=self.api.query("/ip/dhcp-server/network"),
key="address", key="address",
vals=[ vals=[
{"name": "address"}, {"name": "address"},
@ -1821,7 +1821,7 @@ class MikrotikControllerData:
"""Get CAPS-MAN hosts data from Mikrotik""" """Get CAPS-MAN hosts data from Mikrotik"""
self.data["capsman_hosts"] = parse_api( self.data["capsman_hosts"] = parse_api(
data={}, data={},
source=self.api.path("/caps-man/registration-table"), source=self.api.query("/caps-man/registration-table"),
key="mac-address", key="mac-address",
vals=[ vals=[
{"name": "mac-address"}, {"name": "mac-address"},
@ -1838,7 +1838,7 @@ class MikrotikControllerData:
wifimodule = "wifiwave2" if self.support_wifiwave2 else "wireless" wifimodule = "wifiwave2" if self.support_wifiwave2 else "wireless"
self.data["wireless_hosts"] = parse_api( self.data["wireless_hosts"] = parse_api(
data={}, data={},
source=self.api.path(f"/interface/{wifimodule}/registration-table"), source=self.api.query(f"/interface/{wifimodule}/registration-table"),
key="mac-address", key="mac-address",
vals=[ vals=[
{"name": "mac-address"}, {"name": "mac-address"},
@ -2097,7 +2097,7 @@ class MikrotikControllerData:
if time_diff: if time_diff:
accounting_data = parse_api( accounting_data = parse_api(
data={}, data={},
source=self.api.path("/ip/accounting/snapshot"), source=self.api.query("/ip/accounting/snapshot"),
key=".id", key=".id",
vals=[ vals=[
{"name": ".id"}, {"name": ".id"},
@ -2107,7 +2107,7 @@ class MikrotikControllerData:
], ],
) )
threshold = self.api.path("/ip/accounting")[0].get("threshold") threshold = self.api.query("/ip/accounting")[0].get("threshold")
entry_count = len(accounting_data) entry_count = len(accounting_data)
if entry_count == threshold: if entry_count == threshold:
@ -2277,7 +2277,7 @@ class MikrotikControllerData:
kid_control_devices_data = parse_api( kid_control_devices_data = parse_api(
data={}, data={},
source=self.api.path("/ip/kid-control/device"), source=self.api.query("/ip/kid-control/device"),
key="mac-address", key="mac-address",
vals=[ vals=[
{"name": "mac-address"}, {"name": "mac-address"},

View file

@ -175,9 +175,9 @@ class MikrotikAPI:
return self._connected return self._connected
# --------------------------- # ---------------------------
# path # query
# --------------------------- # ---------------------------
def path(self, path, command=None, args=None, return_list=True) -> Optional(list): def query(self, path, command=None, args=None, return_list=True) -> Optional(list):
"""Retrieve data from Mikrotik API.""" """Retrieve data from Mikrotik API."""
"""Returns generator object, unless return_list passed as True""" """Returns generator object, unless return_list passed as True"""
if args is None: if args is None:
@ -215,16 +215,16 @@ class MikrotikAPI:
return response or None return response or None
# --------------------------- # ---------------------------
# update # set_value
# --------------------------- # ---------------------------
def update(self, path, param, value, mod_param, mod_value) -> bool: def set_value(self, path, param, value, mod_param, mod_value) -> bool:
"""Modify a parameter""" """Modify a parameter"""
entry_found = None entry_found = None
if not self.connection_check(): if not self.connection_check():
return False return False
response = self.path(path, return_list=False) response = self.query(path, return_list=False)
if response is None: if response is None:
return False return False
@ -239,7 +239,7 @@ class MikrotikAPI:
if not entry_found: if not entry_found:
_LOGGER.error( _LOGGER.error(
"Mikrotik %s Update parameter %s with value %s not found", "Mikrotik %s set_value parameter %s with value %s not found",
self._host, self._host,
param, param,
value, value,
@ -251,7 +251,7 @@ class MikrotikAPI:
try: try:
response.update(**params) response.update(**params)
except Exception as e: except Exception as e:
self.disconnect("update", e) self.disconnect("set_value", e)
self.lock.release() self.lock.release()
return False return False
@ -269,7 +269,7 @@ class MikrotikAPI:
if not self.connection_check(): if not self.connection_check():
return False return False
response = self.path(path, return_list=False) response = self.query(path, return_list=False)
if response is None: if response is None:
return False return False
@ -315,7 +315,7 @@ class MikrotikAPI:
if not self.connection_check(): if not self.connection_check():
return False return False
response = self.path("/system/script", return_list=False) response = self.query("/system/script", return_list=False)
if response is None: if response is None:
return False return False
@ -352,7 +352,7 @@ class MikrotikAPI:
if not self.connection_check(): if not self.connection_check():
return False return False
response = self.path("/ping", return_list=False) response = self.query("/ping", return_list=False)
if response is None: if response is None:
return False return False
@ -401,7 +401,7 @@ class MikrotikAPI:
if not self.connection_check(): if not self.connection_check():
return False, False return False, False
response = self.path("/ip/accounting") response = self.query("/ip/accounting")
if response is None: if response is None:
return False, False return False, False
@ -429,7 +429,7 @@ class MikrotikAPI:
return 0 return 0
if use_accounting: if use_accounting:
accounting = self.path("/ip/accounting", return_list=False) accounting = self.query("/ip/accounting", return_list=False)
self.lock.acquire() self.lock.acquire()
try: try: