From dccfffd979bb582e358f4c6f190ab18e3102df5b Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Thu, 21 Jan 2021 16:48:25 +0100 Subject: [PATCH] Improve fixups with Job condition checks (#2451) --- supervisor/resolution/fixup.py | 3 +++ .../resolution/fixups/store_execute_reload.py | 14 ++++++++++++-- .../resolution/fixups/store_execute_reset.py | 3 ++- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/supervisor/resolution/fixup.py b/supervisor/resolution/fixup.py index 69d0713e7..1c3c9190e 100644 --- a/supervisor/resolution/fixup.py +++ b/supervisor/resolution/fixup.py @@ -3,6 +3,8 @@ import logging from typing import List from ..coresys import CoreSys, CoreSysAttributes +from ..jobs.const import JobCondition +from ..jobs.decorator import Job from .data import Suggestion from .fixups.base import FixupBase from .fixups.clear_full_snapshot import FixupClearFullSnapshot @@ -41,6 +43,7 @@ class ResolutionFixup(CoreSysAttributes): self._store_execute_remove, ] + @Job(conditions=[JobCondition.HEALTHY]) async def run_autofix(self) -> None: """Run all startup fixes.""" _LOGGER.info("Starting system autofix at state %s", self.sys_core.state) diff --git a/supervisor/resolution/fixups/store_execute_reload.py b/supervisor/resolution/fixups/store_execute_reload.py index 97c848e3a..a73f1e014 100644 --- a/supervisor/resolution/fixups/store_execute_reload.py +++ b/supervisor/resolution/fixups/store_execute_reload.py @@ -2,8 +2,14 @@ import logging from typing import List, Optional -from supervisor.exceptions import ResolutionFixupError, StoreError, StoreNotFound - +from ...exceptions import ( + ResolutionFixupError, + ResolutionFixupJobError, + StoreError, + StoreNotFound, +) +from ...jobs.const import JobCondition +from ...jobs.decorator import Job from ..const import ContextType, IssueType, SuggestionType from .base import FixupBase @@ -13,6 +19,10 @@ _LOGGER: logging.Logger = logging.getLogger(__name__) class FixupStoreExecuteReload(FixupBase): """Storage class for fixup.""" + @Job( + conditions=[JobCondition.INTERNET_SYSTEM, JobCondition.FREE_SPACE], + on_condition=ResolutionFixupJobError, + ) async def process_fixup(self, reference: Optional[str] = None) -> None: """Initialize the fixup class.""" _LOGGER.info("Reload Store: %s", reference) diff --git a/supervisor/resolution/fixups/store_execute_reset.py b/supervisor/resolution/fixups/store_execute_reset.py index b9cdac00c..89fb8b843 100644 --- a/supervisor/resolution/fixups/store_execute_reset.py +++ b/supervisor/resolution/fixups/store_execute_reset.py @@ -21,7 +21,8 @@ class FixupStoreExecuteReset(FixupBase): """Storage class for fixup.""" @Job( - conditions=[JobCondition.INTERNET_SYSTEM], on_condition=ResolutionFixupJobError + conditions=[JobCondition.INTERNET_SYSTEM, JobCondition.FREE_SPACE], + on_condition=ResolutionFixupJobError, ) async def process_fixup(self, reference: Optional[str] = None) -> None: """Initialize the fixup class."""