1
0
mirror of https://github.com/home-assistant/supervisor.git synced 2025-12-21 19:09:04 +00:00

Add JobManager and Job decorator (#2225)

* Adds condition decorator to block execution that require internet

* Fix exsisting tests

* Add internet state to network info

* Add healthy condition

* Add tests

* It's all changed

* rename
This commit is contained in:
Joakim Sørensen
2020-11-12 22:57:28 +01:00
committed by GitHub
parent cd34a40dd8
commit a18b706f99
20 changed files with 474 additions and 33 deletions

View File

@@ -22,19 +22,20 @@ if TYPE_CHECKING:
from .dbus import DBusManager
from .discovery import Discovery
from .hassos import HassOS
from .misc.scheduler import Scheduler
from .misc.hwmon import HwMonitor
from .misc.tasks import Tasks
from .homeassistant import HomeAssistant
from .host import HostManager
from .ingress import Ingress
from .services import ServiceManager
from .snapshots import SnapshotManager
from .supervisor import Supervisor
from .store import StoreManager
from .updater import Updater
from .job import JobManager
from .misc.hwmon import HwMonitor
from .misc.scheduler import Scheduler
from .misc.tasks import Tasks
from .plugins import PluginManager
from .resolution import ResolutionManager
from .services import ServiceManager
from .snapshots import SnapshotManager
from .store import StoreManager
from .supervisor import Supervisor
from .updater import Updater
T = TypeVar("T")
@@ -83,6 +84,7 @@ class CoreSys:
self._hwmonitor: Optional[HwMonitor] = None
self._plugins: Optional[PluginManager] = None
self._resolution: Optional[ResolutionManager] = None
self._jobs: Optional[JobManager] = None
@property
def dev(self) -> bool:
@@ -413,6 +415,20 @@ class CoreSys:
raise RuntimeError("resolution manager already set!")
self._resolution = value
@property
def jobs(self) -> JobManager:
"""Return resolution manager object."""
if self._jobs is None:
raise RuntimeError("job manager not set!")
return self._jobs
@jobs.setter
def jobs(self, value: JobManager) -> None:
"""Set a resolution manager object."""
if self._jobs:
raise RuntimeError("job manager already set!")
self._jobs = value
@property
def machine(self) -> Optional[str]:
"""Return machine type string."""
@@ -588,6 +604,11 @@ class CoreSysAttributes:
"""Return Resolution manager object."""
return self.coresys.resolution
@property
def sys_jobs(self) -> JobManager:
"""Return Job manager object."""
return self.coresys.jobs
def sys_run_in_executor(
self, funct: Callable[..., T], *args: Any
) -> Coroutine[Any, Any, T]: