Deprecate entity_id parameter in Guardian service calls (#61129)

This commit is contained in:
Aaron Bach 2021-12-06 16:23:03 -07:00 committed by GitHub
parent da4349d133
commit 4aa7f36a53
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -3,7 +3,7 @@ from __future__ import annotations
import asyncio
from collections.abc import Awaitable, Callable
from typing import cast
from typing import TYPE_CHECKING, cast
from aioguardian import Client
from aioguardian.errors import GuardianError
@ -11,6 +11,8 @@ import voluptuous as vol
from homeassistant.config_entries import ConfigEntry, ConfigEntryState
from homeassistant.const import (
ATTR_DEVICE_ID,
ATTR_ENTITY_ID,
CONF_DEVICE_ID,
CONF_FILENAME,
CONF_IP_ADDRESS,
@ -19,7 +21,11 @@ from homeassistant.const import (
Platform,
)
from homeassistant.core import HomeAssistant, ServiceCall, callback
from homeassistant.helpers import config_validation as cv, device_registry as dr
from homeassistant.helpers import (
config_validation as cv,
device_registry as dr,
entity_registry as er,
)
from homeassistant.helpers.dispatcher import async_dispatcher_send
from homeassistant.helpers.entity import DeviceInfo, EntityDescription
from homeassistant.helpers.update_coordinator import (
@ -64,20 +70,41 @@ SERVICES = (
SERVICE_NAME_UPGRADE_FIRMWARE,
)
SERVICE_PAIR_UNPAIR_SENSOR_SCHEMA = vol.Schema(
{
vol.Required(CONF_DEVICE_ID): cv.string,
vol.Required(CONF_UID): cv.string,
}
SERVICE_BASE_SCHEMA = vol.All(
cv.deprecated(ATTR_ENTITY_ID),
vol.Schema(
{
vol.Optional(ATTR_DEVICE_ID): cv.string,
vol.Optional(ATTR_ENTITY_ID): cv.entity_id,
}
),
cv.has_at_least_one_key(ATTR_DEVICE_ID, ATTR_ENTITY_ID),
)
SERVICE_UPGRADE_FIRMWARE_SCHEMA = vol.Schema(
{
vol.Required(CONF_DEVICE_ID): cv.string,
vol.Optional(CONF_URL): cv.url,
vol.Optional(CONF_PORT): cv.port,
vol.Optional(CONF_FILENAME): cv.string,
},
SERVICE_PAIR_UNPAIR_SENSOR_SCHEMA = vol.All(
cv.deprecated(ATTR_ENTITY_ID),
vol.Schema(
{
vol.Optional(ATTR_DEVICE_ID): cv.string,
vol.Optional(ATTR_ENTITY_ID): cv.entity_id,
vol.Required(CONF_UID): cv.string,
}
),
cv.has_at_least_one_key(ATTR_DEVICE_ID, ATTR_ENTITY_ID),
)
SERVICE_UPGRADE_FIRMWARE_SCHEMA = vol.All(
cv.deprecated(ATTR_ENTITY_ID),
vol.Schema(
{
vol.Optional(ATTR_DEVICE_ID): cv.string,
vol.Optional(ATTR_ENTITY_ID): cv.entity_id,
vol.Optional(CONF_URL): cv.url,
vol.Optional(CONF_PORT): cv.port,
vol.Optional(CONF_FILENAME): cv.string,
},
),
cv.has_at_least_one_key(ATTR_DEVICE_ID, ATTR_ENTITY_ID),
)
@ -87,6 +114,14 @@ PLATFORMS = [Platform.BINARY_SENSOR, Platform.SENSOR, Platform.SWITCH]
@callback
def async_get_entry_id_for_service_call(hass: HomeAssistant, call: ServiceCall) -> str:
"""Get the entry ID related to a service call (by device ID)."""
if ATTR_ENTITY_ID in call.data:
entity_registry = er.async_get(hass)
entity_registry_entry = entity_registry.async_get(call.data[ATTR_ENTITY_ID])
if TYPE_CHECKING:
assert entity_registry_entry
assert entity_registry_entry.config_entry_id
return entity_registry_entry.config_entry_id
device_id = call.data[CONF_DEVICE_ID]
device_registry = dr.async_get(hass)
@ -222,15 +257,19 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
)
for service_name, schema, method in (
(SERVICE_NAME_DISABLE_AP, None, async_disable_ap),
(SERVICE_NAME_ENABLE_AP, None, async_enable_ap),
(SERVICE_NAME_DISABLE_AP, SERVICE_BASE_SCHEMA, async_disable_ap),
(SERVICE_NAME_ENABLE_AP, SERVICE_BASE_SCHEMA, async_enable_ap),
(
SERVICE_NAME_PAIR_SENSOR,
SERVICE_PAIR_UNPAIR_SENSOR_SCHEMA,
async_pair_sensor,
),
(SERVICE_NAME_REBOOT, None, async_reboot),
(SERVICE_NAME_RESET_VALVE_DIAGNOSTICS, None, async_reset_valve_diagnostics),
(SERVICE_NAME_REBOOT, SERVICE_BASE_SCHEMA, async_reboot),
(
SERVICE_NAME_RESET_VALVE_DIAGNOSTICS,
SERVICE_BASE_SCHEMA,
async_reset_valve_diagnostics,
),
(
SERVICE_NAME_UNPAIR_SENSOR,
SERVICE_PAIR_UNPAIR_SENSOR_SCHEMA,