Add supervisor set add-on options helper (#41651)

This commit is contained in:
Martin Hjelmare 2020-10-15 23:38:53 +02:00 committed by GitHub
parent e28e453c08
commit da6bdd4464
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 35 additions and 17 deletions

View file

@ -24,7 +24,7 @@ from homeassistant.util.dt import utcnow
from .addon_panel import async_setup_addon_panel from .addon_panel import async_setup_addon_panel
from .auth import async_setup_auth_view from .auth import async_setup_auth_view
from .discovery import async_setup_discovery_view from .discovery import async_setup_discovery_view
from .handler import HassIO, HassioAPIError from .handler import HassIO, HassioAPIError, api_data
from .http import HassIOView from .http import HassIOView
from .ingress import async_setup_ingress_view from .ingress import async_setup_ingress_view
@ -137,47 +137,65 @@ async def async_get_addon_info(hass: HomeAssistantType, slug: str) -> dict:
@bind_hass @bind_hass
async def async_install_addon(hass: HomeAssistantType, slug: str) -> None: @api_data
async def async_install_addon(hass: HomeAssistantType, slug: str) -> dict:
"""Install add-on. """Install add-on.
The caller of the function should handle HassioAPIError. The caller of the function should handle HassioAPIError.
""" """
hassio = hass.data[DOMAIN] hassio = hass.data[DOMAIN]
command = f"/addons/{slug}/install" command = f"/addons/{slug}/install"
await hassio.send_command(command) return await hassio.send_command(command)
@bind_hass @bind_hass
async def async_uninstall_addon(hass: HomeAssistantType, slug: str) -> None: @api_data
async def async_uninstall_addon(hass: HomeAssistantType, slug: str) -> dict:
"""Uninstall add-on. """Uninstall add-on.
The caller of the function should handle HassioAPIError. The caller of the function should handle HassioAPIError.
""" """
hassio = hass.data[DOMAIN] hassio = hass.data[DOMAIN]
command = f"/addons/{slug}/uninstall" command = f"/addons/{slug}/uninstall"
await hassio.send_command(command) return await hassio.send_command(command)
@bind_hass @bind_hass
async def async_start_addon(hass: HomeAssistantType, slug: str) -> None: @api_data
async def async_start_addon(hass: HomeAssistantType, slug: str) -> dict:
"""Start add-on. """Start add-on.
The caller of the function should handle HassioAPIError. The caller of the function should handle HassioAPIError.
""" """
hassio = hass.data[DOMAIN] hassio = hass.data[DOMAIN]
command = f"/addons/{slug}/start" command = f"/addons/{slug}/start"
await hassio.send_command(command) return await hassio.send_command(command)
@bind_hass @bind_hass
async def async_stop_addon(hass: HomeAssistantType, slug: str) -> None: @api_data
async def async_stop_addon(hass: HomeAssistantType, slug: str) -> dict:
"""Stop add-on. """Stop add-on.
The caller of the function should handle HassioAPIError. The caller of the function should handle HassioAPIError.
""" """
hassio = hass.data[DOMAIN] hassio = hass.data[DOMAIN]
command = f"/addons/{slug}/stop" command = f"/addons/{slug}/stop"
await hassio.send_command(command) return await hassio.send_command(command)
@bind_hass
@api_data
async def async_set_addon_options(
hass: HomeAssistantType, slug: str, options: dict
) -> dict:
"""Set add-on options.
The caller of the function should handle HassioAPIError.
"""
hassio = hass.data[DOMAIN]
command = f"/addons/{slug}/options"
return await hassio.send_command(command, payload=options)
@callback @callback

View file

@ -36,7 +36,7 @@ def _api_bool(funct):
return _wrapper return _wrapper
def _api_data(funct): def api_data(funct):
"""Return data of an api.""" """Return data of an api."""
async def _wrapper(*argv, **kwargs): async def _wrapper(*argv, **kwargs):
@ -66,7 +66,7 @@ class HassIO:
""" """
return self.send_command("/supervisor/ping", method="get", timeout=15) return self.send_command("/supervisor/ping", method="get", timeout=15)
@_api_data @api_data
def get_info(self): def get_info(self):
"""Return generic Supervisor information. """Return generic Supervisor information.
@ -74,7 +74,7 @@ class HassIO:
""" """
return self.send_command("/info", method="get") return self.send_command("/info", method="get")
@_api_data @api_data
def get_host_info(self): def get_host_info(self):
"""Return data for Host. """Return data for Host.
@ -82,7 +82,7 @@ class HassIO:
""" """
return self.send_command("/host/info", method="get") return self.send_command("/host/info", method="get")
@_api_data @api_data
def get_core_info(self): def get_core_info(self):
"""Return data for Home Asssistant Core. """Return data for Home Asssistant Core.
@ -90,7 +90,7 @@ class HassIO:
""" """
return self.send_command("/core/info", method="get") return self.send_command("/core/info", method="get")
@_api_data @api_data
def get_addon_info(self, addon): def get_addon_info(self, addon):
"""Return data for a Add-on. """Return data for a Add-on.
@ -98,7 +98,7 @@ class HassIO:
""" """
return self.send_command(f"/addons/{addon}/info", method="get") return self.send_command(f"/addons/{addon}/info", method="get")
@_api_data @api_data
def get_ingress_panels(self): def get_ingress_panels(self):
"""Return data for Add-on ingress panels. """Return data for Add-on ingress panels.
@ -122,7 +122,7 @@ class HassIO:
""" """
return self.send_command("/homeassistant/stop") return self.send_command("/homeassistant/stop")
@_api_data @api_data
def retrieve_discovery_messages(self): def retrieve_discovery_messages(self):
"""Return all discovery data from Hass.io API. """Return all discovery data from Hass.io API.
@ -130,7 +130,7 @@ class HassIO:
""" """
return self.send_command("/discovery", method="get") return self.send_command("/discovery", method="get")
@_api_data @api_data
def get_discovery_message(self, uuid): def get_discovery_message(self, uuid):
"""Return a single discovery data message. """Return a single discovery data message.