mirror of
https://github.com/home-assistant/core.git
synced 2025-04-23 16:57:53 +00:00
Refactor hardware.async_info to return list[HardwareInfo] (#77183)
This commit is contained in:
parent
0154a1cecb
commit
067d21a307
@ -17,7 +17,7 @@ BOARD_NAMES = {
|
||||
|
||||
|
||||
@callback
|
||||
def async_info(hass: HomeAssistant) -> HardwareInfo:
|
||||
def async_info(hass: HomeAssistant) -> list[HardwareInfo]:
|
||||
"""Return board info."""
|
||||
if (os_info := get_os_info(hass)) is None:
|
||||
raise HomeAssistantError
|
||||
@ -27,14 +27,16 @@ def async_info(hass: HomeAssistant) -> HardwareInfo:
|
||||
if not board.startswith("odroid"):
|
||||
raise HomeAssistantError
|
||||
|
||||
return HardwareInfo(
|
||||
board=BoardInfo(
|
||||
hassio_board_id=board,
|
||||
manufacturer=DOMAIN,
|
||||
model=board,
|
||||
revision=None,
|
||||
),
|
||||
dongles=None,
|
||||
name=BOARD_NAMES.get(board, f"Unknown hardkernel Odroid model '{board}'"),
|
||||
url=None,
|
||||
)
|
||||
return [
|
||||
HardwareInfo(
|
||||
board=BoardInfo(
|
||||
hassio_board_id=board,
|
||||
manufacturer=DOMAIN,
|
||||
model=board,
|
||||
revision=None,
|
||||
),
|
||||
dongle=None,
|
||||
name=BOARD_NAMES.get(board, f"Unknown hardkernel Odroid model '{board}'"),
|
||||
url=None,
|
||||
)
|
||||
]
|
||||
|
@ -34,7 +34,7 @@ class HardwareInfo:
|
||||
|
||||
name: str | None
|
||||
board: BoardInfo | None
|
||||
dongles: list[USBInfo] | None
|
||||
dongle: USBInfo | None
|
||||
url: str | None
|
||||
|
||||
|
||||
@ -42,5 +42,5 @@ class HardwareProtocol(Protocol):
|
||||
"""Define the format of hardware platforms."""
|
||||
|
||||
@callback
|
||||
def async_info(self, hass: HomeAssistant) -> HardwareInfo:
|
||||
def async_info(self, hass: HomeAssistant) -> list[HardwareInfo]:
|
||||
"""Return info."""
|
||||
|
@ -42,6 +42,6 @@ async def ws_info(
|
||||
for platform in hardware_platform.values():
|
||||
if hasattr(platform, "async_info"):
|
||||
with contextlib.suppress(HomeAssistantError):
|
||||
hardware_info.append(asdict(platform.async_info(hass)))
|
||||
hardware_info.extend([asdict(hw) for hw in platform.async_info(hass)])
|
||||
|
||||
connection.send_result(msg["id"], {"hardware": hardware_info})
|
||||
|
@ -10,24 +10,22 @@ DONGLE_NAME = "Home Assistant Sky Connect"
|
||||
|
||||
|
||||
@callback
|
||||
def async_info(hass: HomeAssistant) -> HardwareInfo:
|
||||
def async_info(hass: HomeAssistant) -> list[HardwareInfo]:
|
||||
"""Return board info."""
|
||||
entries = hass.config_entries.async_entries(DOMAIN)
|
||||
|
||||
dongles = [
|
||||
USBInfo(
|
||||
vid=entry.data["vid"],
|
||||
pid=entry.data["pid"],
|
||||
serial_number=entry.data["serial_number"],
|
||||
manufacturer=entry.data["manufacturer"],
|
||||
description=entry.data["description"],
|
||||
return [
|
||||
HardwareInfo(
|
||||
board=None,
|
||||
dongle=USBInfo(
|
||||
vid=entry.data["vid"],
|
||||
pid=entry.data["pid"],
|
||||
serial_number=entry.data["serial_number"],
|
||||
manufacturer=entry.data["manufacturer"],
|
||||
description=entry.data["description"],
|
||||
),
|
||||
name=DONGLE_NAME,
|
||||
url=None,
|
||||
)
|
||||
for entry in entries
|
||||
]
|
||||
|
||||
return HardwareInfo(
|
||||
board=None,
|
||||
dongles=dongles,
|
||||
name=DONGLE_NAME,
|
||||
url=None,
|
||||
)
|
||||
|
@ -12,7 +12,7 @@ MODEL = "yellow"
|
||||
|
||||
|
||||
@callback
|
||||
def async_info(hass: HomeAssistant) -> HardwareInfo:
|
||||
def async_info(hass: HomeAssistant) -> list[HardwareInfo]:
|
||||
"""Return board info."""
|
||||
if (os_info := get_os_info(hass)) is None:
|
||||
raise HomeAssistantError
|
||||
@ -22,14 +22,16 @@ def async_info(hass: HomeAssistant) -> HardwareInfo:
|
||||
if not board == "yellow":
|
||||
raise HomeAssistantError
|
||||
|
||||
return HardwareInfo(
|
||||
board=BoardInfo(
|
||||
hassio_board_id=board,
|
||||
manufacturer=MANUFACTURER,
|
||||
model=MODEL,
|
||||
revision=None,
|
||||
),
|
||||
dongles=None,
|
||||
name=BOARD_NAME,
|
||||
url=None,
|
||||
)
|
||||
return [
|
||||
HardwareInfo(
|
||||
board=BoardInfo(
|
||||
hassio_board_id=board,
|
||||
manufacturer=MANUFACTURER,
|
||||
model=MODEL,
|
||||
revision=None,
|
||||
),
|
||||
dongle=None,
|
||||
name=BOARD_NAME,
|
||||
url=None,
|
||||
)
|
||||
]
|
||||
|
@ -32,7 +32,7 @@ MODELS = {
|
||||
|
||||
|
||||
@callback
|
||||
def async_info(hass: HomeAssistant) -> HardwareInfo:
|
||||
def async_info(hass: HomeAssistant) -> list[HardwareInfo]:
|
||||
"""Return board info."""
|
||||
if (os_info := get_os_info(hass)) is None:
|
||||
raise HomeAssistantError
|
||||
@ -42,14 +42,16 @@ def async_info(hass: HomeAssistant) -> HardwareInfo:
|
||||
if not board.startswith("rpi"):
|
||||
raise HomeAssistantError
|
||||
|
||||
return HardwareInfo(
|
||||
board=BoardInfo(
|
||||
hassio_board_id=board,
|
||||
manufacturer=DOMAIN,
|
||||
model=MODELS.get(board),
|
||||
revision=None,
|
||||
),
|
||||
dongles=None,
|
||||
name=BOARD_NAMES.get(board, f"Unknown Raspberry Pi model '{board}'"),
|
||||
url=None,
|
||||
)
|
||||
return [
|
||||
HardwareInfo(
|
||||
board=BoardInfo(
|
||||
hassio_board_id=board,
|
||||
manufacturer=DOMAIN,
|
||||
model=MODELS.get(board),
|
||||
revision=None,
|
||||
),
|
||||
dongle=None,
|
||||
name=BOARD_NAMES.get(board, f"Unknown Raspberry Pi model '{board}'"),
|
||||
url=None,
|
||||
)
|
||||
]
|
||||
|
@ -48,7 +48,7 @@ async def test_hardware_info(hass: HomeAssistant, hass_ws_client) -> None:
|
||||
"model": "odroid-n2",
|
||||
"revision": None,
|
||||
},
|
||||
"dongles": None,
|
||||
"dongle": None,
|
||||
"name": "Home Assistant Blue / Hardkernel Odroid-N2",
|
||||
"url": None,
|
||||
}
|
||||
|
@ -62,24 +62,27 @@ async def test_hardware_info(hass: HomeAssistant, hass_ws_client) -> None:
|
||||
"hardware": [
|
||||
{
|
||||
"board": None,
|
||||
"dongles": [
|
||||
{
|
||||
"vid": "bla_vid",
|
||||
"pid": "bla_pid",
|
||||
"serial_number": "bla_serial_number",
|
||||
"manufacturer": "bla_manufacturer",
|
||||
"description": "bla_description",
|
||||
},
|
||||
{
|
||||
"vid": "bla_vid_2",
|
||||
"pid": "bla_pid_2",
|
||||
"serial_number": "bla_serial_number_2",
|
||||
"manufacturer": "bla_manufacturer_2",
|
||||
"description": "bla_description_2",
|
||||
},
|
||||
],
|
||||
"dongle": {
|
||||
"vid": "bla_vid",
|
||||
"pid": "bla_pid",
|
||||
"serial_number": "bla_serial_number",
|
||||
"manufacturer": "bla_manufacturer",
|
||||
"description": "bla_description",
|
||||
},
|
||||
"name": "Home Assistant Sky Connect",
|
||||
"url": None,
|
||||
}
|
||||
},
|
||||
{
|
||||
"board": None,
|
||||
"dongle": {
|
||||
"vid": "bla_vid_2",
|
||||
"pid": "bla_pid_2",
|
||||
"serial_number": "bla_serial_number_2",
|
||||
"manufacturer": "bla_manufacturer_2",
|
||||
"description": "bla_description_2",
|
||||
},
|
||||
"name": "Home Assistant Sky Connect",
|
||||
"url": None,
|
||||
},
|
||||
]
|
||||
}
|
||||
|
@ -48,7 +48,7 @@ async def test_hardware_info(hass: HomeAssistant, hass_ws_client) -> None:
|
||||
"model": "yellow",
|
||||
"revision": None,
|
||||
},
|
||||
"dongles": None,
|
||||
"dongle": None,
|
||||
"name": "Home Assistant Yellow",
|
||||
"url": None,
|
||||
}
|
||||
|
@ -48,7 +48,7 @@ async def test_hardware_info(hass: HomeAssistant, hass_ws_client) -> None:
|
||||
"model": "1",
|
||||
"revision": None,
|
||||
},
|
||||
"dongles": None,
|
||||
"dongle": None,
|
||||
"name": "Raspberry Pi",
|
||||
"url": None,
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user