Small cleanup & adjustments for 236 (#1978)

This commit is contained in:
Pascal Vizeli 2020-08-27 10:33:35 +02:00 committed by GitHub
parent 30fe36ae05
commit 127073c01b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 56 additions and 53 deletions

View File

@ -551,6 +551,7 @@ class Addon(AddonModel):
try:
await self.instance.run()
except DockerAPIError as err:
self.state = AddonState.ERROR
raise AddonsError() from err
else:
self.state = AddonState.STARTED
@ -560,6 +561,7 @@ class Addon(AddonModel):
try:
return await self.instance.stop()
except DockerAPIError as err:
self.state = AddonState.ERROR
raise AddonsError() from err
else:
self.state = AddonState.STOPPED

View File

@ -66,7 +66,7 @@ from ..const import (
SECURITY_DEFAULT,
SECURITY_DISABLE,
SECURITY_PROFILE,
AddonStages,
AddonStage,
AddonStartup,
)
from ..coresys import CoreSys, CoreSysAttributes
@ -207,7 +207,7 @@ class AddonModel(CoreSysAttributes, ABC):
return self.data[ATTR_ADVANCED]
@property
def stage(self) -> AddonStages:
def stage(self) -> AddonStage:
"""Return stage mode of add-on."""
return self.data[ATTR_STAGE]

View File

@ -87,7 +87,7 @@ from ..const import (
PRIVILEGED_ALL,
ROLE_ALL,
ROLE_DEFAULT,
AddonStages,
AddonStage,
AddonStartup,
AddonState,
)
@ -196,7 +196,7 @@ SCHEMA_ADDON_CONFIG = vol.Schema(
vol.Required(ATTR_BOOT): vol.In([BOOT_AUTO, BOOT_MANUAL]),
vol.Optional(ATTR_INIT, default=True): vol.Boolean(),
vol.Optional(ATTR_ADVANCED, default=False): vol.Boolean(),
vol.Optional(ATTR_STAGE, default=AddonStages.STABLE): vol.Coerce(AddonStages),
vol.Optional(ATTR_STAGE, default=AddonStage.STABLE): vol.Coerce(AddonStage),
vol.Optional(ATTR_PORTS): docker_ports,
vol.Optional(ATTR_PORTS_DESCRIPTION): docker_ports_description,
vol.Optional(ATTR_WATCHDOG): vol.Match(

View File

@ -41,7 +41,7 @@ from ..const import (
CONTENT_TYPE_BINARY,
SUPERVISOR_VERSION,
LogLevel,
UpdateChannels,
UpdateChannel,
)
from ..coresys import CoreSysAttributes
from ..exceptions import APIError
@ -54,7 +54,7 @@ _LOGGER: logging.Logger = logging.getLogger(__name__)
# pylint: disable=no-value-for-parameter
SCHEMA_OPTIONS = vol.Schema(
{
vol.Optional(ATTR_CHANNEL): vol.Coerce(UpdateChannels),
vol.Optional(ATTR_CHANNEL): vol.Coerce(UpdateChannel),
vol.Optional(ATTR_ADDONS_REPOSITORIES): repositories,
vol.Optional(ATTR_TIMEZONE): validate_timezone,
vol.Optional(ATTR_WAIT_BOOT): wait_boot,

View File

@ -24,7 +24,7 @@ from .const import (
SOCKET_DOCKER,
SUPERVISOR_VERSION,
LogLevel,
UpdateChannels,
UpdateChannel,
)
from .core import Core
from .coresys import CoreSys
@ -170,7 +170,7 @@ def initialize_system_data(coresys: CoreSys) -> None:
# Check if ENV is in development mode
if bool(os.environ.get(ENV_SUPERVISOR_DEV, 0)):
_LOGGER.warning("SUPERVISOR_DEV is set")
coresys.updater.channel = UpdateChannels.DEV
coresys.updater.channel = UpdateChannel.DEV
coresys.config.logging = LogLevel.DEBUG
coresys.config.debug = True

View File

@ -359,7 +359,7 @@ class AddonStartup(str, Enum):
ONCE = "once"
class AddonStages(str, Enum):
class AddonStage(str, Enum):
"""Stage types of add-on."""
STABLE = "stable"
@ -373,9 +373,10 @@ class AddonState(str, Enum):
STARTED = "started"
STOPPED = "stopped"
UNKNOWN = "unknown"
ERROR = "error"
class UpdateChannels(str, Enum):
class UpdateChannel(str, Enum):
"""Core supported update channels."""
STABLE = "stable"
@ -383,7 +384,7 @@ class UpdateChannels(str, Enum):
DEV = "dev"
class CoreStates(str, Enum):
class CoreState(str, Enum):
"""Represent current loading state."""
INITIALIZE = "initialize"

View File

@ -5,7 +5,7 @@ import logging
import async_timeout
from .const import SOCKET_DBUS, SUPERVISED_SUPPORTED_OS, AddonStartup, CoreStates
from .const import SOCKET_DBUS, SUPERVISED_SUPPORTED_OS, AddonStartup, CoreState
from .coresys import CoreSys, CoreSysAttributes
from .exceptions import (
DockerAPIError,
@ -23,7 +23,7 @@ class Core(CoreSysAttributes):
def __init__(self, coresys: CoreSys):
"""Initialize Supervisor object."""
self.coresys: CoreSys = coresys
self.state: CoreStates = CoreStates.INITIALIZE
self.state: CoreState = CoreState.INITIALIZE
self.healthy: bool = True
self.supported: bool = True
@ -78,7 +78,7 @@ class Core(CoreSysAttributes):
async def setup(self):
"""Start setting up supervisor orchestration."""
self.state = CoreStates.SETUP
self.state = CoreState.SETUP
# Load DBus
await self.sys_dbus.load()
@ -152,7 +152,7 @@ class Core(CoreSysAttributes):
async def start(self):
"""Start Supervisor orchestration."""
self.state = CoreStates.STARTUP
self.state = CoreState.STARTUP
await self.sys_api.start()
# Check if system is healthy
@ -232,16 +232,16 @@ class Core(CoreSysAttributes):
self.sys_create_task(self.sys_updater.reload())
_LOGGER.info("Supervisor is up and running")
self.state = CoreStates.RUNNING
self.state = CoreState.RUNNING
async def stop(self):
"""Stop a running orchestration."""
# store new last boot / prevent time adjustments
if self.state == CoreStates.RUNNING:
if self.state == CoreState.RUNNING:
self._update_last_boot()
# don't process scheduler anymore
self.state = CoreStates.STOPPING
self.state = CoreState.STOPPING
# Stage 1
try:
@ -269,8 +269,8 @@ class Core(CoreSysAttributes):
async def shutdown(self):
"""Shutdown all running containers in correct order."""
# don't process scheduler anymore
if self.state == CoreStates.RUNNING:
self.state = CoreStates.STOPPING
if self.state == CoreState.RUNNING:
self.state = CoreState.STOPPING
# Shutdown Application Add-ons, using Home Assistant API
await self.sys_addons.shutdown(AddonStartup.APPLICATION)
@ -285,7 +285,7 @@ class Core(CoreSysAttributes):
await self.sys_addons.shutdown(AddonStartup.INITIALIZE)
# Shutdown all Plugins
if self.state == CoreStates.STOPPING:
if self.state == CoreState.STOPPING:
await self.sys_plugins.shutdown()
def _update_last_boot(self):

View File

@ -8,7 +8,7 @@ import aiohttp
import sentry_sdk
from .config import CoreConfig
from .const import UpdateChannels
from .const import UpdateChannel
from .docker import DockerAPI
from .misc.hardware import Hardware
@ -86,7 +86,7 @@ class CoreSys:
"""Return True if we run dev mode."""
if self._updater is None:
return False
return self._updater.channel == UpdateChannels.DEV
return self._updater.channel == UpdateChannel.DEV
@property
def loop(self) -> asyncio.BaseEventLoop:

View File

@ -4,7 +4,7 @@ import re
from aiohttp import hdrs
from ..const import ENV_SUPERVISOR_DEV, HEADER_TOKEN_OLD, CoreStates
from ..const import ENV_SUPERVISOR_DEV, HEADER_TOKEN_OLD, CoreState
from ..coresys import CoreSys
from ..exceptions import AddonConfigurationError
@ -35,7 +35,7 @@ def filter_data(coresys: CoreSys, event: dict, hint: dict) -> dict:
return None
# Not full startup - missing information
if coresys.core.state in (CoreStates.INITIALIZE, CoreStates.SETUP):
if coresys.core.state in (CoreState.INITIALIZE, CoreState.SETUP):
return event
# List installed addons

View File

@ -8,7 +8,7 @@ from uuid import UUID, uuid4
import async_timeout
import attr
from ..const import CoreStates
from ..const import CoreState
from ..coresys import CoreSys, CoreSysAttributes
_LOGGER: logging.Logger = logging.getLogger(__name__)
@ -58,10 +58,10 @@ class Scheduler(CoreSysAttributes):
async def _wrap_task():
"""Run schedule task and reschedule."""
try:
if self.sys_core.state == CoreStates.RUNNING:
if self.sys_core.state == CoreState.RUNNING:
await task.coro_callback()
finally:
if task.repeat and self.sys_core.state != CoreStates.STOPPING:
if task.repeat and self.sys_core.state != CoreState.STOPPING:
self._schedule_task(task)
else:
self._tasks.remove(task)

View File

@ -3,7 +3,7 @@ import asyncio
import logging
from pathlib import Path
from ..const import FOLDER_HOMEASSISTANT, SNAPSHOT_FULL, SNAPSHOT_PARTIAL, CoreStates
from ..const import FOLDER_HOMEASSISTANT, SNAPSHOT_FULL, SNAPSHOT_PARTIAL, CoreState
from ..coresys import CoreSysAttributes
from ..exceptions import AddonsError
from ..utils.dt import utcnow
@ -126,7 +126,7 @@ class SnapshotManager(CoreSysAttributes):
snapshot = self._create_snapshot(name, SNAPSHOT_FULL, password)
_LOGGER.info("Full-Snapshot %s start", snapshot.slug)
try:
self.sys_core.state = CoreStates.FREEZE
self.sys_core.state = CoreState.FREEZE
await self.lock.acquire()
async with snapshot:
@ -148,7 +148,7 @@ class SnapshotManager(CoreSysAttributes):
return snapshot
finally:
self.sys_core.state = CoreStates.RUNNING
self.sys_core.state = CoreState.RUNNING
self.lock.release()
async def do_snapshot_partial(
@ -165,7 +165,7 @@ class SnapshotManager(CoreSysAttributes):
_LOGGER.info("Partial-Snapshot %s start", snapshot.slug)
try:
self.sys_core.state = CoreStates.FREEZE
self.sys_core.state = CoreState.FREEZE
await self.lock.acquire()
async with snapshot:
@ -197,7 +197,7 @@ class SnapshotManager(CoreSysAttributes):
return snapshot
finally:
self.sys_core.state = CoreStates.RUNNING
self.sys_core.state = CoreState.RUNNING
self.lock.release()
async def do_restore_full(self, snapshot, password=None):
@ -216,7 +216,7 @@ class SnapshotManager(CoreSysAttributes):
_LOGGER.info("Full-Restore %s start", snapshot.slug)
try:
self.sys_core.state = CoreStates.FREEZE
self.sys_core.state = CoreState.FREEZE
await self.lock.acquire()
async with snapshot:
@ -269,7 +269,7 @@ class SnapshotManager(CoreSysAttributes):
return True
finally:
self.sys_core.state = CoreStates.RUNNING
self.sys_core.state = CoreState.RUNNING
self.lock.release()
async def do_restore_partial(
@ -289,7 +289,7 @@ class SnapshotManager(CoreSysAttributes):
_LOGGER.info("Partial-Restore %s start", snapshot.slug)
try:
self.sys_core.state = CoreStates.FREEZE
self.sys_core.state = CoreState.FREEZE
await self.lock.acquire()
async with snapshot:
@ -343,5 +343,5 @@ class SnapshotManager(CoreSysAttributes):
return True
finally:
self.sys_core.state = CoreStates.RUNNING
self.sys_core.state = CoreState.RUNNING
self.lock.release()

View File

@ -20,7 +20,7 @@ from .const import (
ATTR_SUPERVISOR,
FILE_HASSIO_UPDATER,
URL_HASSIO_VERSION,
UpdateChannels,
UpdateChannel,
)
from .coresys import CoreSysAttributes
from .exceptions import HassioUpdaterError
@ -133,12 +133,12 @@ class Updater(JsonConfig, CoreSysAttributes):
)
@property
def channel(self) -> UpdateChannels:
def channel(self) -> UpdateChannel:
"""Return upstream channel of Supervisor instance."""
return self._data[ATTR_CHANNEL]
@channel.setter
def channel(self, value: UpdateChannels):
def channel(self, value: UpdateChannel):
"""Set upstream mode."""
self._data[ATTR_CHANNEL] = value

View File

@ -39,7 +39,7 @@ from .const import (
ATTR_WATCHDOG,
SUPERVISOR_VERSION,
LogLevel,
UpdateChannels,
UpdateChannel,
)
from .utils.validate import validate_timezone
@ -128,8 +128,8 @@ SCHEMA_HASS_CONFIG = vol.Schema(
SCHEMA_UPDATER_CONFIG = vol.Schema(
{
vol.Optional(ATTR_CHANNEL, default=UpdateChannels.STABLE): vol.Coerce(
UpdateChannels
vol.Optional(ATTR_CHANNEL, default=UpdateChannel.STABLE): vol.Coerce(
UpdateChannel
),
vol.Optional(ATTR_HOMEASSISTANT): vol.All(version_tag, str),
vol.Optional(ATTR_SUPERVISOR): vol.All(version_tag, str),

View File

@ -1,7 +1,7 @@
"""Test sentry data filter."""
from unittest.mock import patch
from supervisor.const import SUPERVISOR_VERSION, CoreStates
from supervisor.const import SUPERVISOR_VERSION, CoreState
from supervisor.exceptions import AddonConfigurationError
from supervisor.misc.filter import filter_data
@ -41,10 +41,10 @@ def test_not_started(coresys):
coresys.config.diagnostics = True
coresys.core.supported = True
coresys.core.state = CoreStates.INITIALIZE
coresys.core.state = CoreState.INITIALIZE
assert filter_data(coresys, SAMPLE_EVENT, {}) == SAMPLE_EVENT
coresys.core.state = CoreStates.SETUP
coresys.core.state = CoreState.SETUP
assert filter_data(coresys, SAMPLE_EVENT, {}) == SAMPLE_EVENT
@ -53,7 +53,7 @@ def test_defaults(coresys):
coresys.config.diagnostics = True
coresys.supported = True
coresys.core.state = CoreStates.RUNNING
coresys.core.state = CoreState.RUNNING
with patch("shutil.disk_usage", return_value=(42, 42, 2 * (1024.0 ** 3))):
filtered = filter_data(coresys, SAMPLE_EVENT, {})
@ -81,7 +81,7 @@ def test_sanitize(coresys):
coresys.config.diagnostics = True
coresys.supported = True
coresys.core.state = CoreStates.RUNNING
coresys.core.state = CoreState.RUNNING
with patch("shutil.disk_usage", return_value=(42, 42, 2 * (1024.0 ** 3))):
filtered = filter_data(coresys, event, {})

View File

@ -1,12 +1,12 @@
"""Test Supervisor scheduler backend."""
import asyncio
from supervisor.const import CoreStates
from supervisor.const import CoreState
async def test_simple_task(coresys):
"""Schedule a simple task."""
coresys.core.state = CoreStates.RUNNING
coresys.core.state = CoreState.RUNNING
trigger = []
async def test_task():
@ -21,7 +21,7 @@ async def test_simple_task(coresys):
async def test_simple_task_repeat(coresys):
"""Schedule a simple task and repeat."""
coresys.core.state = CoreStates.RUNNING
coresys.core.state = CoreState.RUNNING
trigger = []
async def test_task():
@ -36,7 +36,7 @@ async def test_simple_task_repeat(coresys):
async def test_simple_task_shutdown(coresys):
"""Schedule a simple task with shudown."""
coresys.core.state = CoreStates.RUNNING
coresys.core.state = CoreState.RUNNING
trigger = []
async def test_task():
@ -57,7 +57,7 @@ async def test_simple_task_shutdown(coresys):
async def test_simple_task_repeat_block(coresys):
"""Schedule a simple task with repeat and block."""
coresys.core.state = CoreStates.RUNNING
coresys.core.state = CoreState.RUNNING
trigger = []
async def test_task():