Add fields back for legacy addons info routing (#3768)

* Add fields back for legacy addons info routing

* Fixes from feedback
This commit is contained in:
Mike Degatano 2022-08-03 16:03:45 -04:00 committed by GitHub
parent b670efa47f
commit f87209f66f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 20 additions and 1 deletions

View File

@ -6,6 +6,7 @@ from typing import Any, Optional
from aiohttp import web
from supervisor.api.utils import api_process
from supervisor.const import AddonState
from supervisor.exceptions import APIAddonNotInstalled
from ..coresys import CoreSys, CoreSysAttributes
@ -413,7 +414,12 @@ class RestAPI(CoreSysAttributes):
try:
return await api_addons.info(request)
except APIAddonNotInstalled:
return await api_store.addons_addon_info(request)
# Route to store/{addon}/info but add missing fields
return dict(
await api_store.addons_addon_info_wrapped(request),
state=AddonState.UNKNOWN,
options=self.sys_addons.store[request.match_info["addon"]].options,
)
self.webapp.add_routes([web.get("/addons/{addon}/info", addons_addon_info)])

View File

@ -212,6 +212,11 @@ class APIStore(CoreSysAttributes):
@api_process
async def addons_addon_info(self, request: web.Request) -> dict[str, Any]:
"""Return add-on information."""
return await self.addons_addon_info_wrapped(request)
# Used by legacy routing for addons/{addon}/info, can be refactored out when that is removed (1/2023)
async def addons_addon_info_wrapped(self, request: web.Request) -> dict[str, Any]:
"""Return add-on information directly (not api)."""
addon: AddonStore = self._extract_addon(request)
return self._generate_addon_information(addon, True)

View File

@ -34,3 +34,11 @@ async def test_addons_info_not_installed(
result = await resp.json()
assert result["data"]["version_latest"] == "9.2.1"
assert result["data"]["version"] is None
assert result["data"]["state"] == "unknown"
assert result["data"]["update_available"] is False
assert result["data"]["options"] == {
"authorized_keys": [],
"apks": [],
"password": "",
"server": {"tcp_forwarding": False},
}