Add timeout config option to Synology DSM (#40000)

This commit is contained in:
Quentame 2020-09-13 03:36:39 +02:00 committed by GitHub
parent b05c88f1bc
commit bab4ad4f17
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 21 additions and 4 deletions

View file

@ -23,6 +23,7 @@ from homeassistant.const import (
CONF_PORT, CONF_PORT,
CONF_SCAN_INTERVAL, CONF_SCAN_INTERVAL,
CONF_SSL, CONF_SSL,
CONF_TIMEOUT,
CONF_USERNAME, CONF_USERNAME,
) )
from homeassistant.core import callback from homeassistant.core import callback
@ -250,6 +251,7 @@ class SynoApi:
self._entry.data[CONF_USERNAME], self._entry.data[CONF_USERNAME],
self._entry.data[CONF_PASSWORD], self._entry.data[CONF_PASSWORD],
self._entry.data[CONF_SSL], self._entry.data[CONF_SSL],
timeout=self._entry.options.get(CONF_TIMEOUT),
device_token=self._entry.data.get("device_token"), device_token=self._entry.data.get("device_token"),
) )

View file

@ -23,6 +23,7 @@ from homeassistant.const import (
CONF_PORT, CONF_PORT,
CONF_SCAN_INTERVAL, CONF_SCAN_INTERVAL,
CONF_SSL, CONF_SSL,
CONF_TIMEOUT,
CONF_USERNAME, CONF_USERNAME,
) )
from homeassistant.core import callback from homeassistant.core import callback
@ -34,6 +35,7 @@ from .const import (
DEFAULT_PORT_SSL, DEFAULT_PORT_SSL,
DEFAULT_SCAN_INTERVAL, DEFAULT_SCAN_INTERVAL,
DEFAULT_SSL, DEFAULT_SSL,
DEFAULT_TIMEOUT,
) )
from .const import DOMAIN # pylint: disable=unused-import from .const import DOMAIN # pylint: disable=unused-import
@ -250,7 +252,13 @@ class SynologyDSMOptionsFlowHandler(config_entries.OptionsFlow):
default=self.config_entry.options.get( default=self.config_entry.options.get(
CONF_SCAN_INTERVAL, DEFAULT_SCAN_INTERVAL 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) return self.async_show_form(step_id="init", data_schema=data_schema)

View file

@ -27,6 +27,7 @@ DEFAULT_PORT = 5000
DEFAULT_PORT_SSL = 5001 DEFAULT_PORT_SSL = 5001
# Options # Options
DEFAULT_SCAN_INTERVAL = 15 # min DEFAULT_SCAN_INTERVAL = 15 # min
DEFAULT_TIMEOUT = 10 # sec
ENTITY_NAME = "name" ENTITY_NAME = "name"

View file

@ -44,7 +44,8 @@
"step": { "step": {
"init": { "init": {
"data": { "data": {
"scan_interval": "Minutes between scans" "scan_interval": "Minutes between scans",
"timeout": "Timeout (seconds)"
} }
} }
} }

View file

@ -44,7 +44,8 @@
"step": { "step": {
"init": { "init": {
"data": { "data": {
"scan_interval": "Minutes between scans" "scan_interval": "Minutes between scans",
"timeout": "Timeout (seconds)"
} }
} }
} }

View file

@ -19,6 +19,7 @@ from homeassistant.components.synology_dsm.const import (
DEFAULT_PORT_SSL, DEFAULT_PORT_SSL,
DEFAULT_SCAN_INTERVAL, DEFAULT_SCAN_INTERVAL,
DEFAULT_SSL, DEFAULT_SSL,
DEFAULT_TIMEOUT,
DOMAIN, DOMAIN,
) )
from homeassistant.config_entries import SOURCE_IMPORT, SOURCE_SSDP, SOURCE_USER from homeassistant.config_entries import SOURCE_IMPORT, SOURCE_SSDP, SOURCE_USER
@ -30,6 +31,7 @@ from homeassistant.const import (
CONF_PORT, CONF_PORT,
CONF_SCAN_INTERVAL, CONF_SCAN_INTERVAL,
CONF_SSL, CONF_SSL,
CONF_TIMEOUT,
CONF_USERNAME, CONF_USERNAME,
) )
from homeassistant.helpers.typing import HomeAssistantType 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 result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY
assert config_entry.options[CONF_SCAN_INTERVAL] == DEFAULT_SCAN_INTERVAL assert config_entry.options[CONF_SCAN_INTERVAL] == DEFAULT_SCAN_INTERVAL
assert config_entry.options[CONF_TIMEOUT] == DEFAULT_TIMEOUT
# Manual # Manual
result = await hass.config_entries.options.async_init(config_entry.entry_id) result = await hass.config_entries.options.async_init(config_entry.entry_id)
result = await hass.config_entries.options.async_configure( result = await hass.config_entries.options.async_configure(
result["flow_id"], 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 result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY
assert config_entry.options[CONF_SCAN_INTERVAL] == 2 assert config_entry.options[CONF_SCAN_INTERVAL] == 2
assert config_entry.options[CONF_TIMEOUT] == 30