mirror of
https://github.com/home-assistant/supervisor.git
synced 2025-07-26 02:26:30 +00:00
First api draft
This commit is contained in:
parent
b0a6d50d32
commit
3f3d013db0
@ -6,6 +6,7 @@ import aiohttp
|
|||||||
import docker
|
import docker
|
||||||
|
|
||||||
from . import bootstrap, tools
|
from . import bootstrap, tools
|
||||||
|
from .api import RestAPI
|
||||||
from .host_controll import HostControll
|
from .host_controll import HostControll
|
||||||
from .const import HOMEASSISTANT_TAG, SOCKET_DOCKER
|
from .const import HOMEASSISTANT_TAG, SOCKET_DOCKER
|
||||||
from .dock.homeassistant import DockerHomeAssistant
|
from .dock.homeassistant import DockerHomeAssistant
|
||||||
@ -22,6 +23,7 @@ class HassIO(object):
|
|||||||
self.loop = loop
|
self.loop = loop
|
||||||
self.config = bootstrap.initialize_system_data()
|
self.config = bootstrap.initialize_system_data()
|
||||||
self.websession = aiohttp.ClientSession(loop=self.loop)
|
self.websession = aiohttp.ClientSession(loop=self.loop)
|
||||||
|
self.api = RestAPI(self.config, self.loop)
|
||||||
self.dock = docker.DockerClient(
|
self.dock = docker.DockerClient(
|
||||||
base_url="unix:/{}".format(SOCKET_DOCKER), version='auto')
|
base_url="unix:/{}".format(SOCKET_DOCKER), version='auto')
|
||||||
|
|
||||||
@ -36,30 +38,38 @@ class HassIO(object):
|
|||||||
|
|
||||||
async def start(self):
|
async def start(self):
|
||||||
"""Start HassIO orchestration."""
|
"""Start HassIO orchestration."""
|
||||||
|
# supervisor
|
||||||
await self.supervisor.attach()
|
await self.supervisor.attach()
|
||||||
_LOGGER.info(
|
_LOGGER.info(
|
||||||
"Attach to supervisor image %s version %s", self.supervisor.image,
|
"Attach to supervisor image %s version %s", self.supervisor.image,
|
||||||
self.supervisor.version)
|
self.supervisor.version)
|
||||||
|
|
||||||
|
# hostcontroll
|
||||||
host_info = await self.host_controll.info()
|
host_info = await self.host_controll.info()
|
||||||
if host_info:
|
if host_info:
|
||||||
_LOGGER.info(
|
_LOGGER.info(
|
||||||
"Connected to host controll daemon. OS: %s Version: %s",
|
"Connected to host controll daemon. OS: %s Version: %s",
|
||||||
host_info.get('host'), host_info.get('version'))
|
host_info.get('host'), host_info.get('version'))
|
||||||
|
|
||||||
|
# api views
|
||||||
|
self.api.registerHost(self.host_controll)
|
||||||
|
self.api.registerHomeAssistant(self.homeassistant)
|
||||||
|
|
||||||
# first start of supervisor?
|
# first start of supervisor?
|
||||||
if self.config.homeassistant_tag is None:
|
if self.config.homeassistant_tag is None:
|
||||||
_LOGGER.info("No HomeAssistant docker found. Install it now")
|
_LOGGER.info("No HomeAssistant docker found.")
|
||||||
await self._setup_homeassistant()
|
await self._setup_homeassistant()
|
||||||
else:
|
|
||||||
_LOGGER.info("HomeAssistant docker exists. Run it now")
|
# start api
|
||||||
|
self.api.start()
|
||||||
|
|
||||||
# run HomeAssistant
|
# run HomeAssistant
|
||||||
|
_LOGGER.info("Run HomeAssistant now.")
|
||||||
await self.homeassistant.run()
|
await self.homeassistant.run()
|
||||||
|
|
||||||
async def stop(self):
|
async def stop(self):
|
||||||
"""Stop a running orchestration."""
|
"""Stop a running orchestration."""
|
||||||
tasks = [self.websession.close()]
|
tasks = [self.websession.close(), self.api.stop()]
|
||||||
await asyncio.wait(tasks, loop=self.loop)
|
await asyncio.wait(tasks, loop=self.loop)
|
||||||
|
|
||||||
self.loop.close()
|
self.loop.close()
|
||||||
|
@ -28,7 +28,7 @@ setup(
|
|||||||
keywords=['docker', 'home-assistant', 'api'],
|
keywords=['docker', 'home-assistant', 'api'],
|
||||||
zip_safe=False,
|
zip_safe=False,
|
||||||
platforms='any',
|
platforms='any',
|
||||||
packages=['hassio', 'hassio.dock'],
|
packages=['hassio', 'hassio.dock', 'hassio.api'],
|
||||||
include_package_data=True,
|
include_package_data=True,
|
||||||
install_requires=[
|
install_requires=[
|
||||||
'async_timeout',
|
'async_timeout',
|
||||||
|
Loading…
x
Reference in New Issue
Block a user