Fix null hass error in supervisor update entities (#129030)

* Fix null hass error in supervisor update entities

* Share the supervisor client with coordinator

* Remove unnecessary patch of helper

* Attribute not property
This commit is contained in:
Mike Degatano 2024-10-24 16:45:35 -04:00 committed by GitHub
parent 6df2c0bab5
commit 5b2113c43d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 5 additions and 22 deletions

View File

@ -318,7 +318,7 @@ class HassioDataUpdateCoordinator(DataUpdateCoordinator):
self._container_updates: defaultdict[str, dict[str, set[str]]] = defaultdict(
lambda: defaultdict(set)
)
self._supervisor_client = get_supervisor_client(hass)
self.supervisor_client = get_supervisor_client(hass)
async def _async_update_data(self) -> dict[str, Any]:
"""Update data via library."""
@ -503,7 +503,7 @@ class HassioDataUpdateCoordinator(DataUpdateCoordinator):
async def _update_addon_stats(self, slug: str) -> tuple[str, dict[str, Any] | None]:
"""Update single addon stats."""
try:
stats = await self._supervisor_client.addons.addon_stats(slug)
stats = await self.supervisor_client.addons.addon_stats(slug)
except SupervisorError as err:
_LOGGER.warning("Could not fetch stats for %s: %s", slug, err)
return (slug, None)
@ -512,7 +512,7 @@ class HassioDataUpdateCoordinator(DataUpdateCoordinator):
async def _update_addon_changelog(self, slug: str) -> tuple[str, str | None]:
"""Return the changelog for an add-on."""
try:
changelog = await self._supervisor_client.store.addon_changelog(slug)
changelog = await self.supervisor_client.store.addon_changelog(slug)
except SupervisorError as err:
_LOGGER.warning("Could not fetch changelog for %s: %s", slug, err)
return (slug, None)
@ -521,7 +521,7 @@ class HassioDataUpdateCoordinator(DataUpdateCoordinator):
async def _update_addon_info(self, slug: str) -> tuple[str, dict[str, Any] | None]:
"""Return the info for an add-on."""
try:
info = await self._supervisor_client.addons.addon_info(slug)
info = await self.supervisor_client.addons.addon_info(slug)
except SupervisorError as err:
_LOGGER.warning("Could not fetch info for %s: %s", slug, err)
return (slug, None)

View File

@ -17,7 +17,6 @@ from homeassistant.config_entries import ConfigEntry
from homeassistant.const import ATTR_ICON, ATTR_NAME
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers.entity import EntityDescription
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import (
@ -31,7 +30,6 @@ from .const import (
DATA_KEY_OS,
DATA_KEY_SUPERVISOR,
)
from .coordinator import HassioDataUpdateCoordinator
from .entity import (
HassioAddonEntity,
HassioCoreEntity,
@ -43,7 +41,6 @@ from .handler import (
async_update_core,
async_update_os,
async_update_supervisor,
get_supervisor_client,
)
ENTITY_DESCRIPTION = UpdateEntityDescription(
@ -100,16 +97,6 @@ class SupervisorAddonUpdateEntity(HassioAddonEntity, UpdateEntity):
| UpdateEntityFeature.RELEASE_NOTES
)
def __init__(
self,
coordinator: HassioDataUpdateCoordinator,
entity_description: EntityDescription,
addon: dict[str, Any],
) -> None:
"""Initialize object."""
super().__init__(coordinator, entity_description, addon)
self._supervisor_client = get_supervisor_client(self.hass)
@property
def _addon_data(self) -> dict:
"""Return the add-on data."""
@ -179,7 +166,7 @@ class SupervisorAddonUpdateEntity(HassioAddonEntity, UpdateEntity):
) -> None:
"""Install an update."""
try:
await self._supervisor_client.store.update_addon(
await self.coordinator.supervisor_client.store.update_addon(
self._addon_slug, StoreAddonUpdate(backup=backup)
)
except SupervisorError as err:

View File

@ -477,10 +477,6 @@ def supervisor_client() -> Generator[AsyncMock]:
"homeassistant.components.hassio.coordinator.get_supervisor_client",
return_value=supervisor_client,
),
patch(
"homeassistant.components.hassio.update.get_supervisor_client",
return_value=supervisor_client,
),
patch(
"homeassistant.components.hassio.get_supervisor_client",
return_value=supervisor_client,