mirror of
https://github.com/home-assistant/supervisor.git
synced 2025-07-27 02:56:31 +00:00
Make sure we only run ingress with installed add-ons (#1903)
* Make sure we only run ingress with installed add-ons * Make sure we reload tokens after uninstall * Optimize token handling * Fix error
This commit is contained in:
parent
f5dda39f63
commit
a374d4e817
@ -45,7 +45,7 @@ class AddonManager(CoreSysAttributes):
|
|||||||
"""Return a list of all installed add-ons."""
|
"""Return a list of all installed add-ons."""
|
||||||
return list(self.local.values())
|
return list(self.local.values())
|
||||||
|
|
||||||
def get(self, addon_slug: str) -> Optional[AnyAddon]:
|
def get(self, addon_slug: str, local_only: bool = False) -> Optional[AnyAddon]:
|
||||||
"""Return an add-on from slug.
|
"""Return an add-on from slug.
|
||||||
|
|
||||||
Prio:
|
Prio:
|
||||||
@ -54,7 +54,9 @@ class AddonManager(CoreSysAttributes):
|
|||||||
"""
|
"""
|
||||||
if addon_slug in self.local:
|
if addon_slug in self.local:
|
||||||
return self.local[addon_slug]
|
return self.local[addon_slug]
|
||||||
|
if not local_only:
|
||||||
return self.store.get(addon_slug)
|
return self.store.get(addon_slug)
|
||||||
|
return None
|
||||||
|
|
||||||
def from_token(self, token: str) -> Optional[Addon]:
|
def from_token(self, token: str) -> Optional[Addon]:
|
||||||
"""Return an add-on from Supervisor token."""
|
"""Return an add-on from Supervisor token."""
|
||||||
@ -156,6 +158,11 @@ class AddonManager(CoreSysAttributes):
|
|||||||
raise AddonsError() from None
|
raise AddonsError() from None
|
||||||
else:
|
else:
|
||||||
self.local[slug] = addon
|
self.local[slug] = addon
|
||||||
|
|
||||||
|
# Reload ingress tokens
|
||||||
|
if addon.with_ingress:
|
||||||
|
await self.sys_ingress.reload()
|
||||||
|
|
||||||
_LOGGER.info("Add-on '%s' successfully installed", slug)
|
_LOGGER.info("Add-on '%s' successfully installed", slug)
|
||||||
|
|
||||||
async def uninstall(self, slug: str) -> None:
|
async def uninstall(self, slug: str) -> None:
|
||||||
@ -188,6 +195,8 @@ class AddonManager(CoreSysAttributes):
|
|||||||
await self.sys_ingress.update_hass_panel(addon)
|
await self.sys_ingress.update_hass_panel(addon)
|
||||||
|
|
||||||
# Cleanup Ingress dynamic port assignment
|
# Cleanup Ingress dynamic port assignment
|
||||||
|
if addon.with_ingress:
|
||||||
|
self.sys_create_task(self.sys_ingress.reload())
|
||||||
self.sys_ingress.del_dynamic_port(slug)
|
self.sys_ingress.del_dynamic_port(slug)
|
||||||
|
|
||||||
# Cleanup discovery data
|
# Cleanup discovery data
|
||||||
@ -302,6 +311,7 @@ class AddonManager(CoreSysAttributes):
|
|||||||
|
|
||||||
# Update ingress
|
# Update ingress
|
||||||
if addon.with_ingress:
|
if addon.with_ingress:
|
||||||
|
await self.sys_ingress.reload()
|
||||||
with suppress(HomeAssistantAPIError):
|
with suppress(HomeAssistantAPIError):
|
||||||
await self.sys_ingress.update_hass_panel(addon)
|
await self.sys_ingress.update_hass_panel(addon)
|
||||||
|
|
||||||
|
@ -28,8 +28,8 @@ class Ingress(JsonConfig, CoreSysAttributes):
|
|||||||
def get(self, token: str) -> Optional[Addon]:
|
def get(self, token: str) -> Optional[Addon]:
|
||||||
"""Return addon they have this ingress token."""
|
"""Return addon they have this ingress token."""
|
||||||
if token not in self.tokens:
|
if token not in self.tokens:
|
||||||
self._update_token_list()
|
return None
|
||||||
return self.sys_addons.get(self.tokens.get(token))
|
return self.sys_addons.get(self.tokens[token], local_only=True)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def sessions(self) -> Dict[str, float]:
|
def sessions(self) -> Dict[str, float]:
|
||||||
@ -61,6 +61,7 @@ class Ingress(JsonConfig, CoreSysAttributes):
|
|||||||
async def reload(self) -> None:
|
async def reload(self) -> None:
|
||||||
"""Reload/Validate sessions."""
|
"""Reload/Validate sessions."""
|
||||||
self._cleanup_sessions()
|
self._cleanup_sessions()
|
||||||
|
self._update_token_list()
|
||||||
|
|
||||||
async def unload(self) -> None:
|
async def unload(self) -> None:
|
||||||
"""Shutdown sessions."""
|
"""Shutdown sessions."""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user