supervisor/hassio/bootstrap.py
2017-04-06 11:52:28 +02:00

73 lines
1.9 KiB
Python

"""Bootstrap HassIO."""
import logging
import os
import stat
from colorlog import ColoredFormatter
from .const import SOCKET_DOCKER
from .config import CoreConfig
_LOGGER = logging.getLogger(__name__)
def initialize_system_data(websession):
"""Setup default config and create folders."""
config = CoreConfig(websession)
# homeassistant config folder
if not os.path.isdir(config.path_config):
_LOGGER.info(
"Create Home-Assistant config folder %s", config.path_config)
os.mkdir(config.path_config)
# homeassistant ssl folder
if not os.path.isdir(config.path_ssl):
_LOGGER.info("Create Home-Assistant ssl folder %s", config.path_ssl)
os.mkdir(config.path_ssl)
return config
def initialize_logging():
"""Setup the logging."""
logging.basicConfig(level=logging.INFO)
fmt = ("%(asctime)s %(levelname)s (%(threadName)s) "
"[%(name)s] %(message)s")
colorfmt = "%(log_color)s{}%(reset)s".format(fmt)
datefmt = '%y-%m-%d %H:%M:%S'
# suppress overly verbose logs from libraries that aren't helpful
logging.getLogger("aiohttp.access").setLevel(logging.WARNING)
logging.getLogger().handlers[0].setFormatter(ColoredFormatter(
colorfmt,
datefmt=datefmt,
reset=True,
log_colors={
'DEBUG': 'cyan',
'INFO': 'green',
'WARNING': 'yellow',
'ERROR': 'red',
'CRITICAL': 'red',
}
))
def check_environment():
"""Check if all environment are exists."""
for key in ('SUPERVISOR_SHARE', 'SUPERVISOR_NAME',
'HOMEASSISTANT_REPOSITORY'):
try:
os.environ[key]
except KeyError:
_LOGGER.fatal("Can't find %s in env!", key)
return False
mode = os.stat(SOCKET_DOCKER)[stat.ST_MODE]
if not stat.S_ISSOCK(mode):
_LOGGER.fatal("Can't find docker socket!")
return False
return True