mirror of
https://github.com/home-assistant/core.git
synced 2025-05-05 14:39:16 +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")
|
raise HomeAssistantError("Invalid dataset")
|
||||||
|
|
||||||
# Bail out if the dataset already exists
|
# Bail out if the dataset already exists
|
||||||
if any(entry for entry in self.datasets.values() if entry.dataset == dataset):
|
entry: DatasetEntry | None
|
||||||
return
|
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
|
# Update if dataset with same extended pan id exists and the timestamp
|
||||||
# is newer
|
# is newer
|
||||||
@ -248,6 +257,10 @@ class DatasetStore:
|
|||||||
self.datasets[entry.id], tlv=tlv
|
self.datasets[entry.id], tlv=tlv
|
||||||
)
|
)
|
||||||
self.async_schedule_save()
|
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
|
return
|
||||||
|
|
||||||
entry = DatasetEntry(
|
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
|
assert await dataset_store.async_get_preferred_dataset(hass) is None
|
||||||
|
|
||||||
await dataset_store.async_add_dataset(
|
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)
|
store = await dataset_store.async_get_store(hass)
|
||||||
assert len(store.datasets) == 1
|
assert len(store.datasets) == 1
|
||||||
assert list(store.datasets.values())[0].preferred_border_agent_id == "blah"
|
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