mirror of
https://github.com/home-assistant/core.git
synced 2025-04-25 17:57:55 +00:00
Set thread dataset's preferred router on add if not set (#98639)
This commit is contained in:
parent
07fb47b849
commit
4a03f6482a
@ -202,8 +202,17 @@ class DatasetStore:
|
||||
raise HomeAssistantError("Invalid dataset")
|
||||
|
||||
# Bail out if the dataset already exists
|
||||
if any(entry for entry in self.datasets.values() if entry.dataset == dataset):
|
||||
return
|
||||
entry: DatasetEntry | None
|
||||
for entry in self.datasets.values():
|
||||
if entry.dataset == dataset:
|
||||
if (
|
||||
preferred_border_agent_id
|
||||
and entry.preferred_border_agent_id is None
|
||||
):
|
||||
self.async_set_preferred_border_agent_id(
|
||||
entry.id, preferred_border_agent_id
|
||||
)
|
||||
return
|
||||
|
||||
# Update if dataset with same extended pan id exists and the timestamp
|
||||
# is newer
|
||||
@ -248,6 +257,10 @@ class DatasetStore:
|
||||
self.datasets[entry.id], tlv=tlv
|
||||
)
|
||||
self.async_schedule_save()
|
||||
if preferred_border_agent_id and entry.preferred_border_agent_id is None:
|
||||
self.async_set_preferred_border_agent_id(
|
||||
entry.id, preferred_border_agent_id
|
||||
)
|
||||
return
|
||||
|
||||
entry = DatasetEntry(
|
||||
|
@ -546,9 +546,32 @@ async def test_set_preferred_border_agent_id(hass: HomeAssistant) -> None:
|
||||
assert await dataset_store.async_get_preferred_dataset(hass) is None
|
||||
|
||||
await dataset_store.async_add_dataset(
|
||||
hass, "source", DATASET_1, preferred_border_agent_id="blah"
|
||||
hass, "source", DATASET_3, preferred_border_agent_id="blah"
|
||||
)
|
||||
|
||||
store = await dataset_store.async_get_store(hass)
|
||||
assert len(store.datasets) == 1
|
||||
assert list(store.datasets.values())[0].preferred_border_agent_id == "blah"
|
||||
|
||||
await dataset_store.async_add_dataset(
|
||||
hass, "source", DATASET_3, preferred_border_agent_id="bleh"
|
||||
)
|
||||
assert list(store.datasets.values())[0].preferred_border_agent_id == "blah"
|
||||
|
||||
await dataset_store.async_add_dataset(hass, "source", DATASET_2)
|
||||
assert len(store.datasets) == 2
|
||||
assert list(store.datasets.values())[1].preferred_border_agent_id is None
|
||||
|
||||
await dataset_store.async_add_dataset(
|
||||
hass, "source", DATASET_2, preferred_border_agent_id="blah"
|
||||
)
|
||||
assert list(store.datasets.values())[1].preferred_border_agent_id == "blah"
|
||||
|
||||
await dataset_store.async_add_dataset(hass, "source", DATASET_1)
|
||||
assert len(store.datasets) == 3
|
||||
assert list(store.datasets.values())[2].preferred_border_agent_id is None
|
||||
|
||||
await dataset_store.async_add_dataset(
|
||||
hass, "source", DATASET_1_LARGER_TIMESTAMP, preferred_border_agent_id="blah"
|
||||
)
|
||||
assert list(store.datasets.values())[1].preferred_border_agent_id == "blah"
|
||||
|
Loading…
x
Reference in New Issue
Block a user