Import hassio (#64561)

* Import hassio

* Fix HassioAPIError

* Use relative import

* Adjust import

Co-authored-by: epenet <epenet@users.noreply.github.com>
This commit is contained in:
epenet 2022-01-20 19:03:26 +01:00 committed by GitHub
parent f622bf4ff2
commit 6f631c542c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 33 additions and 33 deletions

View file

@ -403,7 +403,7 @@ def is_hassio(hass: HomeAssistant) -> bool:
@callback
def get_supervisor_ip():
def get_supervisor_ip() -> str:
"""Return the supervisor ip address."""
if "SUPERVISOR" not in os.environ:
return None

View file

@ -4,6 +4,8 @@ import os
from homeassistant.components import system_health
from homeassistant.core import HomeAssistant, callback
from . import get_host_info, get_info, get_os_info, get_supervisor_info
SUPERVISOR_PING = f"http://{os.environ['HASSIO']}/supervisor/ping"
OBSERVER_URL = f"http://{os.environ['HASSIO']}:4357"
@ -18,9 +20,9 @@ def async_register(
async def system_health_info(hass: HomeAssistant):
"""Get info for the info page."""
info = hass.components.hassio.get_info()
host_info = hass.components.hassio.get_host_info()
supervisor_info = hass.components.hassio.get_supervisor_info()
info = get_info(hass)
host_info = get_host_info(hass)
supervisor_info = get_supervisor_info(hass)
if supervisor_info.get("healthy"):
healthy = True
@ -52,7 +54,7 @@ async def system_health_info(hass: HomeAssistant):
}
if info.get("hassos") is not None:
os_info = hass.components.hassio.get_os_info()
os_info = get_os_info(hass)
information["board"] = os_info.get("board")
information["supervisor_api"] = system_health.async_check_can_reach_url(

View file

@ -14,6 +14,7 @@ from homeassistant.helpers.dispatcher import (
async_dispatcher_send,
)
from . import HassioAPIError
from .const import (
ATTR_DATA,
ATTR_ENDPOINT,
@ -114,8 +115,8 @@ async def websocket_supervisor_api(
)
if result.get(ATTR_RESULT) == "error":
raise hass.components.hassio.HassioAPIError(result.get("message"))
except hass.components.hassio.HassioAPIError as err:
raise HassioAPIError(result.get("message"))
except HassioAPIError as err:
_LOGGER.error("Failed to to call %s - %s", msg[ATTR_ENDPOINT], err)
connection.send_error(
msg[WS_ID], code=websocket_api.ERR_UNKNOWN_ERROR, message=str(err)

View file

@ -135,11 +135,12 @@ async def process_wrong_login(request: Request) -> None:
request.app[KEY_FAILED_LOGIN_ATTEMPTS][remote_addr] += 1
# Supervisor IP should never be banned
if (
"hassio" in hass.config.components
and hass.components.hassio.get_supervisor_ip() == str(remote_addr)
):
return
if "hassio" in hass.config.components:
# pylint: disable=import-outside-toplevel
from homeassistant.components import hassio
if hassio.get_supervisor_ip() == str(remote_addr):
return
if (
request.app[KEY_FAILED_LOGIN_ATTEMPTS][remote_addr]

View file

@ -20,7 +20,7 @@ from openzwavemqtt.models.node import OZWNode
from openzwavemqtt.models.value import OZWValue
from openzwavemqtt.util.mqtt_client import MQTTClient
from homeassistant.components import mqtt
from homeassistant.components import hassio, mqtt
from homeassistant.components.hassio.handler import HassioAPIError
from homeassistant.config_entries import ConfigEntry, ConfigEntryState
from homeassistant.const import EVENT_HOMEASSISTANT_STOP
@ -75,9 +75,7 @@ async def async_setup_entry( # noqa: C901
if entry.data.get(CONF_USE_ADDON):
# Do not use MQTT integration. Use own MQTT client.
# Retrieve discovery info from the OpenZWave add-on.
discovery_info = await hass.components.hassio.async_get_addon_discovery_info(
"core_zwave"
)
discovery_info = await hassio.async_get_addon_discovery_info(hass, "core_zwave")
if not discovery_info:
_LOGGER.error("Failed to get add-on discovery info")
@ -326,12 +324,12 @@ async def async_remove_entry(hass: HomeAssistant, entry: ConfigEntry) -> None:
return
try:
await hass.components.hassio.async_stop_addon("core_zwave")
await hassio.async_stop_addon(hass, "core_zwave")
except HassioAPIError as err:
_LOGGER.error("Failed to stop the OpenZWave add-on: %s", err)
return
try:
await hass.components.hassio.async_uninstall_addon("core_zwave")
await hassio.async_uninstall_addon(hass, "core_zwave")
except HassioAPIError as err:
_LOGGER.error("Failed to uninstall the OpenZWave add-on: %s", err)

View file

@ -4,6 +4,7 @@ import logging
import voluptuous as vol
from homeassistant import config_entries
from homeassistant.components import hassio
from homeassistant.components.hassio import HassioServiceInfo
from homeassistant.core import callback
from homeassistant.data_entry_flow import AbortFlow, FlowResult
@ -44,7 +45,7 @@ class DomainConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
# Set a unique_id to make sure discovery flow is aborted on progress.
await self.async_set_unique_id(DOMAIN, raise_on_progress=False)
if not self.hass.components.hassio.is_hassio():
if not hassio.is_hassio(self.hass):
return self._async_use_mqtt_integration()
return await self.async_step_on_supervisor()
@ -127,7 +128,7 @@ class DomainConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
try:
await self.install_task
except self.hass.components.hassio.HassioAPIError as err:
except hassio.HassioAPIError as err:
_LOGGER.error("Failed to install OpenZWave add-on: %s", err)
return self.async_show_progress_done(next_step_id="install_failed")
@ -159,8 +160,8 @@ class DomainConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
await self._async_set_addon_config(new_addon_config)
try:
await self.hass.components.hassio.async_start_addon("core_zwave")
except self.hass.components.hassio.HassioAPIError as err:
await hassio.async_start_addon(self.hass, "core_zwave")
except hassio.HassioAPIError as err:
_LOGGER.error("Failed to start OpenZWave add-on: %s", err)
errors["base"] = "addon_start_failed"
else:
@ -185,10 +186,8 @@ class DomainConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
async def _async_get_addon_info(self):
"""Return and cache OpenZWave add-on info."""
try:
addon_info = await self.hass.components.hassio.async_get_addon_info(
"core_zwave"
)
except self.hass.components.hassio.HassioAPIError as err:
addon_info = await hassio.async_get_addon_info(self.hass, "core_zwave")
except hassio.HassioAPIError as err:
_LOGGER.error("Failed to get OpenZWave add-on info: %s", err)
raise AbortFlow("addon_info_failed") from err
@ -213,17 +212,15 @@ class DomainConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
"""Set OpenZWave add-on config."""
options = {"options": config}
try:
await self.hass.components.hassio.async_set_addon_options(
"core_zwave", options
)
except self.hass.components.hassio.HassioAPIError as err:
await hassio.async_set_addon_options(self.hass, "core_zwave", options)
except hassio.HassioAPIError as err:
_LOGGER.error("Failed to set OpenZWave add-on config: %s", err)
raise AbortFlow("addon_set_config_failed") from err
async def _async_install_addon(self):
"""Install the OpenZWave add-on."""
try:
await self.hass.components.hassio.async_install_addon("core_zwave")
await hassio.async_install_addon(self.hass, "core_zwave")
finally:
# Continue the flow after show progress when the task is done.
self.hass.async_create_task(

View file

@ -7,6 +7,7 @@ import async_timeout
from awesomeversion import AwesomeVersion
import voluptuous as vol
from homeassistant.components import hassio
from homeassistant.const import Platform, __version__ as current_version
from homeassistant.core import HomeAssistant
from homeassistant.helpers import discovery, update_coordinator
@ -79,8 +80,8 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
_LOGGER.debug("Fetched version %s: %s", newest, release_notes)
# Load data from Supervisor
if hass.components.hassio.is_hassio():
core_info = hass.components.hassio.get_core_info()
if hassio.is_hassio(hass):
core_info = hassio.get_core_info(hass)
newest = core_info["version_latest"]
# Validate version