mirror of
https://github.com/home-assistant/core.git
synced 2025-07-24 21:57:51 +00:00
Add systemmonitor check for mandatory "arg" of sensors (#39687)
* Added check for mandatory "arg" of sensors * Make pylint happy * Moved to vol validator function for "arg" checks * Make pylint happy once again * Adjustments from code review
This commit is contained in:
parent
90892d275c
commit
8185ddf9a1
@ -35,43 +35,78 @@ if sys.maxsize > 2 ** 32:
|
|||||||
else:
|
else:
|
||||||
CPU_ICON = "mdi:cpu-32-bit"
|
CPU_ICON = "mdi:cpu-32-bit"
|
||||||
|
|
||||||
|
# Schema: [name, unit of measurement, icon, device class, flag if mandatory arg]
|
||||||
SENSOR_TYPES = {
|
SENSOR_TYPES = {
|
||||||
"disk_free": ["Disk free", DATA_GIBIBYTES, "mdi:harddisk", None],
|
"disk_free": ["Disk free", DATA_GIBIBYTES, "mdi:harddisk", None, False],
|
||||||
"disk_use": ["Disk use", DATA_GIBIBYTES, "mdi:harddisk", None],
|
"disk_use": ["Disk use", DATA_GIBIBYTES, "mdi:harddisk", None, False],
|
||||||
"disk_use_percent": ["Disk use (percent)", PERCENTAGE, "mdi:harddisk", None],
|
"disk_use_percent": [
|
||||||
"ipv4_address": ["IPv4 address", "", "mdi:server-network", None],
|
"Disk use (percent)",
|
||||||
"ipv6_address": ["IPv6 address", "", "mdi:server-network", None],
|
PERCENTAGE,
|
||||||
"last_boot": ["Last boot", "", "mdi:clock", "timestamp"],
|
"mdi:harddisk",
|
||||||
"load_15m": ["Load (15m)", " ", "mdi:memory", None],
|
None,
|
||||||
"load_1m": ["Load (1m)", " ", "mdi:memory", None],
|
False,
|
||||||
"load_5m": ["Load (5m)", " ", "mdi:memory", None],
|
],
|
||||||
"memory_free": ["Memory free", DATA_MEBIBYTES, "mdi:memory", None],
|
"ipv4_address": ["IPv4 address", "", "mdi:server-network", None, True],
|
||||||
"memory_use": ["Memory use", DATA_MEBIBYTES, "mdi:memory", None],
|
"ipv6_address": ["IPv6 address", "", "mdi:server-network", None, True],
|
||||||
"memory_use_percent": ["Memory use (percent)", PERCENTAGE, "mdi:memory", None],
|
"last_boot": ["Last boot", "", "mdi:clock", "timestamp", False],
|
||||||
"network_in": ["Network in", DATA_MEBIBYTES, "mdi:server-network", None],
|
"load_15m": ["Load (15m)", " ", CPU_ICON, None, False],
|
||||||
"network_out": ["Network out", DATA_MEBIBYTES, "mdi:server-network", None],
|
"load_1m": ["Load (1m)", " ", CPU_ICON, None, False],
|
||||||
"packets_in": ["Packets in", " ", "mdi:server-network", None],
|
"load_5m": ["Load (5m)", " ", CPU_ICON, None, False],
|
||||||
"packets_out": ["Packets out", " ", "mdi:server-network", None],
|
"memory_free": ["Memory free", DATA_MEBIBYTES, "mdi:memory", None, False],
|
||||||
|
"memory_use": ["Memory use", DATA_MEBIBYTES, "mdi:memory", None, False],
|
||||||
|
"memory_use_percent": [
|
||||||
|
"Memory use (percent)",
|
||||||
|
PERCENTAGE,
|
||||||
|
"mdi:memory",
|
||||||
|
None,
|
||||||
|
False,
|
||||||
|
],
|
||||||
|
"network_in": ["Network in", DATA_MEBIBYTES, "mdi:server-network", None, True],
|
||||||
|
"network_out": ["Network out", DATA_MEBIBYTES, "mdi:server-network", None, True],
|
||||||
|
"packets_in": ["Packets in", " ", "mdi:server-network", None, True],
|
||||||
|
"packets_out": ["Packets out", " ", "mdi:server-network", None, True],
|
||||||
"throughput_network_in": [
|
"throughput_network_in": [
|
||||||
"Network throughput in",
|
"Network throughput in",
|
||||||
DATA_RATE_MEGABYTES_PER_SECOND,
|
DATA_RATE_MEGABYTES_PER_SECOND,
|
||||||
"mdi:server-network",
|
"mdi:server-network",
|
||||||
None,
|
None,
|
||||||
|
True,
|
||||||
],
|
],
|
||||||
"throughput_network_out": [
|
"throughput_network_out": [
|
||||||
"Network throughput out",
|
"Network throughput out",
|
||||||
DATA_RATE_MEGABYTES_PER_SECOND,
|
DATA_RATE_MEGABYTES_PER_SECOND,
|
||||||
"mdi:server-network",
|
"mdi:server-network",
|
||||||
None,
|
True,
|
||||||
],
|
],
|
||||||
"process": ["Process", " ", CPU_ICON, None],
|
"process": ["Process", " ", CPU_ICON, None, True],
|
||||||
"processor_use": ["Processor use", PERCENTAGE, CPU_ICON, None],
|
"processor_use": ["Processor use", PERCENTAGE, CPU_ICON, None, False],
|
||||||
"processor_temperature": ["Processor temperature", TEMP_CELSIUS, CPU_ICON, None],
|
"processor_temperature": [
|
||||||
"swap_free": ["Swap free", DATA_MEBIBYTES, "mdi:harddisk", None],
|
"Processor temperature",
|
||||||
"swap_use": ["Swap use", DATA_MEBIBYTES, "mdi:harddisk", None],
|
TEMP_CELSIUS,
|
||||||
"swap_use_percent": ["Swap use (percent)", PERCENTAGE, "mdi:harddisk", None],
|
CPU_ICON,
|
||||||
|
None,
|
||||||
|
False,
|
||||||
|
],
|
||||||
|
"swap_free": ["Swap free", DATA_MEBIBYTES, "mdi:harddisk", None, True],
|
||||||
|
"swap_use": ["Swap use", DATA_MEBIBYTES, "mdi:harddisk", None, False],
|
||||||
|
"swap_use_percent": ["Swap use (percent)", PERCENTAGE, "mdi:harddisk", None, False],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def check_required_arg(value):
|
||||||
|
"""Validate that the required "arg" for the sensor types that need it are set."""
|
||||||
|
for sensor in value:
|
||||||
|
sensor_type = sensor[CONF_TYPE]
|
||||||
|
sensor_arg = sensor.get(CONF_ARG)
|
||||||
|
|
||||||
|
if sensor_arg is None and SENSOR_TYPES[sensor_type][4]:
|
||||||
|
raise vol.RequiredFieldInvalid(
|
||||||
|
f"Mandatory 'arg' is missing for sensor type '{sensor_type}'."
|
||||||
|
)
|
||||||
|
|
||||||
|
return value
|
||||||
|
|
||||||
|
|
||||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
|
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
|
||||||
{
|
{
|
||||||
vol.Optional(CONF_RESOURCES, default={CONF_TYPE: "disk_use"}): vol.All(
|
vol.Optional(CONF_RESOURCES, default={CONF_TYPE: "disk_use"}): vol.All(
|
||||||
@ -84,6 +119,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
|
check_required_arg,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user