mirror of
https://github.com/home-assistant/supervisor.git
synced 2025-06-20 17:06:30 +00:00
Extended store addon info (#3678)
* Add extended store addon info * Add missing hassio_api * Fix test
This commit is contained in:
parent
8d1a5c5d6a
commit
b82dbc0cac
@ -6,20 +6,37 @@ from aiohttp import web
|
|||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
|
|
||||||
from ..addons import AnyAddon
|
from ..addons import AnyAddon
|
||||||
|
from ..addons.utils import rating_security
|
||||||
|
from ..api.const import ATTR_SIGNED
|
||||||
from ..api.utils import api_process, api_validate
|
from ..api.utils import api_process, api_validate
|
||||||
from ..const import (
|
from ..const import (
|
||||||
ATTR_ADDONS,
|
ATTR_ADDONS,
|
||||||
ATTR_ADVANCED,
|
ATTR_ADVANCED,
|
||||||
|
ATTR_APPARMOR,
|
||||||
|
ATTR_ARCH,
|
||||||
|
ATTR_AUTH_API,
|
||||||
ATTR_AVAILABLE,
|
ATTR_AVAILABLE,
|
||||||
ATTR_BACKUP,
|
ATTR_BACKUP,
|
||||||
ATTR_BUILD,
|
ATTR_BUILD,
|
||||||
ATTR_DESCRIPTON,
|
ATTR_DESCRIPTON,
|
||||||
|
ATTR_DETACHED,
|
||||||
|
ATTR_DOCKER_API,
|
||||||
|
ATTR_DOCUMENTATION,
|
||||||
|
ATTR_FULL_ACCESS,
|
||||||
|
ATTR_HASSIO_API,
|
||||||
|
ATTR_HASSIO_ROLE,
|
||||||
ATTR_HOMEASSISTANT,
|
ATTR_HOMEASSISTANT,
|
||||||
|
ATTR_HOMEASSISTANT_API,
|
||||||
|
ATTR_HOST_NETWORK,
|
||||||
|
ATTR_HOST_PID,
|
||||||
ATTR_ICON,
|
ATTR_ICON,
|
||||||
|
ATTR_INGRESS,
|
||||||
ATTR_INSTALLED,
|
ATTR_INSTALLED,
|
||||||
ATTR_LOGO,
|
ATTR_LOGO,
|
||||||
|
ATTR_LONG_DESCRIPTION,
|
||||||
ATTR_MAINTAINER,
|
ATTR_MAINTAINER,
|
||||||
ATTR_NAME,
|
ATTR_NAME,
|
||||||
|
ATTR_RATING,
|
||||||
ATTR_REPOSITORIES,
|
ATTR_REPOSITORIES,
|
||||||
ATTR_REPOSITORY,
|
ATTR_REPOSITORY,
|
||||||
ATTR_SLUG,
|
ATTR_SLUG,
|
||||||
@ -80,13 +97,18 @@ class APIStore(CoreSysAttributes):
|
|||||||
|
|
||||||
return repository
|
return repository
|
||||||
|
|
||||||
def _generate_addon_information(self, addon: AddonStore) -> dict[str, Any]:
|
def _generate_addon_information(
|
||||||
|
self, addon: AddonStore, extended: bool = False
|
||||||
|
) -> dict[str, Any]:
|
||||||
"""Generate addon information."""
|
"""Generate addon information."""
|
||||||
return {
|
|
||||||
|
data = {
|
||||||
ATTR_ADVANCED: addon.advanced,
|
ATTR_ADVANCED: addon.advanced,
|
||||||
|
ATTR_ARCH: addon.supported_arch,
|
||||||
ATTR_AVAILABLE: addon.available,
|
ATTR_AVAILABLE: addon.available,
|
||||||
ATTR_BUILD: addon.need_build,
|
ATTR_BUILD: addon.need_build,
|
||||||
ATTR_DESCRIPTON: addon.description,
|
ATTR_DESCRIPTON: addon.description,
|
||||||
|
ATTR_DOCUMENTATION: addon.with_documentation,
|
||||||
ATTR_HOMEASSISTANT: addon.homeassistant_version,
|
ATTR_HOMEASSISTANT: addon.homeassistant_version,
|
||||||
ATTR_ICON: addon.with_icon,
|
ATTR_ICON: addon.with_icon,
|
||||||
ATTR_INSTALLED: addon.is_installed,
|
ATTR_INSTALLED: addon.is_installed,
|
||||||
@ -100,6 +122,27 @@ class APIStore(CoreSysAttributes):
|
|||||||
ATTR_VERSION_LATEST: addon.latest_version,
|
ATTR_VERSION_LATEST: addon.latest_version,
|
||||||
ATTR_VERSION: addon.version if addon.is_installed else None,
|
ATTR_VERSION: addon.version if addon.is_installed else None,
|
||||||
}
|
}
|
||||||
|
if extended:
|
||||||
|
data.update(
|
||||||
|
{
|
||||||
|
ATTR_APPARMOR: addon.apparmor,
|
||||||
|
ATTR_AUTH_API: addon.access_auth_api,
|
||||||
|
ATTR_DETACHED: addon.is_detached,
|
||||||
|
ATTR_DOCKER_API: addon.access_docker_api,
|
||||||
|
ATTR_FULL_ACCESS: addon.with_full_access,
|
||||||
|
ATTR_HASSIO_API: addon.access_hassio_api,
|
||||||
|
ATTR_HASSIO_ROLE: addon.hassio_role,
|
||||||
|
ATTR_HOMEASSISTANT_API: addon.access_homeassistant_api,
|
||||||
|
ATTR_HOST_NETWORK: addon.host_network,
|
||||||
|
ATTR_HOST_PID: addon.host_pid,
|
||||||
|
ATTR_INGRESS: addon.with_ingress,
|
||||||
|
ATTR_LONG_DESCRIPTION: addon.long_description,
|
||||||
|
ATTR_RATING: rating_security(addon),
|
||||||
|
ATTR_SIGNED: addon.signed,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
return data
|
||||||
|
|
||||||
def _generate_repository_information(
|
def _generate_repository_information(
|
||||||
self, repository: Repository
|
self, repository: Repository
|
||||||
@ -161,7 +204,7 @@ class APIStore(CoreSysAttributes):
|
|||||||
async def addons_addon_info(self, request: web.Request) -> dict[str, Any]:
|
async def addons_addon_info(self, request: web.Request) -> dict[str, Any]:
|
||||||
"""Return add-on information."""
|
"""Return add-on information."""
|
||||||
addon: AddonStore = self._extract_addon(request)
|
addon: AddonStore = self._extract_addon(request)
|
||||||
return self._generate_addon_information(addon)
|
return self._generate_addon_information(addon, True)
|
||||||
|
|
||||||
@api_process
|
@api_process
|
||||||
async def repositories_list(self, request: web.Request) -> list[dict[str, Any]]:
|
async def repositories_list(self, request: web.Request) -> list[dict[str, Any]]:
|
||||||
|
@ -14,6 +14,7 @@ import pytest
|
|||||||
|
|
||||||
from supervisor import config as su_config
|
from supervisor import config as su_config
|
||||||
from supervisor.addons.addon import Addon
|
from supervisor.addons.addon import Addon
|
||||||
|
from supervisor.addons.validate import SCHEMA_ADDON_SYSTEM
|
||||||
from supervisor.api import RestAPI
|
from supervisor.api import RestAPI
|
||||||
from supervisor.bootstrap import initialize_coresys
|
from supervisor.bootstrap import initialize_coresys
|
||||||
from supervisor.const import ATTR_ADDONS_CUSTOM_LIST, ATTR_REPOSITORIES, REQUEST_FROM
|
from supervisor.const import ATTR_ADDONS_CUSTOM_LIST, ATTR_REPOSITORIES, REQUEST_FROM
|
||||||
@ -309,7 +310,9 @@ def store_addon(coresys: CoreSys, tmp_path, repository):
|
|||||||
addon_obj = AddonStore(coresys, "test_store_addon")
|
addon_obj = AddonStore(coresys, "test_store_addon")
|
||||||
|
|
||||||
coresys.addons.store[addon_obj.slug] = addon_obj
|
coresys.addons.store[addon_obj.slug] = addon_obj
|
||||||
coresys.store.data.addons[addon_obj.slug] = load_json_fixture("add-on.json")
|
coresys.store.data.addons[addon_obj.slug] = SCHEMA_ADDON_SYSTEM(
|
||||||
|
load_json_fixture("add-on.json")
|
||||||
|
)
|
||||||
yield addon_obj
|
yield addon_obj
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user