ha-supervisor/hassio_api/hassio/config.py

98 lines
2.9 KiB
Python

"""Bootstrap HassIO."""
import json
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)
_LOGGER = logging.getLogger(__name__)
class CoreConfig(object):
"""Hold all config data."""
def __init__(self, config_file=FILE_HASSIO_CONFIG):
"""Initialize config object."""
self._data = {}
self._filename = config_file
# init or load data
if os.path.isfile(self._filename):
try:
with open(self._filename, 'r') as cfile:
self._data = json.loads(cfile.read())
except OSError:
_LOGGER.warning("Can't read %s", self._filename)
if not self._data:
self._data.update({
CONF_HOMEASSISTANT_IMAGE:
os.environ['HOMEASSISTANT_REPOSITORY'],
CONF_HOMEASSISTANT_TAG: '',
})
# update version
self._data.update({
CONF_SUPERVISOR_IMAGE: os.environ['SUPERVISOR_IMAGE'],
CONF_SUPERVISOR_TAG: os.environ['SUPERVISOR_TAG'],
})
self.save()
def save(self):
"""Store data to config file."""
try:
with open(self._filename, 'w') as conf_file:
conf_file.write(json.dumps(self._data))
except OSError:
_LOGGER.exception("Can't store config in %s", self._filename)
@property
def homeassistant_image(self):
"""Return docker homeassistant repository."""
return self._data.get(CONF_HOMEASSISTANT_IMAGE)
@property
def homeassistant_tag(self):
"""Return docker homeassistant tag."""
return self._data.get(CONF_HOMEASSISTANT_TAG)
@homeassistant_tag.setter
def homeassistant_tag(self, value):
"""Set docker homeassistant tag."""
self._data[CONF_HOMEASSISTANT_TAG] = value
self.save()
@property
def supervisor_image(self):
"""Return docker supervisor repository."""
return self._data.get(CONF_SUPERVISOR_IMAGE)
@property
def supervisor_tag(self):
"""Return docker supervisor tag."""
return self._data.get(CONF_SUPERVISOR_TAG)
@property
def path_config_docker(self):
"""Return config path extern for docker."""
return HOMEASSISTANT_CONFIG.format(HASSIO_SHARE_EXT)
@property
def path_config(self):
"""Return config path inside supervisor."""
return HOMEASSISTANT_CONFIG.format(HASSIO_SHARE_INT)
@property
def path_ssl_docker(self):
"""Return SSL path extern for docker."""
return HOMEASSISTANT_SSL.format(HASSIO_SHARE_EXT)
@property
def path_ssl(self):
"""Return SSL path inside supervisor."""
return HOMEASSISTANT_SSL.format(HASSIO_SHARE_INT)