Don't log error for addon unavailable (#4115)

This commit is contained in:
Mike Degatano 2023-01-24 12:41:00 -05:00 committed by GitHub
parent e0abb98aaf
commit 9024085712
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 7 deletions

View File

@ -1,6 +1,6 @@
"""Init file for Supervisor add-ons.""" """Init file for Supervisor add-ons."""
from abc import ABC, abstractmethod from abc import ABC, abstractmethod
from collections.abc import Awaitable from collections.abc import Awaitable, Callable
from contextlib import suppress from contextlib import suppress
import logging import logging
from pathlib import Path from pathlib import Path
@ -602,7 +602,7 @@ class AddonModel(CoreSysAttributes, ABC):
def validate_availability(self) -> None: def validate_availability(self) -> None:
"""Validate if addon is available for current system.""" """Validate if addon is available for current system."""
return self._validate_availability(self.data) return self._validate_availability(self.data, logger=_LOGGER.error)
def __eq__(self, other): def __eq__(self, other):
"""Compaired add-on objects.""" """Compaired add-on objects."""
@ -610,13 +610,15 @@ class AddonModel(CoreSysAttributes, ABC):
return False return False
return self.slug == other.slug return self.slug == other.slug
def _validate_availability(self, config) -> None: def _validate_availability(
self, config, *, logger: Callable[..., None] | None = None
) -> None:
"""Validate if addon is available for current system.""" """Validate if addon is available for current system."""
# Architecture # Architecture
if not self.sys_arch.is_supported(config[ATTR_ARCH]): if not self.sys_arch.is_supported(config[ATTR_ARCH]):
raise AddonsNotSupportedError( raise AddonsNotSupportedError(
f"Add-on {self.slug} not supported on this platform, supported architectures: {', '.join(config[ATTR_ARCH])}", f"Add-on {self.slug} not supported on this platform, supported architectures: {', '.join(config[ATTR_ARCH])}",
_LOGGER.error, logger,
) )
# Machine / Hardware # Machine / Hardware
@ -626,7 +628,7 @@ class AddonModel(CoreSysAttributes, ABC):
): ):
raise AddonsNotSupportedError( raise AddonsNotSupportedError(
f"Add-on {self.slug} not supported on this machine, supported machine types: {', '.join(machine)}", f"Add-on {self.slug} not supported on this machine, supported machine types: {', '.join(machine)}",
_LOGGER.error, logger,
) )
# Home Assistant # Home Assistant
@ -635,7 +637,7 @@ class AddonModel(CoreSysAttributes, ABC):
if self.sys_homeassistant.version < version: if self.sys_homeassistant.version < version:
raise AddonsNotSupportedError( raise AddonsNotSupportedError(
f"Add-on {self.slug} not supported on this system, requires Home Assistant version {version} or greater", f"Add-on {self.slug} not supported on this system, requires Home Assistant version {version} or greater",
_LOGGER.error, logger,
) )
def _available(self, config) -> bool: def _available(self, config) -> bool:

View File

@ -13,7 +13,10 @@ REPO_URL = "https://github.com/awesome-developer/awesome-repo"
@pytest.mark.asyncio @pytest.mark.asyncio
async def test_api_store( async def test_api_store(
api_client: TestClient, store_addon: AddonStore, repository: Repository api_client: TestClient,
store_addon: AddonStore,
repository: Repository,
caplog: pytest.LogCaptureFixture,
): ):
"""Test /store REST API.""" """Test /store REST API."""
resp = await api_client.get("/store") resp = await api_client.get("/store")
@ -22,6 +25,10 @@ async def test_api_store(
assert result["data"]["addons"][-1]["slug"] == store_addon.slug assert result["data"]["addons"][-1]["slug"] == store_addon.slug
assert result["data"]["repositories"][-1]["slug"] == repository.slug assert result["data"]["repositories"][-1]["slug"] == repository.slug
assert (
f"Add-on {store_addon.slug} not supported on this platform" not in caplog.text
)
@pytest.mark.asyncio @pytest.mark.asyncio
async def test_api_store_addons(api_client: TestClient, store_addon: AddonStore): async def test_api_store_addons(api_client: TestClient, store_addon: AddonStore):