Move test before setup coordinator `_async_setup` in pyLoad integration (#138893)

Move setup test to `async_setup` in the coordinator
pull/138908/head
Manu 2025-02-20 08:14:08 +01:00 committed by GitHub
parent 5d851b6a56
commit 5c8fa717bf
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 25 additions and 22 deletions

View File

@ -4,7 +4,6 @@ from __future__ import annotations
from aiohttp import CookieJar
from pyloadapi.api import PyLoadAPI
from pyloadapi.exceptions import CannotConnect, InvalidAuth, ParserError
from homeassistant.const import (
CONF_HOST,
@ -16,10 +15,8 @@ from homeassistant.const import (
Platform,
)
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ConfigEntryAuthFailed, ConfigEntryNotReady
from homeassistant.helpers.aiohttp_client import async_create_clientsession
from .const import DOMAIN
from .coordinator import PyLoadConfigEntry, PyLoadCoordinator
PLATFORMS: list[Platform] = [Platform.BUTTON, Platform.SENSOR, Platform.SWITCH]
@ -45,24 +42,6 @@ async def async_setup_entry(hass: HomeAssistant, entry: PyLoadConfigEntry) -> bo
password=entry.data[CONF_PASSWORD],
)
try:
await pyloadapi.login()
except CannotConnect as e:
raise ConfigEntryNotReady(
translation_domain=DOMAIN,
translation_key="setup_request_exception",
) from e
except ParserError as e:
raise ConfigEntryNotReady(
translation_domain=DOMAIN,
translation_key="setup_parse_exception",
) from e
except InvalidAuth as e:
raise ConfigEntryAuthFailed(
translation_domain=DOMAIN,
translation_key="setup_authentication_exception",
translation_placeholders={CONF_USERNAME: entry.data[CONF_USERNAME]},
) from e
coordinator = PyLoadCoordinator(hass, entry, pyloadapi)
await coordinator.async_config_entry_first_refresh()

View File

@ -9,7 +9,7 @@ from pyloadapi import CannotConnect, InvalidAuth, ParserError, PyLoadAPI
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_USERNAME
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ConfigEntryAuthFailed
from homeassistant.exceptions import ConfigEntryAuthFailed, ConfigEntryNotReady
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
from .const import DOMAIN
@ -85,3 +85,27 @@ class PyLoadCoordinator(DataUpdateCoordinator[PyLoadData]):
) from e
except ParserError as e:
raise UpdateFailed("Unable to parse data from pyLoad API") from e
async def _async_setup(self) -> None:
"""Set up the coordinator."""
try:
await self.pyload.login()
except CannotConnect as e:
raise ConfigEntryNotReady(
translation_domain=DOMAIN,
translation_key="setup_request_exception",
) from e
except ParserError as e:
raise ConfigEntryNotReady(
translation_domain=DOMAIN,
translation_key="setup_parse_exception",
) from e
except InvalidAuth as e:
raise ConfigEntryAuthFailed(
translation_domain=DOMAIN,
translation_key="setup_authentication_exception",
translation_placeholders={
CONF_USERNAME: self.config_entry.data[CONF_USERNAME]
},
) from e