From 13ce27c94c6c7b58dc6f93197f74b43feb9dd74f Mon Sep 17 00:00:00 2001 From: Petar Petrov Date: Thu, 26 Jun 2025 12:06:36 +0300 Subject: [PATCH] Remove obsolete routing info when migrating a Z-Wave network (#147568) --- homeassistant/components/zwave_js/api.py | 2 +- homeassistant/components/zwave_js/config_flow.py | 4 +++- tests/components/zwave_js/test_api.py | 6 +++--- tests/components/zwave_js/test_config_flow.py | 10 +++++----- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/homeassistant/components/zwave_js/api.py b/homeassistant/components/zwave_js/api.py index 168df5edcaa..a17f13e0d07 100644 --- a/homeassistant/components/zwave_js/api.py +++ b/homeassistant/components/zwave_js/api.py @@ -3105,7 +3105,7 @@ async def websocket_restore_nvm( driver.once("driver ready", set_driver_ready), ] - await controller.async_restore_nvm_base64(msg["data"]) + await controller.async_restore_nvm_base64(msg["data"], {"preserveRoutes": False}) with suppress(TimeoutError): async with asyncio.timeout(DRIVER_READY_TIMEOUT): diff --git a/homeassistant/components/zwave_js/config_flow.py b/homeassistant/components/zwave_js/config_flow.py index 5e8e7022839..35b54aa2e49 100644 --- a/homeassistant/components/zwave_js/config_flow.py +++ b/homeassistant/components/zwave_js/config_flow.py @@ -1400,7 +1400,9 @@ class ZWaveJSConfigFlow(ConfigFlow, domain=DOMAIN): driver.once("driver ready", set_driver_ready), ] try: - await controller.async_restore_nvm(self.backup_data) + await controller.async_restore_nvm( + self.backup_data, {"preserveRoutes": False} + ) except FailedCommand as err: raise AbortFlow(f"Failed to restore network: {err}") from err else: diff --git a/tests/components/zwave_js/test_api.py b/tests/components/zwave_js/test_api.py index d6aed0b6d22..bac0162ba74 100644 --- a/tests/components/zwave_js/test_api.py +++ b/tests/components/zwave_js/test_api.py @@ -5649,7 +5649,7 @@ async def test_restore_nvm( { "command": "controller.restore_nvm", "nvmData": "dGVzdA==", - "migrateOptions": {}, + "migrateOptions": {"preserveRoutes": False}, }, require_schema=42, ) @@ -5685,7 +5685,7 @@ async def test_restore_nvm( { "command": "controller.restore_nvm", "nvmData": "dGVzdA==", - "migrateOptions": {}, + "migrateOptions": {"preserveRoutes": False}, }, require_schema=42, ) @@ -5740,7 +5740,7 @@ async def test_restore_nvm( { "command": "controller.restore_nvm", "nvmData": "dGVzdA==", - "migrateOptions": {}, + "migrateOptions": {"preserveRoutes": False}, }, require_schema=42, ) diff --git a/tests/components/zwave_js/test_config_flow.py b/tests/components/zwave_js/test_config_flow.py index dd8838e0775..a7bb02d5920 100644 --- a/tests/components/zwave_js/test_config_flow.py +++ b/tests/components/zwave_js/test_config_flow.py @@ -900,7 +900,7 @@ async def test_usb_discovery_migration( client.driver.async_hard_reset = AsyncMock(side_effect=mock_reset_controller) - async def mock_restore_nvm(data: bytes): + async def mock_restore_nvm(data: bytes, options: dict[str, bool] | None = None): client.driver.controller.emit( "nvm convert progress", {"event": "nvm convert progress", "bytesRead": 100, "total": 200}, @@ -1031,7 +1031,7 @@ async def test_usb_discovery_migration_restore_driver_ready_timeout( client.driver.async_hard_reset = AsyncMock(side_effect=mock_reset_controller) - async def mock_restore_nvm(data: bytes): + async def mock_restore_nvm(data: bytes, options: dict[str, bool] | None = None): client.driver.controller.emit( "nvm convert progress", {"event": "nvm convert progress", "bytesRead": 100, "total": 200}, @@ -3501,7 +3501,7 @@ async def test_reconfigure_migrate_with_addon( client.driver.async_hard_reset = AsyncMock(side_effect=mock_reset_controller) - async def mock_restore_nvm(data: bytes): + async def mock_restore_nvm(data: bytes, options: dict[str, bool] | None = None): client.driver.controller.emit( "nvm convert progress", {"event": "nvm convert progress", "bytesRead": 100, "total": 200}, @@ -3686,7 +3686,7 @@ async def test_reconfigure_migrate_reset_driver_ready_timeout( client.driver.async_hard_reset = AsyncMock(side_effect=mock_reset_controller) - async def mock_restore_nvm(data: bytes): + async def mock_restore_nvm(data: bytes, options: dict[str, bool] | None = None): client.driver.controller.emit( "nvm convert progress", {"event": "nvm convert progress", "bytesRead": 100, "total": 200}, @@ -3835,7 +3835,7 @@ async def test_reconfigure_migrate_restore_driver_ready_timeout( client.driver.async_hard_reset = AsyncMock(side_effect=mock_reset_controller) - async def mock_restore_nvm(data: bytes): + async def mock_restore_nvm(data: bytes, options: dict[str, bool] | None = None): client.driver.controller.emit( "nvm convert progress", {"event": "nvm convert progress", "bytesRead": 100, "total": 200},