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