Reolink migrate unique ID debugging (#142723)

* Filter out unexpected unique_ids

* correct

* Add test

* fix styling
This commit is contained in:
starkillerOG 2025-04-11 11:42:18 +02:00 committed by Franck Nijhof
parent fd2987a9fd
commit 7696b101f6
No known key found for this signature in database
GPG Key ID: D62583BA8AB11CA3
2 changed files with 21 additions and 2 deletions

View File

@ -420,6 +420,14 @@ def migrate_entity_ids(
if entity.device_id in ch_device_ids:
ch = ch_device_ids[entity.device_id]
id_parts = entity.unique_id.split("_", 2)
if len(id_parts) < 3:
_LOGGER.warning(
"Reolink channel %s entity has unexpected unique_id format %s, with device id %s",
ch,
entity.unique_id,
entity.device_id,
)
continue
if host.api.supported(ch, "UID") and id_parts[1] != host.api.camera_uid(ch):
new_id = f"{host.unique_id}_{host.api.camera_uid(ch)}_{id_parts[2]}"
existing_entity = entity_reg.async_get_entity_id(

View File

@ -424,6 +424,15 @@ async def test_removing_chime(
True,
True,
),
(
f"{TEST_UID}_unexpected",
f"{TEST_UID}_unexpected",
f"{TEST_UID}_{TEST_UID_CAM}",
f"{TEST_UID}_{TEST_UID_CAM}",
Platform.SWITCH,
True,
True,
),
],
)
async def test_migrate_entity_ids(
@ -469,7 +478,8 @@ async def test_migrate_entity_ids(
)
assert entity_registry.async_get_entity_id(domain, DOMAIN, original_id)
assert entity_registry.async_get_entity_id(domain, DOMAIN, new_id) is None
if original_id != new_id:
assert entity_registry.async_get_entity_id(domain, DOMAIN, new_id) is None
assert device_registry.async_get_device(identifiers={(DOMAIN, original_dev_id)})
if new_dev_id != original_dev_id:
@ -482,7 +492,8 @@ async def test_migrate_entity_ids(
assert await hass.config_entries.async_setup(config_entry.entry_id)
await hass.async_block_till_done()
assert entity_registry.async_get_entity_id(domain, DOMAIN, original_id) is None
if original_id != new_id:
assert entity_registry.async_get_entity_id(domain, DOMAIN, original_id) is None
assert entity_registry.async_get_entity_id(domain, DOMAIN, new_id)
if new_dev_id != original_dev_id: