53 lines
1.8 KiB
Python
53 lines
1.8 KiB
Python
"""Services for the Fastdotcom integration."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from homeassistant.config_entries import ConfigEntryState
|
|
from homeassistant.core import HomeAssistant, ServiceCall, callback
|
|
from homeassistant.exceptions import HomeAssistantError
|
|
from homeassistant.helpers import issue_registry as ir
|
|
|
|
from .const import DOMAIN, SERVICE_NAME
|
|
from .coordinator import FastdotcomDataUpdateCoordinator
|
|
|
|
|
|
def async_setup_services(hass: HomeAssistant) -> None:
|
|
"""Set up the service for the Fastdotcom integration."""
|
|
|
|
@callback
|
|
def collect_coordinator() -> FastdotcomDataUpdateCoordinator:
|
|
"""Collect the coordinator Fastdotcom."""
|
|
config_entries = hass.config_entries.async_entries(DOMAIN)
|
|
if not config_entries:
|
|
raise HomeAssistantError("No Fast.com config entries found")
|
|
|
|
for config_entry in config_entries:
|
|
if config_entry.state != ConfigEntryState.LOADED:
|
|
raise HomeAssistantError(f"{config_entry.title} is not loaded")
|
|
coordinator: FastdotcomDataUpdateCoordinator = hass.data[DOMAIN][
|
|
config_entry.entry_id
|
|
]
|
|
break
|
|
return coordinator
|
|
|
|
async def async_perform_service(call: ServiceCall) -> None:
|
|
"""Perform a service call to manually run Fastdotcom."""
|
|
ir.async_create_issue(
|
|
hass,
|
|
DOMAIN,
|
|
"service_deprecation",
|
|
breaks_in_ha_version="2024.7.0",
|
|
is_fixable=True,
|
|
is_persistent=True,
|
|
severity=ir.IssueSeverity.WARNING,
|
|
translation_key="service_deprecation",
|
|
)
|
|
coordinator = collect_coordinator()
|
|
await coordinator.async_request_refresh()
|
|
|
|
hass.services.async_register(
|
|
DOMAIN,
|
|
SERVICE_NAME,
|
|
async_perform_service,
|
|
)
|