Add all_plugins to cleanup code (#3166)

This commit is contained in:
Joakim Sørensen 2021-09-29 18:23:25 +02:00 committed by GitHub
parent 8b93f0aee7
commit 23143aede4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 19 additions and 47 deletions

View File

@ -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"],

View File

@ -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()

View File

@ -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: