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:
parent
f622bf4ff2
commit
6f631c542c
7 changed files with 33 additions and 33 deletions
|
@ -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
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue