add hostmanager

This commit is contained in:
Pascal Vizeli 2018-04-22 17:59:41 +02:00
parent 8f357739ec
commit 63b9e023b4
4 changed files with 47 additions and 1 deletions

View File

@ -19,6 +19,7 @@ from .updater import Updater
from .services import ServiceManager from .services import ServiceManager
from .services import Discovery from .services import Discovery
from .host import AlsaAudio from .host import AlsaAudio
from .host import HostManager
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -35,6 +36,7 @@ def initialize_coresys(loop):
coresys.homeassistant = HomeAssistant(coresys) coresys.homeassistant = HomeAssistant(coresys)
coresys.addons = AddonManager(coresys) coresys.addons = AddonManager(coresys)
coresys.snapshots = SnapshotManager(coresys) coresys.snapshots = SnapshotManager(coresys)
coresys.host = HostManager(coresys)
coresys.tasks = Tasks(coresys) coresys.tasks = Tasks(coresys)
coresys.services = ServiceManager(coresys) coresys.services = ServiceManager(coresys)
coresys.discovery = Discovery(coresys) coresys.discovery = Discovery(coresys)

View File

@ -209,3 +209,10 @@ CRYPTO_AES128 = 'aes128'
SECURITY_PROFILE = 'profile' SECURITY_PROFILE = 'profile'
SECURITY_DEFAULT = 'default' SECURITY_DEFAULT = 'default'
SECURITY_DISABLE = 'disable' 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'

View File

@ -41,6 +41,7 @@ class CoreSys:
self._updater = None self._updater = None
self._snapshots = None self._snapshots = None
self._tasks = None self._tasks = None
self._host = None
self._services = None self._services = None
self._discovery = None self._discovery = None
self._alsa = None self._alsa = None
@ -229,6 +230,18 @@ class CoreSys:
raise RuntimeError("ALSA already set!") raise RuntimeError("ALSA already set!")
self._alsa = value 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): async def run_in_executor(self, funct, *args):
"""Wrapper for executor pool.""" """Wrapper for executor pool."""
return self._loop.run_in_executor(None, funct, *args) return self._loop.run_in_executor(None, funct, *args)

View File

@ -1,6 +1,30 @@
"""Host function like audio/dbus/systemd.""" """Host function like audio/dbus/systemd."""
from .alsa import AlsaAudio # noqa 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()