mirror of
https://github.com/home-assistant/supervisor.git
synced 2025-07-28 03:26:32 +00:00
Work on HostControll
This commit is contained in:
parent
ffe8c13cb0
commit
8094b6beb4
@ -23,15 +23,20 @@ Communicate over unix socket with a host daemon.
|
||||
|
||||
- Answer
|
||||
```
|
||||
[{}]
|
||||
OK|ERROR
|
||||
{}|OK|ERROR
|
||||
```
|
||||
|
||||
## HassIO REST API
|
||||
|
||||
Interface for HomeAssistant to controll things from supervisor.
|
||||
|
||||
### host
|
||||
### HassIO
|
||||
|
||||
- `/host/update`
|
||||
Payload: {'version': '0.XX'}
|
||||
If version is None it read last version from server.
|
||||
|
||||
### Host
|
||||
- `/host/network`
|
||||
Payload: {'hostname': '', 'mode': 'dhcp|fixed', 'ssid': '', 'ip': '', 'netmask': '', 'gateway': ''}
|
||||
|
||||
@ -41,30 +46,33 @@ Payload: {'hostname': '', 'mode': 'dhcp|fixed', 'ssid': '', 'ip': '', 'netmask':
|
||||
|
||||
- `/host/info`
|
||||
|
||||
- `/host/update`
|
||||
On some device we support host upates. Like ResinOS.
|
||||
|
||||
### /homeassistant/info
|
||||
### HomeAssistant
|
||||
|
||||
### /homeassistant/update
|
||||
- Payload: {'version': '0.XX.Y'}
|
||||
- `/homeassistant/info`
|
||||
|
||||
- `/homeassistant/update`
|
||||
Payload: {'version': '0.XX.Y'}
|
||||
If version is None it read last version from server.
|
||||
|
||||
## REST API addons
|
||||
### REST API addons
|
||||
|
||||
### /addons/info
|
||||
- `/addons/info`
|
||||
|
||||
### /addons/reload
|
||||
- `/addons/reload`
|
||||
|
||||
### /addons/{addon}/start
|
||||
- Payload: {'options': {}}
|
||||
- `/addons/{addon}/start`
|
||||
Payload: {'options': {}}
|
||||
|
||||
### /addons/{addon}/stop
|
||||
- `/addons/{addon}/stop`
|
||||
|
||||
### /addons/{addon}/install
|
||||
- Payload: {'version': 'x.x'}
|
||||
- `/addons/{addon}/install`
|
||||
Payload: {'version': 'x.x'}
|
||||
|
||||
### /addons/{addon}/uninstall
|
||||
|
||||
### /addons/{addon}/update
|
||||
- Payload: {'version': 'x.x'}
|
||||
- `/addons/{addon}/uninstall`
|
||||
|
||||
- `/addons/{addon}/update`
|
||||
Payload: {'version': 'x.x'}
|
||||
If version is None it read last version from server.
|
||||
|
@ -5,7 +5,7 @@ import os
|
||||
|
||||
from colorlog import ColoredFormatter
|
||||
|
||||
from .const import FILE_HASSIO_ADDONS
|
||||
from .const import FILE_HASSIO_ADDONS, SOCKET_DOCKER
|
||||
from .config import CoreConfig
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
@ -61,7 +61,7 @@ def initialize_logging():
|
||||
|
||||
def check_environment():
|
||||
"""Check if all environment are exists."""
|
||||
for key in ('SUPERVISOR_SHARE', 'SUPERVISOR_NAME', 'DOCKER_SOCKET',
|
||||
for key in ('SUPERVISOR_SHARE', 'SUPERVISOR_NAME',
|
||||
'HOMEASSISTANT_REPOSITORY'):
|
||||
try:
|
||||
os.environ[key]
|
||||
@ -69,7 +69,7 @@ def check_environment():
|
||||
_LOGGER.fatal("Can't find %s in env!", key)
|
||||
return False
|
||||
|
||||
if not os.path.isfile(os.environ['DOCKER_SOCKET']):
|
||||
if not os.path.isfile(SOCKET_DOCKER):
|
||||
_LOGGER.fatal("Can't find docker socket!")
|
||||
return False
|
||||
|
||||
|
@ -4,9 +4,9 @@ import logging
|
||||
import os
|
||||
|
||||
from .const import (
|
||||
FILE_HASSIO_CONFIG, CONF_SUPERVISOR_TAG, CONF_SUPERVISOR_IMAGE,
|
||||
CONF_HOMEASSISTANT_TAG, CONF_HOMEASSISTANT_IMAGE, HOMEASSISTANT_SSL,
|
||||
HOMEASSISTANT_CONFIG, HASSIO_SHARE_EXT, HASSIO_SHARE_INT)
|
||||
FILE_HASSIO_CONFIG, HOMEASSISTANT_TAG, HOMEASSISTANT_IMAGE,
|
||||
HOMEASSISTANT_SSL, HOMEASSISTANT_CONFIG, HASSIO_SHARE_EXT,
|
||||
HASSIO_SHARE_INT)
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
@ -29,9 +29,8 @@ class CoreConfig(object):
|
||||
|
||||
if not self._data:
|
||||
self._data.update({
|
||||
CONF_HOMEASSISTANT_IMAGE:
|
||||
os.environ['HOMEASSISTANT_REPOSITORY'],
|
||||
CONF_HOMEASSISTANT_TAG: '',
|
||||
HOMEASSISTANT_IMAGE: os.environ['HOMEASSISTANT_REPOSITORY'],
|
||||
HOMEASSISTANT_TAG: '',
|
||||
})
|
||||
|
||||
def save(self):
|
||||
@ -45,17 +44,17 @@ class CoreConfig(object):
|
||||
@property
|
||||
def homeassistant_image(self):
|
||||
"""Return docker homeassistant repository."""
|
||||
return self._data.get(CONF_HOMEASSISTANT_IMAGE)
|
||||
return self._data.get(HOMEASSISTANT_IMAGE)
|
||||
|
||||
@property
|
||||
def homeassistant_tag(self):
|
||||
"""Return docker homeassistant tag."""
|
||||
return self._data.get(CONF_HOMEASSISTANT_TAG)
|
||||
return self._data.get(HOMEASSISTANT_TAG)
|
||||
|
||||
@homeassistant_tag.setter
|
||||
def homeassistant_tag(self, value):
|
||||
"""Set docker homeassistant tag."""
|
||||
self._data[CONF_HOMEASSISTANT_TAG] = value
|
||||
self._data[HOMEASSISTANT_TAG] = value
|
||||
self.save()
|
||||
|
||||
@property
|
||||
|
@ -1,7 +1,7 @@
|
||||
"""Const file for HassIO."""
|
||||
import os
|
||||
|
||||
URL_SUPERVISOR_VERSION = \
|
||||
URL_HASSIO_VERSION = \
|
||||
'https://raw.githubusercontent.com/pvizeli/hassio/master/version.json'
|
||||
|
||||
URL_ADDONS_REPO = 'https://github.com/pvizeli/hassio-addons'
|
||||
@ -15,12 +15,13 @@ HASSIO_SHARE_EXT = os.environ['SUPERVISOR_SHARE']
|
||||
HASSIO_SHARE_INT = '/data'
|
||||
HASSIO_DOCKER = os.environ['SUPERVISOR_NAME']
|
||||
|
||||
SOCKET_DOCKER = "/var/run/docker.sock"
|
||||
SOCKET_HC = "/var/run/hassio-hc.sock"
|
||||
|
||||
HOMEASSISTANT_CONFIG = "{}/homeassistant_config"
|
||||
HOMEASSISTANT_SSL = "{}/homeassistant_ssl"
|
||||
|
||||
HTTP_PORT = 9123
|
||||
|
||||
CONF_SUPERVISOR_IMAGE = 'supervisor_image'
|
||||
CONF_SUPERVISOR_TAG = 'supervisor_tag'
|
||||
CONF_HOMEASSISTANT_IMAGE = 'homeassistant_image'
|
||||
CONF_HOMEASSISTANT_TAG = 'homeassistant_tag'
|
||||
HOMEASSISTANT_IMAGE = 'homeassistant_image'
|
||||
HOMEASSISTANT_TAG = 'homeassistant_tag'
|
||||
|
@ -5,9 +5,8 @@ import logging
|
||||
import aiohttp
|
||||
import docker
|
||||
|
||||
import hassio.bootstrap as bootstrap
|
||||
import hassio.tools as tools
|
||||
from .const import CONF_HOMEASSISTANT_TAG
|
||||
from . import bootstrap, tools
|
||||
from .const import HOMEASSISTANT_TAG, SOCKET_DOCKER
|
||||
from .docker.homeassistant import DockerHomeAssistant
|
||||
from .docker.supervisor import DockerSupervisor
|
||||
|
||||
@ -18,7 +17,7 @@ async def run_hassio(loop):
|
||||
"""Start HassIO."""
|
||||
websession = aiohttp.ClientSession(loop=loop)
|
||||
dock = docker.DockerClient(
|
||||
base_url='unix://var/run/docker.sock', version='auto')
|
||||
base_url="unix:/{}".format(SOCKET_DOCKER), version='auto')
|
||||
|
||||
# init system
|
||||
config = bootstrap.initialize_system_data()
|
||||
@ -42,12 +41,12 @@ async def run_hassio(loop):
|
||||
while True:
|
||||
current = await tools.fetch_current_versions(websession)
|
||||
if current and CONF_HOMEASSISTANT_TAG in current:
|
||||
if await docker_hass.install(current[CONF_HOMEASSISTANT_TAG]):
|
||||
if await docker_hass.install(current[HOMEASSISTANT_TAG]):
|
||||
break
|
||||
_LOGGER.warning("Can't fetch info from github. Retry in 60.")
|
||||
await asyncio.sleep(60, loop=loop)
|
||||
|
||||
config.homeassistant_tag = current[CONF_HOMEASSISTANT_TAG]
|
||||
config.homeassistant_tag = current[HOMEASSISTANT_TAG]
|
||||
else:
|
||||
_LOGGER.info("HomeAssistant docker is exists.")
|
||||
|
||||
|
13
hassio_api/hassio/host_controll.py
Normal file
13
hassio_api/hassio/host_controll.py
Normal file
@ -0,0 +1,13 @@
|
||||
"""Host controll for HassIO."""
|
||||
import asyncio
|
||||
import logging
|
||||
|
||||
from .const import SOCKET_HC
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
class HostControll(object):
|
||||
"""Manage host function."""
|
||||
|
||||
def __init__(self, loop):
|
||||
"""Initialize host controll."""
|
@ -4,7 +4,7 @@ import re
|
||||
|
||||
import async_timeout
|
||||
|
||||
from .const import URL_SUPERVISOR_VERSION
|
||||
from .const import URL_HASSIO_VERSION
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
@ -16,7 +16,7 @@ async def fetch_current_versions(websession):
|
||||
"""Fetch current versions from github."""
|
||||
try:
|
||||
with async_timeout.timeout(10, loop=websession.loop):
|
||||
async with websession.get(URL_SUPERVISOR_VERSION) as request:
|
||||
async with websession.get(URL_HASSIO_VERSION) as request:
|
||||
return await request.json()
|
||||
|
||||
except Exception as err: # pylint: disable=broad-except
|
||||
|
@ -13,8 +13,6 @@ runSupervisor() {
|
||||
-v /var/run/hassio-hc.sock:/var/run/hassio-hc.sock \
|
||||
-v /resin-data:/data \
|
||||
-v /var/log/supervisor-log:/var/log \
|
||||
-e DOCKER_SOCKET=/var/run/docker.sock \
|
||||
-e HASSIO_HC_SOCKET=/var/run/hassio-hc.sock \
|
||||
-e SUPERVISOR_SHARE=/resin-data \
|
||||
-e SUPERVISOR_NAME=resin_supervisor \
|
||||
-e HOMEASSISTANT_REPOSITORY=${HOMEASSISTANT_REPOSITORY} \
|
||||
|
@ -13,8 +13,6 @@ docker run --privileged --name resin_supervisor \
|
||||
-v /var/run/hassio-hc.sock:/var/run/hassio-hc.sock \
|
||||
-v /resin-data:/data \
|
||||
-v /var/log/supervisor-log:/var/log \
|
||||
-e DOCKER_SOCKET=/var/run/docker.sock \
|
||||
-e HASSIO_HC_SOCKET=/var/run/hassio-hc.sock \
|
||||
-e SUPERVISOR_SHARE=/resin-data \
|
||||
-e SUPERVISOR_NAME=resin_supervisor \
|
||||
-e HOMEASSISTANT_REPOSITORY=${HOMEASSISTANT_REPOSITORY} \
|
||||
|
Loading…
x
Reference in New Issue
Block a user