Add default_* to device registry (#38829)
This commit is contained in:
parent
a6cec21c43
commit
b3571602bb
5 changed files with 59 additions and 5 deletions
|
@ -12,7 +12,7 @@ from homeassistant.helpers.device_registry import CONNECTION_NETWORK_MAC
|
||||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
||||||
import homeassistant.util.dt as dt_util
|
import homeassistant.util.dt as dt_util
|
||||||
|
|
||||||
from .const import ATTR_MANUFACTURER, DOMAIN
|
from .const import DOMAIN
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@ -115,10 +115,10 @@ class MikrotikHubTracker(ScannerEntity):
|
||||||
"""Return a client description for device registry."""
|
"""Return a client description for device registry."""
|
||||||
info = {
|
info = {
|
||||||
"connections": {(CONNECTION_NETWORK_MAC, self.device.mac)},
|
"connections": {(CONNECTION_NETWORK_MAC, self.device.mac)},
|
||||||
"manufacturer": ATTR_MANUFACTURER,
|
|
||||||
"identifiers": {(DOMAIN, self.device.mac)},
|
"identifiers": {(DOMAIN, self.device.mac)},
|
||||||
"name": self.name,
|
# We only get generic info from device discovery and so don't want
|
||||||
"via_device": (DOMAIN, self.hub.serial_num),
|
# to override API specific info that integrations can provide
|
||||||
|
"default_name": self.name,
|
||||||
}
|
}
|
||||||
return info
|
return info
|
||||||
|
|
||||||
|
|
|
@ -209,6 +209,9 @@ class DeviceRegistry:
|
||||||
manufacturer=_UNDEF,
|
manufacturer=_UNDEF,
|
||||||
model=_UNDEF,
|
model=_UNDEF,
|
||||||
name=_UNDEF,
|
name=_UNDEF,
|
||||||
|
default_manufacturer=_UNDEF,
|
||||||
|
default_model=_UNDEF,
|
||||||
|
default_name=_UNDEF,
|
||||||
sw_version=_UNDEF,
|
sw_version=_UNDEF,
|
||||||
entry_type=_UNDEF,
|
entry_type=_UNDEF,
|
||||||
via_device=None,
|
via_device=None,
|
||||||
|
@ -236,6 +239,16 @@ class DeviceRegistry:
|
||||||
device = deleted_device.to_device_entry()
|
device = deleted_device.to_device_entry()
|
||||||
self._add_device(device)
|
self._add_device(device)
|
||||||
|
|
||||||
|
else:
|
||||||
|
if default_manufacturer and not device.manufacturer:
|
||||||
|
manufacturer = default_manufacturer
|
||||||
|
|
||||||
|
if default_model and not device.model:
|
||||||
|
model = default_model
|
||||||
|
|
||||||
|
if default_name and not device.name:
|
||||||
|
name = default_name
|
||||||
|
|
||||||
if via_device is not None:
|
if via_device is not None:
|
||||||
via = self.async_get_device({via_device}, set())
|
via = self.async_get_device({via_device}, set())
|
||||||
via_device_id = via.id if via else _UNDEF
|
via_device_id = via.id if via else _UNDEF
|
||||||
|
|
|
@ -378,6 +378,9 @@ class EntityPlatform:
|
||||||
"manufacturer",
|
"manufacturer",
|
||||||
"model",
|
"model",
|
||||||
"name",
|
"name",
|
||||||
|
"default_manufacturer",
|
||||||
|
"default_model",
|
||||||
|
"default_name",
|
||||||
"sw_version",
|
"sw_version",
|
||||||
"entry_type",
|
"entry_type",
|
||||||
"via_device",
|
"via_device",
|
||||||
|
|
|
@ -839,3 +839,35 @@ async def test_restore_simple_device(hass, registry, update_events):
|
||||||
assert update_events[2]["device_id"] == entry2.id
|
assert update_events[2]["device_id"] == entry2.id
|
||||||
assert update_events[3]["action"] == "create"
|
assert update_events[3]["action"] == "create"
|
||||||
assert update_events[3]["device_id"] == entry3.id
|
assert update_events[3]["device_id"] == entry3.id
|
||||||
|
|
||||||
|
|
||||||
|
async def test_get_or_create_sets_default_values(hass, registry):
|
||||||
|
"""Make sure we do not duplicate entries."""
|
||||||
|
entry = registry.async_get_or_create(
|
||||||
|
identifiers={("bridgeid", "0123")}, config_entry_id="1234"
|
||||||
|
)
|
||||||
|
assert entry.name is None
|
||||||
|
assert entry.model is None
|
||||||
|
assert entry.manufacturer is None
|
||||||
|
|
||||||
|
entry = registry.async_get_or_create(
|
||||||
|
config_entry_id="1234",
|
||||||
|
identifiers={("bridgeid", "0123")},
|
||||||
|
default_name="default name 1",
|
||||||
|
default_model="default model 1",
|
||||||
|
default_manufacturer="default manufacturer 1",
|
||||||
|
)
|
||||||
|
assert entry.name == "default name 1"
|
||||||
|
assert entry.model == "default model 1"
|
||||||
|
assert entry.manufacturer == "default manufacturer 1"
|
||||||
|
|
||||||
|
entry = registry.async_get_or_create(
|
||||||
|
config_entry_id="1234",
|
||||||
|
identifiers={("bridgeid", "0123")},
|
||||||
|
default_name="default name 2",
|
||||||
|
default_model="default model 2",
|
||||||
|
default_manufacturer="default manufacturer 2",
|
||||||
|
)
|
||||||
|
assert entry.name == "default name 1"
|
||||||
|
assert entry.model == "default model 1"
|
||||||
|
assert entry.manufacturer == "default manufacturer 1"
|
||||||
|
|
|
@ -777,7 +777,13 @@ async def test_device_info_not_overrides(hass):
|
||||||
async_add_entities(
|
async_add_entities(
|
||||||
[
|
[
|
||||||
MockEntity(
|
MockEntity(
|
||||||
unique_id="qwer", device_info={"connections": {("mac", "abcd")}}
|
unique_id="qwer",
|
||||||
|
device_info={
|
||||||
|
"connections": {("mac", "abcd")},
|
||||||
|
"default_name": "default name 1",
|
||||||
|
"default_model": "default model 1",
|
||||||
|
"default_manufacturer": "default manufacturer 1",
|
||||||
|
},
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue