Add serial_number to device registry entries (#102334)

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
This commit is contained in:
Erik Montnemery 2023-10-22 15:14:44 +02:00 committed by GitHub
parent b3bd34a024
commit 1621310ba7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
34 changed files with 444 additions and 22 deletions

View file

@ -36,7 +36,7 @@ DATA_REGISTRY = "device_registry"
EVENT_DEVICE_REGISTRY_UPDATED = "device_registry_updated"
STORAGE_KEY = "core.device_registry"
STORAGE_VERSION_MAJOR = 1
STORAGE_VERSION_MINOR = 3
STORAGE_VERSION_MINOR = 4
SAVE_DELAY = 10
CLEANUP_DELAY = 10
@ -79,6 +79,7 @@ class DeviceInfo(TypedDict, total=False):
manufacturer: str | None
model: str | None
name: str | None
serial_number: str | None
suggested_area: str | None
sw_version: str | None
hw_version: str | None
@ -102,6 +103,7 @@ DEVICE_INFO_TYPES = {
"manufacturer",
"model",
"name",
"serial_number",
"suggested_area",
"sw_version",
"via_device",
@ -229,6 +231,7 @@ class DeviceEntry:
model: str | None = attr.ib(default=None)
name_by_user: str | None = attr.ib(default=None)
name: str | None = attr.ib(default=None)
serial_number: str | None = attr.ib(default=None)
suggested_area: str | None = attr.ib(default=None)
sw_version: str | None = attr.ib(default=None)
via_device_id: str | None = attr.ib(default=None)
@ -257,6 +260,7 @@ class DeviceEntry:
"model": self.model,
"name_by_user": self.name_by_user,
"name": self.name,
"serial_number": self.serial_number,
"sw_version": self.sw_version,
"via_device_id": self.via_device_id,
}
@ -359,6 +363,10 @@ class DeviceRegistryStore(storage.Store[dict[str, list[dict[str, Any]]]]):
# Version 1.3 adds hw_version
for device in old_data["devices"]:
device["hw_version"] = None
if old_minor_version < 4:
# Introduced in 2023.11
for device in old_data["devices"]:
device["serial_number"] = None
if old_major_version > 1:
raise NotImplementedError
@ -490,6 +498,7 @@ class DeviceRegistry:
manufacturer: str | None | UndefinedType = UNDEFINED,
model: str | None | UndefinedType = UNDEFINED,
name: str | None | UndefinedType = UNDEFINED,
serial_number: str | None | UndefinedType = UNDEFINED,
suggested_area: str | None | UndefinedType = UNDEFINED,
sw_version: str | None | UndefinedType = UNDEFINED,
via_device: tuple[str, str] | None | UndefinedType = UNDEFINED,
@ -514,6 +523,7 @@ class DeviceRegistry:
("manufacturer", manufacturer),
("model", model),
("name", name),
("serial_number", serial_number),
("suggested_area", suggested_area),
("sw_version", sw_version),
("via_device", via_device),
@ -591,6 +601,7 @@ class DeviceRegistry:
merge_identifiers=identifiers or UNDEFINED,
model=model,
name=name,
serial_number=serial_number,
suggested_area=suggested_area,
sw_version=sw_version,
via_device_id=via_device_id,
@ -620,6 +631,7 @@ class DeviceRegistry:
name: str | None | UndefinedType = UNDEFINED,
new_identifiers: set[tuple[str, str]] | UndefinedType = UNDEFINED,
remove_config_entry_id: str | UndefinedType = UNDEFINED,
serial_number: str | None | UndefinedType = UNDEFINED,
suggested_area: str | None | UndefinedType = UNDEFINED,
sw_version: str | None | UndefinedType = UNDEFINED,
via_device_id: str | None | UndefinedType = UNDEFINED,
@ -709,6 +721,7 @@ class DeviceRegistry:
("model", model),
("name", name),
("name_by_user", name_by_user),
("serial_number", serial_number),
("suggested_area", suggested_area),
("sw_version", sw_version),
("via_device_id", via_device_id),
@ -802,6 +815,7 @@ class DeviceRegistry:
model=device["model"],
name_by_user=device["name_by_user"],
name=device["name"],
serial_number=device["serial_number"],
sw_version=device["sw_version"],
via_device_id=device["via_device_id"],
)
@ -851,6 +865,7 @@ class DeviceRegistry:
"model": entry.model,
"name_by_user": entry.name_by_user,
"name": entry.name,
"serial_number": entry.serial_number,
"sw_version": entry.sw_version,
"via_device_id": entry.via_device_id,
}