Remove deprecated YAML support from OpenSky (#107585)
This commit is contained in:
parent
8150754b9b
commit
ca886de3ca
4 changed files with 12 additions and 208 deletions
|
@ -25,10 +25,14 @@ from homeassistant.core import callback
|
|||
from homeassistant.data_entry_flow import FlowResult
|
||||
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
from homeassistant.helpers.typing import ConfigType
|
||||
|
||||
from .const import CONF_CONTRIBUTING_USER, DEFAULT_NAME, DOMAIN
|
||||
from .sensor import CONF_ALTITUDE, DEFAULT_ALTITUDE
|
||||
from .const import (
|
||||
CONF_ALTITUDE,
|
||||
CONF_CONTRIBUTING_USER,
|
||||
DEFAULT_ALTITUDE,
|
||||
DEFAULT_NAME,
|
||||
DOMAIN,
|
||||
)
|
||||
|
||||
|
||||
class OpenSkyConfigFlowHandler(ConfigFlow, domain=DOMAIN):
|
||||
|
@ -77,24 +81,6 @@ class OpenSkyConfigFlowHandler(ConfigFlow, domain=DOMAIN):
|
|||
),
|
||||
)
|
||||
|
||||
async def async_step_import(self, import_config: ConfigType) -> FlowResult:
|
||||
"""Import config from yaml."""
|
||||
entry_data = {
|
||||
CONF_LATITUDE: import_config.get(CONF_LATITUDE, self.hass.config.latitude),
|
||||
CONF_LONGITUDE: import_config.get(
|
||||
CONF_LONGITUDE, self.hass.config.longitude
|
||||
),
|
||||
}
|
||||
self._async_abort_entries_match(entry_data)
|
||||
return self.async_create_entry(
|
||||
title=import_config.get(CONF_NAME, DEFAULT_NAME),
|
||||
data=entry_data,
|
||||
options={
|
||||
CONF_RADIUS: import_config[CONF_RADIUS] * 1000,
|
||||
CONF_ALTITUDE: import_config.get(CONF_ALTITUDE, DEFAULT_ALTITUDE),
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
class OpenSkyOptionsFlowHandler(OptionsFlowWithConfigEntry):
|
||||
"""OpenSky Options flow handler."""
|
||||
|
|
|
@ -1,66 +1,16 @@
|
|||
"""Sensor for the Open Sky Network."""
|
||||
from __future__ import annotations
|
||||
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.components.sensor import (
|
||||
PLATFORM_SCHEMA,
|
||||
SensorEntity,
|
||||
SensorStateClass,
|
||||
)
|
||||
from homeassistant.config_entries import SOURCE_IMPORT, ConfigEntry
|
||||
from homeassistant.const import CONF_LATITUDE, CONF_LONGITUDE, CONF_NAME, CONF_RADIUS
|
||||
from homeassistant.core import DOMAIN as HOMEASSISTANT_DOMAIN, HomeAssistant
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
from homeassistant.components.sensor import SensorEntity, SensorStateClass
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
from homeassistant.helpers.issue_registry import IssueSeverity, async_create_issue
|
||||
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
|
||||
from homeassistant.helpers.update_coordinator import CoordinatorEntity
|
||||
|
||||
from .const import CONF_ALTITUDE, DEFAULT_ALTITUDE, DOMAIN, MANUFACTURER
|
||||
from .const import DOMAIN, MANUFACTURER
|
||||
from .coordinator import OpenSkyDataUpdateCoordinator
|
||||
|
||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
|
||||
{
|
||||
vol.Required(CONF_RADIUS): vol.Coerce(float),
|
||||
vol.Optional(CONF_NAME): cv.string,
|
||||
vol.Inclusive(CONF_LATITUDE, "coordinates"): cv.latitude,
|
||||
vol.Inclusive(CONF_LONGITUDE, "coordinates"): cv.longitude,
|
||||
vol.Optional(CONF_ALTITUDE, default=DEFAULT_ALTITUDE): vol.Coerce(float),
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
async def async_setup_platform(
|
||||
hass: HomeAssistant,
|
||||
config: ConfigType,
|
||||
async_add_entities: AddEntitiesCallback,
|
||||
discovery_info: DiscoveryInfoType | None = None,
|
||||
) -> None:
|
||||
"""Set up the OpenSky sensor platform from yaml."""
|
||||
|
||||
async_create_issue(
|
||||
hass,
|
||||
HOMEASSISTANT_DOMAIN,
|
||||
f"deprecated_yaml_{DOMAIN}",
|
||||
breaks_in_ha_version="2024.1.0",
|
||||
is_fixable=False,
|
||||
issue_domain=DOMAIN,
|
||||
severity=IssueSeverity.WARNING,
|
||||
translation_key="deprecated_yaml",
|
||||
translation_placeholders={
|
||||
"domain": DOMAIN,
|
||||
"integration_title": "OpenSky",
|
||||
},
|
||||
)
|
||||
|
||||
hass.async_create_task(
|
||||
hass.config_entries.flow.async_init(
|
||||
DOMAIN, context={"source": SOURCE_IMPORT}, data=config
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
async def async_setup_entry(
|
||||
hass: HomeAssistant,
|
||||
|
|
|
@ -9,14 +9,12 @@ from homeassistant import data_entry_flow
|
|||
from homeassistant.components.opensky.const import (
|
||||
CONF_ALTITUDE,
|
||||
CONF_CONTRIBUTING_USER,
|
||||
DEFAULT_NAME,
|
||||
DOMAIN,
|
||||
)
|
||||
from homeassistant.config_entries import SOURCE_IMPORT, SOURCE_USER
|
||||
from homeassistant.config_entries import SOURCE_USER
|
||||
from homeassistant.const import (
|
||||
CONF_LATITUDE,
|
||||
CONF_LONGITUDE,
|
||||
CONF_NAME,
|
||||
CONF_PASSWORD,
|
||||
CONF_RADIUS,
|
||||
CONF_USERNAME,
|
||||
|
@ -59,114 +57,6 @@ async def test_full_user_flow(hass: HomeAssistant) -> None:
|
|||
}
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("config", "title", "data", "options"),
|
||||
[
|
||||
(
|
||||
{CONF_RADIUS: 10.0},
|
||||
DEFAULT_NAME,
|
||||
{
|
||||
CONF_LATITUDE: 32.87336,
|
||||
CONF_LONGITUDE: -117.22743,
|
||||
},
|
||||
{
|
||||
CONF_RADIUS: 10000.0,
|
||||
CONF_ALTITUDE: 0,
|
||||
},
|
||||
),
|
||||
(
|
||||
{
|
||||
CONF_RADIUS: 10.0,
|
||||
CONF_NAME: "My home",
|
||||
},
|
||||
"My home",
|
||||
{
|
||||
CONF_LATITUDE: 32.87336,
|
||||
CONF_LONGITUDE: -117.22743,
|
||||
},
|
||||
{
|
||||
CONF_RADIUS: 10000.0,
|
||||
CONF_ALTITUDE: 0,
|
||||
},
|
||||
),
|
||||
(
|
||||
{
|
||||
CONF_RADIUS: 10.0,
|
||||
CONF_LATITUDE: 10.0,
|
||||
CONF_LONGITUDE: -100.0,
|
||||
},
|
||||
DEFAULT_NAME,
|
||||
{
|
||||
CONF_LATITUDE: 10.0,
|
||||
CONF_LONGITUDE: -100.0,
|
||||
},
|
||||
{
|
||||
CONF_RADIUS: 10000.0,
|
||||
CONF_ALTITUDE: 0,
|
||||
},
|
||||
),
|
||||
(
|
||||
{CONF_RADIUS: 10.0, CONF_ALTITUDE: 100.0},
|
||||
DEFAULT_NAME,
|
||||
{
|
||||
CONF_LATITUDE: 32.87336,
|
||||
CONF_LONGITUDE: -117.22743,
|
||||
},
|
||||
{
|
||||
CONF_RADIUS: 10000.0,
|
||||
CONF_ALTITUDE: 100.0,
|
||||
},
|
||||
),
|
||||
],
|
||||
)
|
||||
async def test_import_flow(
|
||||
hass: HomeAssistant,
|
||||
config: dict[str, Any],
|
||||
title: str,
|
||||
data: dict[str, Any],
|
||||
options: dict[str, Any],
|
||||
) -> None:
|
||||
"""Test the import flow."""
|
||||
with patch_setup_entry():
|
||||
result = await hass.config_entries.flow.async_init(
|
||||
DOMAIN, context={"source": SOURCE_IMPORT}, data=config
|
||||
)
|
||||
await hass.async_block_till_done()
|
||||
assert result["type"] == FlowResultType.CREATE_ENTRY
|
||||
assert result["title"] == title
|
||||
assert result["options"] == options
|
||||
assert result["data"] == data
|
||||
|
||||
|
||||
async def test_importing_already_exists_flow(hass: HomeAssistant) -> None:
|
||||
"""Test the import flow when same location already exists."""
|
||||
MockConfigEntry(
|
||||
domain=DOMAIN,
|
||||
title=DEFAULT_NAME,
|
||||
data={},
|
||||
options={
|
||||
CONF_LATITUDE: 32.87336,
|
||||
CONF_LONGITUDE: -117.22743,
|
||||
CONF_RADIUS: 10.0,
|
||||
CONF_ALTITUDE: 100.0,
|
||||
},
|
||||
).add_to_hass(hass)
|
||||
with patch_setup_entry():
|
||||
result = await hass.config_entries.flow.async_init(
|
||||
DOMAIN,
|
||||
context={"source": SOURCE_IMPORT},
|
||||
data={
|
||||
CONF_LATITUDE: 32.87336,
|
||||
CONF_LONGITUDE: -117.22743,
|
||||
CONF_RADIUS: 10.0,
|
||||
CONF_ALTITUDE: 100.0,
|
||||
},
|
||||
)
|
||||
await hass.async_block_till_done()
|
||||
assert result["type"] == FlowResultType.ABORT
|
||||
assert result["reason"] == "already_configured"
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("user_input", "error"),
|
||||
[
|
||||
|
|
|
@ -6,38 +6,16 @@ from freezegun.api import FrozenDateTimeFactory
|
|||
from syrupy import SnapshotAssertion
|
||||
|
||||
from homeassistant.components.opensky.const import (
|
||||
DOMAIN,
|
||||
EVENT_OPENSKY_ENTRY,
|
||||
EVENT_OPENSKY_EXIT,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntryState
|
||||
from homeassistant.const import CONF_PLATFORM, CONF_RADIUS, Platform
|
||||
from homeassistant.core import Event, HomeAssistant
|
||||
from homeassistant.helpers import issue_registry as ir
|
||||
from homeassistant.setup import async_setup_component
|
||||
|
||||
from . import get_states_response_fixture
|
||||
from .conftest import ComponentSetup
|
||||
|
||||
from tests.common import MockConfigEntry, async_fire_time_changed
|
||||
|
||||
LEGACY_CONFIG = {Platform.SENSOR: [{CONF_PLATFORM: DOMAIN, CONF_RADIUS: 10.0}]}
|
||||
|
||||
|
||||
async def test_legacy_migration(hass: HomeAssistant) -> None:
|
||||
"""Test migration from yaml to config flow."""
|
||||
with patch(
|
||||
"python_opensky.OpenSky.get_states",
|
||||
return_value=get_states_response_fixture("opensky/states.json"),
|
||||
):
|
||||
assert await async_setup_component(hass, Platform.SENSOR, LEGACY_CONFIG)
|
||||
await hass.async_block_till_done()
|
||||
entries = hass.config_entries.async_entries(DOMAIN)
|
||||
assert len(entries) == 1
|
||||
assert entries[0].state is ConfigEntryState.LOADED
|
||||
issue_registry = ir.async_get(hass)
|
||||
assert len(issue_registry.issues) == 1
|
||||
|
||||
|
||||
async def test_sensor(
|
||||
hass: HomeAssistant,
|
||||
|
|
Loading…
Add table
Reference in a new issue