From 0fec78ea752cb8236affbf27e6fe3d0e07430832 Mon Sep 17 00:00:00 2001 From: Erik Date: Thu, 3 Oct 2024 12:39:07 +0200 Subject: [PATCH] Don't allow adding a config entry with colliding unique_id --- homeassistant/config_entries.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/homeassistant/config_entries.py b/homeassistant/config_entries.py index 0d4cc5fd102..886db5e30f0 100644 --- a/homeassistant/config_entries.py +++ b/homeassistant/config_entries.py @@ -1680,9 +1680,12 @@ class ConfigEntryItems(UserDict[str, ConfigEntry]): self.check_unique_id(entry) self._domain_index.setdefault(entry.domain, []).append(entry) if entry.unique_id is not None: - self._domain_unique_id_index.setdefault(entry.domain, {}).setdefault( - entry.unique_id, [] - ).append(entry) + domain_entries = self._domain_unique_id_index.setdefault(entry.domain, {}) + if entry.unique_id in domain_entries: + raise ValueError( + f"{entry.domain} config entry with unique id {entry.unique_id} already exists" + ) + domain_entries.setdefault(entry.unique_id, []).append(entry) def _unindex_entry(self, entry_id: str) -> None: """Unindex an entry."""