From bab4ad4f170bc7c7f703636e3b000c58e7405acc Mon Sep 17 00:00:00 2001 From: Quentame Date: Sun, 13 Sep 2020 03:36:39 +0200 Subject: [PATCH] Add timeout config option to Synology DSM (#40000) --- homeassistant/components/synology_dsm/__init__.py | 2 ++ homeassistant/components/synology_dsm/config_flow.py | 10 +++++++++- homeassistant/components/synology_dsm/const.py | 1 + homeassistant/components/synology_dsm/strings.json | 3 ++- .../components/synology_dsm/translations/en.json | 3 ++- tests/components/synology_dsm/test_config_flow.py | 6 +++++- 6 files changed, 21 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/synology_dsm/__init__.py b/homeassistant/components/synology_dsm/__init__.py index 223235a4121..6dcac767e5c 100644 --- a/homeassistant/components/synology_dsm/__init__.py +++ b/homeassistant/components/synology_dsm/__init__.py @@ -23,6 +23,7 @@ from homeassistant.const import ( CONF_PORT, CONF_SCAN_INTERVAL, CONF_SSL, + CONF_TIMEOUT, CONF_USERNAME, ) from homeassistant.core import callback @@ -250,6 +251,7 @@ class SynoApi: self._entry.data[CONF_USERNAME], self._entry.data[CONF_PASSWORD], self._entry.data[CONF_SSL], + timeout=self._entry.options.get(CONF_TIMEOUT), device_token=self._entry.data.get("device_token"), ) diff --git a/homeassistant/components/synology_dsm/config_flow.py b/homeassistant/components/synology_dsm/config_flow.py index a9df6f362cc..65be8e64ebe 100644 --- a/homeassistant/components/synology_dsm/config_flow.py +++ b/homeassistant/components/synology_dsm/config_flow.py @@ -23,6 +23,7 @@ from homeassistant.const import ( CONF_PORT, CONF_SCAN_INTERVAL, CONF_SSL, + CONF_TIMEOUT, CONF_USERNAME, ) from homeassistant.core import callback @@ -34,6 +35,7 @@ from .const import ( DEFAULT_PORT_SSL, DEFAULT_SCAN_INTERVAL, DEFAULT_SSL, + DEFAULT_TIMEOUT, ) from .const import DOMAIN # pylint: disable=unused-import @@ -250,7 +252,13 @@ class SynologyDSMOptionsFlowHandler(config_entries.OptionsFlow): default=self.config_entry.options.get( CONF_SCAN_INTERVAL, DEFAULT_SCAN_INTERVAL ), - ): cv.positive_int + ): cv.positive_int, + vol.Optional( + CONF_TIMEOUT, + default=self.config_entry.options.get( + CONF_TIMEOUT, DEFAULT_TIMEOUT + ), + ): cv.positive_int, } ) return self.async_show_form(step_id="init", data_schema=data_schema) diff --git a/homeassistant/components/synology_dsm/const.py b/homeassistant/components/synology_dsm/const.py index 693d8b2cd50..f993e0ece73 100644 --- a/homeassistant/components/synology_dsm/const.py +++ b/homeassistant/components/synology_dsm/const.py @@ -27,6 +27,7 @@ DEFAULT_PORT = 5000 DEFAULT_PORT_SSL = 5001 # Options DEFAULT_SCAN_INTERVAL = 15 # min +DEFAULT_TIMEOUT = 10 # sec ENTITY_NAME = "name" diff --git a/homeassistant/components/synology_dsm/strings.json b/homeassistant/components/synology_dsm/strings.json index c46f645719f..2bb81f6711d 100644 --- a/homeassistant/components/synology_dsm/strings.json +++ b/homeassistant/components/synology_dsm/strings.json @@ -44,7 +44,8 @@ "step": { "init": { "data": { - "scan_interval": "Minutes between scans" + "scan_interval": "Minutes between scans", + "timeout": "Timeout (seconds)" } } } diff --git a/homeassistant/components/synology_dsm/translations/en.json b/homeassistant/components/synology_dsm/translations/en.json index 48a8118528a..fc78d3cfa66 100644 --- a/homeassistant/components/synology_dsm/translations/en.json +++ b/homeassistant/components/synology_dsm/translations/en.json @@ -44,7 +44,8 @@ "step": { "init": { "data": { - "scan_interval": "Minutes between scans" + "scan_interval": "Minutes between scans", + "timeout": "Timeout (seconds)" } } } diff --git a/tests/components/synology_dsm/test_config_flow.py b/tests/components/synology_dsm/test_config_flow.py index 64527c70964..738a5bed332 100644 --- a/tests/components/synology_dsm/test_config_flow.py +++ b/tests/components/synology_dsm/test_config_flow.py @@ -19,6 +19,7 @@ from homeassistant.components.synology_dsm.const import ( DEFAULT_PORT_SSL, DEFAULT_SCAN_INTERVAL, DEFAULT_SSL, + DEFAULT_TIMEOUT, DOMAIN, ) from homeassistant.config_entries import SOURCE_IMPORT, SOURCE_SSDP, SOURCE_USER @@ -30,6 +31,7 @@ from homeassistant.const import ( CONF_PORT, CONF_SCAN_INTERVAL, CONF_SSL, + CONF_TIMEOUT, CONF_USERNAME, ) from homeassistant.helpers.typing import HomeAssistantType @@ -426,12 +428,14 @@ async def test_options_flow(hass: HomeAssistantType, service: MagicMock): ) assert result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY assert config_entry.options[CONF_SCAN_INTERVAL] == DEFAULT_SCAN_INTERVAL + assert config_entry.options[CONF_TIMEOUT] == DEFAULT_TIMEOUT # 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}, + user_input={CONF_SCAN_INTERVAL: 2, CONF_TIMEOUT: 30}, ) assert result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY assert config_entry.options[CONF_SCAN_INTERVAL] == 2 + assert config_entry.options[CONF_TIMEOUT] == 30