mirror of
https://github.com/home-assistant/supervisor.git
synced 2025-06-19 08:26: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
|
||||
|
||||
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 ..const import (
|
||||
ATTR_ADDONS,
|
||||
ATTR_ADVANCED,
|
||||
ATTR_APPARMOR,
|
||||
ATTR_ARCH,
|
||||
ATTR_AUTH_API,
|
||||
ATTR_AVAILABLE,
|
||||
ATTR_BACKUP,
|
||||
ATTR_BUILD,
|
||||
ATTR_DESCRIPTON,
|
||||
ATTR_DETACHED,
|
||||
ATTR_DOCKER_API,
|
||||
ATTR_DOCUMENTATION,
|
||||
ATTR_FULL_ACCESS,
|
||||
ATTR_HASSIO_API,
|
||||
ATTR_HASSIO_ROLE,
|
||||
ATTR_HOMEASSISTANT,
|
||||
ATTR_HOMEASSISTANT_API,
|
||||
ATTR_HOST_NETWORK,
|
||||
ATTR_HOST_PID,
|
||||
ATTR_ICON,
|
||||
ATTR_INGRESS,
|
||||
ATTR_INSTALLED,
|
||||
ATTR_LOGO,
|
||||
ATTR_LONG_DESCRIPTION,
|
||||
ATTR_MAINTAINER,
|
||||
ATTR_NAME,
|
||||
ATTR_RATING,
|
||||
ATTR_REPOSITORIES,
|
||||
ATTR_REPOSITORY,
|
||||
ATTR_SLUG,
|
||||
@ -80,13 +97,18 @@ class APIStore(CoreSysAttributes):
|
||||
|
||||
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."""
|
||||
return {
|
||||
|
||||
data = {
|
||||
ATTR_ADVANCED: addon.advanced,
|
||||
ATTR_ARCH: addon.supported_arch,
|
||||
ATTR_AVAILABLE: addon.available,
|
||||
ATTR_BUILD: addon.need_build,
|
||||
ATTR_DESCRIPTON: addon.description,
|
||||
ATTR_DOCUMENTATION: addon.with_documentation,
|
||||
ATTR_HOMEASSISTANT: addon.homeassistant_version,
|
||||
ATTR_ICON: addon.with_icon,
|
||||
ATTR_INSTALLED: addon.is_installed,
|
||||
@ -100,6 +122,27 @@ class APIStore(CoreSysAttributes):
|
||||
ATTR_VERSION_LATEST: addon.latest_version,
|
||||
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(
|
||||
self, repository: Repository
|
||||
@ -161,7 +204,7 @@ class APIStore(CoreSysAttributes):
|
||||
async def addons_addon_info(self, request: web.Request) -> dict[str, Any]:
|
||||
"""Return add-on information."""
|
||||
addon: AddonStore = self._extract_addon(request)
|
||||
return self._generate_addon_information(addon)
|
||||
return self._generate_addon_information(addon, True)
|
||||
|
||||
@api_process
|
||||
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.addons.addon import Addon
|
||||
from supervisor.addons.validate import SCHEMA_ADDON_SYSTEM
|
||||
from supervisor.api import RestAPI
|
||||
from supervisor.bootstrap import initialize_coresys
|
||||
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")
|
||||
|
||||
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
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user