From b52b60ff0955fd0d481d0188cfd140132e4c56f1 Mon Sep 17 00:00:00 2001 From: mib1185 Date: Sat, 4 May 2024 21:34:03 +0000 Subject: [PATCH 1/2] remove timeout option, set timeout static to 30 seconds --- homeassistant/components/synology_dsm/__init__.py | 5 ++++- homeassistant/components/synology_dsm/common.py | 4 ++-- homeassistant/components/synology_dsm/config_flow.py | 11 +++-------- homeassistant/components/synology_dsm/const.py | 2 +- tests/components/synology_dsm/test_config_flow.py | 6 +----- 5 files changed, 11 insertions(+), 17 deletions(-) diff --git a/homeassistant/components/synology_dsm/__init__.py b/homeassistant/components/synology_dsm/__init__.py index 2748b27c93d78c..490ccdc0dde25b 100644 --- a/homeassistant/components/synology_dsm/__init__.py +++ b/homeassistant/components/synology_dsm/__init__.py @@ -9,7 +9,7 @@ from synology_dsm.api.surveillance_station.camera import SynoCamera from homeassistant.config_entries import ConfigEntry -from homeassistant.const import CONF_MAC, CONF_VERIFY_SSL +from homeassistant.const import CONF_MAC, CONF_TIMEOUT, CONF_VERIFY_SSL from homeassistant.core import HomeAssistant from homeassistant.exceptions import ConfigEntryNotReady from homeassistant.helpers import config_validation as cv, device_registry as dr @@ -62,6 +62,9 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: hass.config_entries.async_update_entry( entry, data={**entry.data, CONF_VERIFY_SSL: DEFAULT_VERIFY_SSL} ) + if (options := dict(entry.options)) and options.get(CONF_TIMEOUT): + options.pop(CONF_TIMEOUT) + hass.config_entries.async_update_entry(entry, data=entry.data, options=options) # Continue setup api = SynoApi(hass, entry) diff --git a/homeassistant/components/synology_dsm/common.py b/homeassistant/components/synology_dsm/common.py index 04e8ae29ceb6f9..751f86172ca48f 100644 --- a/homeassistant/components/synology_dsm/common.py +++ b/homeassistant/components/synology_dsm/common.py @@ -28,7 +28,6 @@ CONF_PASSWORD, CONF_PORT, CONF_SSL, - CONF_TIMEOUT, CONF_USERNAME, CONF_VERIFY_SSL, ) @@ -38,6 +37,7 @@ from .const import ( CONF_DEVICE_TOKEN, + DEFAULT_TIMEOUT, EXCEPTION_DETAILS, EXCEPTION_UNKNOWN, SYNOLOGY_CONNECTION_EXCEPTIONS, @@ -92,7 +92,7 @@ async def async_setup(self) -> None: self._entry.data[CONF_USERNAME], self._entry.data[CONF_PASSWORD], self._entry.data[CONF_SSL], - timeout=self._entry.options.get(CONF_TIMEOUT) or 10, + timeout=DEFAULT_TIMEOUT, device_token=self._entry.data.get(CONF_DEVICE_TOKEN), ) await self.dsm.login() diff --git a/homeassistant/components/synology_dsm/config_flow.py b/homeassistant/components/synology_dsm/config_flow.py index 785baa50b29bae..63ff804951c374 100644 --- a/homeassistant/components/synology_dsm/config_flow.py +++ b/homeassistant/components/synology_dsm/config_flow.py @@ -34,7 +34,6 @@ CONF_PORT, CONF_SCAN_INTERVAL, CONF_SSL, - CONF_TIMEOUT, CONF_USERNAME, CONF_VERIFY_SSL, ) @@ -179,7 +178,9 @@ async def async_validate_input_create_entry( port = DEFAULT_PORT session = async_get_clientsession(self.hass, verify_ssl) - api = SynologyDSM(session, host, port, username, password, use_ssl, timeout=30) + api = SynologyDSM( + session, host, port, username, password, use_ssl, timeout=DEFAULT_TIMEOUT + ) errors = {} try: @@ -392,12 +393,6 @@ async def async_step_init( CONF_SCAN_INTERVAL, DEFAULT_SCAN_INTERVAL ), ): cv.positive_int, - vol.Required( - CONF_TIMEOUT, - default=self.config_entry.options.get( - CONF_TIMEOUT, DEFAULT_TIMEOUT - ), - ): cv.positive_int, vol.Required( CONF_SNAPSHOT_QUALITY, default=self.config_entry.options.get( diff --git a/homeassistant/components/synology_dsm/const.py b/homeassistant/components/synology_dsm/const.py index 140e07e975b58f..35d3008b41631f 100644 --- a/homeassistant/components/synology_dsm/const.py +++ b/homeassistant/components/synology_dsm/const.py @@ -40,7 +40,7 @@ DEFAULT_PORT_SSL = 5001 # Options DEFAULT_SCAN_INTERVAL = 15 # min -DEFAULT_TIMEOUT = 10 # sec +DEFAULT_TIMEOUT = 30 # sec DEFAULT_SNAPSHOT_QUALITY = SNAPSHOT_PROFILE_BALANCED ENTITY_UNIT_LOAD = "load" diff --git a/tests/components/synology_dsm/test_config_flow.py b/tests/components/synology_dsm/test_config_flow.py index 85814f84aadef7..1574526a7014c8 100644 --- a/tests/components/synology_dsm/test_config_flow.py +++ b/tests/components/synology_dsm/test_config_flow.py @@ -19,7 +19,6 @@ CONF_SNAPSHOT_QUALITY, DEFAULT_SCAN_INTERVAL, DEFAULT_SNAPSHOT_QUALITY, - DEFAULT_TIMEOUT, DOMAIN, ) from homeassistant.config_entries import ( @@ -35,7 +34,6 @@ CONF_PORT, CONF_SCAN_INTERVAL, CONF_SSL, - CONF_TIMEOUT, CONF_USERNAME, CONF_VERIFY_SSL, ) @@ -608,18 +606,16 @@ async def test_options_flow(hass: HomeAssistant, service: MagicMock) -> None: ) assert result["type"] is FlowResultType.CREATE_ENTRY assert config_entry.options[CONF_SCAN_INTERVAL] == DEFAULT_SCAN_INTERVAL - assert config_entry.options[CONF_TIMEOUT] == DEFAULT_TIMEOUT assert config_entry.options[CONF_SNAPSHOT_QUALITY] == DEFAULT_SNAPSHOT_QUALITY # Manual result = await hass.config_entries.options.async_init(config_entry.entry_id) result = await hass.config_entries.options.async_configure( result["flow_id"], - user_input={CONF_SCAN_INTERVAL: 2, CONF_TIMEOUT: 30, CONF_SNAPSHOT_QUALITY: 0}, + user_input={CONF_SCAN_INTERVAL: 2, CONF_SNAPSHOT_QUALITY: 0}, ) assert result["type"] is FlowResultType.CREATE_ENTRY assert config_entry.options[CONF_SCAN_INTERVAL] == 2 - assert config_entry.options[CONF_TIMEOUT] == 30 assert config_entry.options[CONF_SNAPSHOT_QUALITY] == 0 From a13d2e04061b8631ca37966a4cba35f749cc01c6 Mon Sep 17 00:00:00 2001 From: mib1185 Date: Sun, 5 May 2024 16:42:33 +0000 Subject: [PATCH 2/2] be slightly faster :) --- homeassistant/components/synology_dsm/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/synology_dsm/__init__.py b/homeassistant/components/synology_dsm/__init__.py index e3f2abc6a107bf..4e10fb2e274866 100644 --- a/homeassistant/components/synology_dsm/__init__.py +++ b/homeassistant/components/synology_dsm/__init__.py @@ -63,7 +63,8 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: hass.config_entries.async_update_entry( entry, data={**entry.data, CONF_VERIFY_SSL: DEFAULT_VERIFY_SSL} ) - if (options := dict(entry.options)) and options.get(CONF_TIMEOUT): + if entry.options.get(CONF_TIMEOUT): + options = dict(entry.options) options.pop(CONF_TIMEOUT) hass.config_entries.async_update_entry(entry, data=entry.data, options=options)