mirror of
https://github.com/home-assistant/core.git
synced 2025-07-25 22:27:07 +00:00
Add system_health to the hassio pre-imports to avoid a late executor job (#112466)
* Add system_health to the hassio pre-imports to avoid a late executor job `2024-03-05 17:01:33.034 DEBUG (MainThread) [homeassistant.loader] Importing platforms for hassio executor=[system_health] loop=[] took 0.12s` This one does not take that much time but it happens at a time where the import executor is the most busy during startup * key * move patch as its too early now
This commit is contained in:
parent
e568f867d2
commit
aa216f0298
@ -43,10 +43,17 @@ from homeassistant.loader import bind_hass
|
|||||||
from homeassistant.util.async_ import create_eager_task
|
from homeassistant.util.async_ import create_eager_task
|
||||||
from homeassistant.util.dt import now
|
from homeassistant.util.dt import now
|
||||||
|
|
||||||
# config_flow, diagnostics, and entity platforms are imported to ensure
|
# config_flow, diagnostics, system_health, and entity platforms are imported to
|
||||||
# other dependencies that wait for hassio are not waiting
|
# ensure other dependencies that wait for hassio are not waiting
|
||||||
# for hassio to import its platforms
|
# for hassio to import its platforms
|
||||||
from . import binary_sensor, config_flow, diagnostics, sensor, update # noqa: F401
|
from . import ( # noqa: F401
|
||||||
|
binary_sensor,
|
||||||
|
config_flow,
|
||||||
|
diagnostics,
|
||||||
|
sensor,
|
||||||
|
system_health,
|
||||||
|
update,
|
||||||
|
)
|
||||||
from .addon_manager import AddonError, AddonInfo, AddonManager, AddonState # noqa: F401
|
from .addon_manager import AddonError, AddonInfo, AddonManager, AddonState # noqa: F401
|
||||||
from .addon_panel import async_setup_addon_panel
|
from .addon_panel import async_setup_addon_panel
|
||||||
from .auth import async_setup_auth_view
|
from .auth import async_setup_auth_view
|
||||||
|
@ -7,10 +7,10 @@ from typing import Any
|
|||||||
from homeassistant.components import system_health
|
from homeassistant.components import system_health
|
||||||
from homeassistant.core import HomeAssistant, callback
|
from homeassistant.core import HomeAssistant, callback
|
||||||
|
|
||||||
from . import get_host_info, get_info, get_os_info, get_supervisor_info
|
from .data import get_host_info, get_info, get_os_info, get_supervisor_info
|
||||||
|
|
||||||
SUPERVISOR_PING = f"http://{os.environ['SUPERVISOR']}/supervisor/ping"
|
SUPERVISOR_PING = "http://{ip_address}/supervisor/ping"
|
||||||
OBSERVER_URL = f"http://{os.environ['SUPERVISOR']}:4357"
|
OBSERVER_URL = "http://{ip_address}:4357"
|
||||||
|
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
@ -23,6 +23,7 @@ def async_register(
|
|||||||
|
|
||||||
async def system_health_info(hass: HomeAssistant) -> dict[str, Any]:
|
async def system_health_info(hass: HomeAssistant) -> dict[str, Any]:
|
||||||
"""Get info for the info page."""
|
"""Get info for the info page."""
|
||||||
|
ip_address = os.environ["SUPERVISOR"]
|
||||||
info = get_info(hass) or {}
|
info = get_info(hass) or {}
|
||||||
host_info = get_host_info(hass) or {}
|
host_info = get_host_info(hass) or {}
|
||||||
supervisor_info = get_supervisor_info(hass)
|
supervisor_info = get_supervisor_info(hass)
|
||||||
@ -62,7 +63,9 @@ async def system_health_info(hass: HomeAssistant) -> dict[str, Any]:
|
|||||||
information["board"] = os_info.get("board")
|
information["board"] = os_info.get("board")
|
||||||
|
|
||||||
information["supervisor_api"] = system_health.async_check_can_reach_url(
|
information["supervisor_api"] = system_health.async_check_can_reach_url(
|
||||||
hass, SUPERVISOR_PING, OBSERVER_URL
|
hass,
|
||||||
|
SUPERVISOR_PING.format(ip_address=ip_address),
|
||||||
|
OBSERVER_URL.format(ip_address=ip_address),
|
||||||
)
|
)
|
||||||
information["version_api"] = system_health.async_check_can_reach_url(
|
information["version_api"] = system_health.async_check_can_reach_url(
|
||||||
hass,
|
hass,
|
||||||
|
@ -28,8 +28,7 @@ async def test_hassio_system_health(
|
|||||||
)
|
)
|
||||||
|
|
||||||
hass.config.components.add("hassio")
|
hass.config.components.add("hassio")
|
||||||
with patch.dict(os.environ, MOCK_ENVIRON):
|
assert await async_setup_component(hass, "system_health", {})
|
||||||
assert await async_setup_component(hass, "system_health", {})
|
|
||||||
|
|
||||||
hass.data["hassio_info"] = {
|
hass.data["hassio_info"] = {
|
||||||
"channel": "stable",
|
"channel": "stable",
|
||||||
@ -50,7 +49,8 @@ async def test_hassio_system_health(
|
|||||||
"addons": [{"name": "Awesome Addon", "version": "1.0.0"}],
|
"addons": [{"name": "Awesome Addon", "version": "1.0.0"}],
|
||||||
}
|
}
|
||||||
|
|
||||||
info = await get_system_health_info(hass, "hassio")
|
with patch.dict(os.environ, MOCK_ENVIRON):
|
||||||
|
info = await get_system_health_info(hass, "hassio")
|
||||||
|
|
||||||
for key, val in info.items():
|
for key, val in info.items():
|
||||||
if asyncio.iscoroutine(val):
|
if asyncio.iscoroutine(val):
|
||||||
@ -87,8 +87,7 @@ async def test_hassio_system_health_with_issues(
|
|||||||
)
|
)
|
||||||
|
|
||||||
hass.config.components.add("hassio")
|
hass.config.components.add("hassio")
|
||||||
with patch.dict(os.environ, MOCK_ENVIRON):
|
assert await async_setup_component(hass, "system_health", {})
|
||||||
assert await async_setup_component(hass, "system_health", {})
|
|
||||||
|
|
||||||
hass.data["hassio_info"] = {"channel": "stable"}
|
hass.data["hassio_info"] = {"channel": "stable"}
|
||||||
hass.data["hassio_host_info"] = {}
|
hass.data["hassio_host_info"] = {}
|
||||||
@ -98,7 +97,8 @@ async def test_hassio_system_health_with_issues(
|
|||||||
"supported": False,
|
"supported": False,
|
||||||
}
|
}
|
||||||
|
|
||||||
info = await get_system_health_info(hass, "hassio")
|
with patch.dict(os.environ, MOCK_ENVIRON):
|
||||||
|
info = await get_system_health_info(hass, "hassio")
|
||||||
|
|
||||||
for key, val in info.items():
|
for key, val in info.items():
|
||||||
if asyncio.iscoroutine(val):
|
if asyncio.iscoroutine(val):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user