mirror of
https://github.com/home-assistant/supervisor.git
synced 2025-07-25 18:16:32 +00:00
Add all_plugins to cleanup code (#3166)
This commit is contained in:
parent
8b93f0aee7
commit
23143aede4
@ -65,14 +65,10 @@ def filter_data(coresys: CoreSys, event: dict, hint: dict) -> dict:
|
|||||||
"images": list(coresys.resolution.evaluate.cached_images),
|
"images": list(coresys.resolution.evaluate.cached_images),
|
||||||
},
|
},
|
||||||
"versions": {
|
"versions": {
|
||||||
"audio": coresys.plugins.audio.version,
|
|
||||||
"cli": coresys.plugins.cli.version,
|
|
||||||
"core": coresys.homeassistant.version,
|
"core": coresys.homeassistant.version,
|
||||||
"dns": coresys.plugins.dns.version,
|
|
||||||
"docker": coresys.docker.info.version,
|
|
||||||
"multicast": coresys.plugins.multicast.version,
|
|
||||||
"observer": coresys.plugins.observer.version,
|
|
||||||
"os": coresys.os.version,
|
"os": coresys.os.version,
|
||||||
|
"agent": coresys.dbus.agent.version,
|
||||||
|
"docker": coresys.docker.info.version,
|
||||||
"supervisor": coresys.supervisor.version,
|
"supervisor": coresys.supervisor.version,
|
||||||
},
|
},
|
||||||
"resolution": {
|
"resolution": {
|
||||||
@ -85,6 +81,11 @@ def filter_data(coresys: CoreSys, event: dict, hint: dict) -> dict:
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
event["contexts"]["versions"].update(
|
||||||
|
{plugin.slug: plugin.version for plugin in coresys.plugins.all_plugins}
|
||||||
|
)
|
||||||
|
|
||||||
event.setdefault("tags", []).extend(
|
event.setdefault("tags", []).extend(
|
||||||
[
|
[
|
||||||
["installation_type", "os" if coresys.os.available else "supervised"],
|
["installation_type", "os" if coresys.os.available else "supervised"],
|
||||||
|
@ -6,6 +6,7 @@ from ..coresys import CoreSys, CoreSysAttributes
|
|||||||
from ..exceptions import HassioError
|
from ..exceptions import HassioError
|
||||||
from ..resolution.const import ContextType, IssueType, SuggestionType
|
from ..resolution.const import ContextType, IssueType, SuggestionType
|
||||||
from .audio import PluginAudio
|
from .audio import PluginAudio
|
||||||
|
from .base import PluginBase
|
||||||
from .cli import PluginCli
|
from .cli import PluginCli
|
||||||
from .dns import PluginDns
|
from .dns import PluginDns
|
||||||
from .multicast import PluginMulticast
|
from .multicast import PluginMulticast
|
||||||
@ -27,6 +28,11 @@ class PluginManager(CoreSysAttributes):
|
|||||||
self._observer: PluginObserver = PluginObserver(coresys)
|
self._observer: PluginObserver = PluginObserver(coresys)
|
||||||
self._multicast: PluginMulticast = PluginMulticast(coresys)
|
self._multicast: PluginMulticast = PluginMulticast(coresys)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def all_plugins(self) -> list[PluginBase]:
|
||||||
|
"""Return cli handler."""
|
||||||
|
return [self._cli, self._dns, self._audio, self._observer, self._multicast]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def cli(self) -> PluginCli:
|
def cli(self) -> PluginCli:
|
||||||
"""Return cli handler."""
|
"""Return cli handler."""
|
||||||
@ -55,13 +61,7 @@ class PluginManager(CoreSysAttributes):
|
|||||||
async def load(self) -> None:
|
async def load(self) -> None:
|
||||||
"""Load Supervisor plugins."""
|
"""Load Supervisor plugins."""
|
||||||
# Sequential to avoid issue on slow IO
|
# Sequential to avoid issue on slow IO
|
||||||
for plugin in (
|
for plugin in self.all_plugins:
|
||||||
self.dns,
|
|
||||||
self.audio,
|
|
||||||
self.cli,
|
|
||||||
self.observer,
|
|
||||||
self.multicast,
|
|
||||||
):
|
|
||||||
try:
|
try:
|
||||||
await plugin.load()
|
await plugin.load()
|
||||||
except Exception as err: # pylint: disable=broad-except
|
except Exception as err: # pylint: disable=broad-except
|
||||||
@ -76,13 +76,7 @@ class PluginManager(CoreSysAttributes):
|
|||||||
|
|
||||||
# Check requirements
|
# Check requirements
|
||||||
await self.sys_updater.reload()
|
await self.sys_updater.reload()
|
||||||
for plugin in (
|
for plugin in self.all_plugins:
|
||||||
self.dns,
|
|
||||||
self.audio,
|
|
||||||
self.cli,
|
|
||||||
self.observer,
|
|
||||||
self.multicast,
|
|
||||||
):
|
|
||||||
# Check if need an update
|
# Check if need an update
|
||||||
if not plugin.need_update:
|
if not plugin.need_update:
|
||||||
continue
|
continue
|
||||||
@ -112,24 +106,13 @@ class PluginManager(CoreSysAttributes):
|
|||||||
|
|
||||||
async def repair(self) -> None:
|
async def repair(self) -> None:
|
||||||
"""Repair Supervisor plugins."""
|
"""Repair Supervisor plugins."""
|
||||||
await asyncio.wait(
|
await asyncio.wait([plugin.repair() for plugin in self.all_plugins])
|
||||||
[
|
|
||||||
self.dns.repair(),
|
|
||||||
self.audio.repair(),
|
|
||||||
self.cli.repair(),
|
|
||||||
self.observer.repair(),
|
|
||||||
self.multicast.repair(),
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
async def shutdown(self) -> None:
|
async def shutdown(self) -> None:
|
||||||
"""Shutdown Supervisor plugin."""
|
"""Shutdown Supervisor plugin."""
|
||||||
# Sequential to avoid issue on slow IO
|
# Sequential to avoid issue on slow IO
|
||||||
for plugin in (
|
for plugin in (
|
||||||
self.audio,
|
plugin for plugin in self.all_plugins if plugin.slug != "observer"
|
||||||
self.cli,
|
|
||||||
self.multicast,
|
|
||||||
self.dns,
|
|
||||||
):
|
):
|
||||||
try:
|
try:
|
||||||
await plugin.stop()
|
await plugin.stop()
|
||||||
|
@ -27,13 +27,7 @@ class CheckPluginTrust(CheckBase):
|
|||||||
)
|
)
|
||||||
return
|
return
|
||||||
|
|
||||||
for plugin in (
|
for plugin in self.sys_plugins.all_plugins:
|
||||||
self.sys_plugins.dns,
|
|
||||||
self.sys_plugins.audio,
|
|
||||||
self.sys_plugins.cli,
|
|
||||||
self.sys_plugins.observer,
|
|
||||||
self.sys_plugins.multicast,
|
|
||||||
):
|
|
||||||
try:
|
try:
|
||||||
await plugin.check_trust()
|
await plugin.check_trust()
|
||||||
except CodeNotaryUntrusted:
|
except CodeNotaryUntrusted:
|
||||||
@ -46,13 +40,7 @@ class CheckPluginTrust(CheckBase):
|
|||||||
|
|
||||||
async def approve_check(self, reference: Optional[str] = None) -> bool:
|
async def approve_check(self, reference: Optional[str] = None) -> bool:
|
||||||
"""Approve check if it is affected by issue."""
|
"""Approve check if it is affected by issue."""
|
||||||
for plugin in (
|
for plugin in self.sys_plugins.all_plugins:
|
||||||
self.sys_plugins.dns,
|
|
||||||
self.sys_plugins.audio,
|
|
||||||
self.sys_plugins.cli,
|
|
||||||
self.sys_plugins.observer,
|
|
||||||
self.sys_plugins.multicast,
|
|
||||||
):
|
|
||||||
if reference != plugin.slug:
|
if reference != plugin.slug:
|
||||||
continue
|
continue
|
||||||
try:
|
try:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user