diff --git a/homeassistant/components/hassio/services.py b/homeassistant/components/hassio/services.py index c8c8f0e7437e..3c3d6b25534f 100644 --- a/homeassistant/components/hassio/services.py +++ b/homeassistant/components/hassio/services.py @@ -21,7 +21,6 @@ from homeassistant.core import ( ServiceCall, ServiceResponse, SupportsResponse, - async_get_hass_or_none, callback, ) from homeassistant.exceptions import HomeAssistantError, ServiceValidationError @@ -52,8 +51,7 @@ from .const import ( MAIN_COORDINATOR, SupervisorEntityModel, ) -from .coordinator import HassioMainDataUpdateCoordinator, get_addons_info -from .exceptions import HassioNotReadyError +from .coordinator import HassioMainDataUpdateCoordinator from .handler import get_supervisor_client SERVICE_ADDON_START = "addon_start" @@ -113,31 +111,15 @@ def _normalize_partial_options_data( return data -def valid_addon(value: Any) -> str: - """Validate value is a valid addon slug.""" - value = VALID_ADDON_SLUG(value) - hass = async_get_hass_or_none() - - if not hass: - return value - try: - addons = get_addons_info(hass) - except HassioNotReadyError: - return value - if value not in addons: - raise vol.Invalid("Not a valid app slug") - return value - - SCHEMA_NO_DATA = vol.Schema({}) -SCHEMA_ADDON = vol.Schema({vol.Required(ATTR_ADDON): valid_addon}) +SCHEMA_ADDON = vol.Schema({vol.Required(ATTR_ADDON): VALID_ADDON_SLUG}) SCHEMA_ADDON_STDIN = SCHEMA_ADDON.extend( {vol.Required(ATTR_INPUT): vol.Any(dict, cv.string)} ) -SCHEMA_APP = vol.Schema({vol.Required(ATTR_APP): valid_addon}) +SCHEMA_APP = vol.Schema({vol.Required(ATTR_APP): VALID_ADDON_SLUG}) SCHEMA_APP_STDIN = SCHEMA_APP.extend( {vol.Required(ATTR_INPUT): vol.Any(dict, cv.string)} diff --git a/tests/components/hassio/test_init.py b/tests/components/hassio/test_init.py index 1d5f54e5f793..c86611047f4e 100644 --- a/tests/components/hassio/test_init.py +++ b/tests/components/hassio/test_init.py @@ -638,13 +638,13 @@ async def test_invalid_service_calls(hass: HomeAssistant, app_or_addon: str) -> with pytest.raises(Invalid): await hass.services.async_call( - "hassio", f"{app_or_addon}_start", {app_or_addon: "does_not_exist"} + "hassio", f"{app_or_addon}_start", {app_or_addon: "inv@lid"} ) with pytest.raises(Invalid): await hass.services.async_call( "hassio", f"{app_or_addon}_stdin", - {app_or_addon: "does_not_exist", "input": "test"}, + {app_or_addon: "inv@lid", "input": "test"}, )