diff --git a/hassio/bootstrap.py b/hassio/bootstrap.py index d0746395d..90bae10f0 100644 --- a/hassio/bootstrap.py +++ b/hassio/bootstrap.py @@ -19,6 +19,7 @@ from .updater import Updater from .services import ServiceManager from .services import Discovery from .host import AlsaAudio +from .host import HostManager _LOGGER = logging.getLogger(__name__) @@ -35,6 +36,7 @@ def initialize_coresys(loop): coresys.homeassistant = HomeAssistant(coresys) coresys.addons = AddonManager(coresys) coresys.snapshots = SnapshotManager(coresys) + coresys.host = HostManager(coresys) coresys.tasks = Tasks(coresys) coresys.services = ServiceManager(coresys) coresys.discovery = Discovery(coresys) diff --git a/hassio/const.py b/hassio/const.py index 3901c5c57..1d318c5f4 100644 --- a/hassio/const.py +++ b/hassio/const.py @@ -209,3 +209,10 @@ CRYPTO_AES128 = 'aes128' SECURITY_PROFILE = 'profile' SECURITY_DEFAULT = 'default' SECURITY_DISABLE = 'disable' + +FEATURES_SHUTDOWN = 'shutdown' +FEATURES_REBOOT = 'reboot' +FEATURES_UPDATE = 'update' +FEATURES_HOSTNAME = 'hostname' +FEATURES_NETWORK_INFO = 'network_info' +FEATURES_NETWORK_CONTROL = 'network_control' diff --git a/hassio/coresys.py b/hassio/coresys.py index 810d11827..63ecec328 100644 --- a/hassio/coresys.py +++ b/hassio/coresys.py @@ -41,6 +41,7 @@ class CoreSys: self._updater = None self._snapshots = None self._tasks = None + self._host = None self._services = None self._discovery = None self._alsa = None @@ -229,6 +230,18 @@ class CoreSys: raise RuntimeError("ALSA already set!") self._alsa = value + @property + def host(self): + """Return HostManager object.""" + return self._host + + @host.setter + def host(self, value): + """Set a HostManager object.""" + if self._host: + raise RuntimeError("HostManager already set!") + self._host = value + async def run_in_executor(self, funct, *args): """Wrapper for executor pool.""" return self._loop.run_in_executor(None, funct, *args) diff --git a/hassio/host/__init__.py b/hassio/host/__init__.py index a0401a83c..1080ac6eb 100644 --- a/hassio/host/__init__.py +++ b/hassio/host/__init__.py @@ -1,6 +1,30 @@ """Host function like audio/dbus/systemd.""" from .alsa import AlsaAudio # noqa +from ..const import FEATURES_REBOOT, FEATURES_SHUTDOWN +from ..coresys import CoreSysAttributes -class HostManager: +class HostManager(CoreSysAttributes): + """Manage supported function from host.""" + + def __init__(self, coresys): + """Initialize Host manager.""" + self.coresys = coresys + + @property + def supperted_features(self): + """Return a list of supported host features.""" + features = [] + + if self.sys_systemd.is_connected: + features.extend([ + FEATURES_REBOOT, + FEATURES_SHUTDOWN, + ]) + + return features + + async def load(self): + """Load host functions.""" + await self.sys_systemd.connect()