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

View File

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

View File

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

View File

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