1
0
mirror of https://github.com/home-assistant/core.git synced 2025-12-24 12:59:34 +00:00

Removed assumptions about provided upnp data (#17604)

* Removed assumptions about incomplete UPnP devices

* Removed assumptions about incomplete UPnP devices
This commit is contained in:
Rick van Hattem
2018-11-01 22:59:42 +01:00
committed by Martin Hjelmare
parent 9b47af68ae
commit 82edea6077
3 changed files with 41 additions and 4 deletions

View File

@@ -1,4 +1,5 @@
"""Config flow for UPNP."""
import logging
from collections import OrderedDict
import voluptuous as vol
@@ -14,6 +15,9 @@ from .const import (
from .const import DOMAIN
_LOGGER = logging.getLogger(__name__)
async def async_ensure_domain_data(hass):
"""Ensure hass.data is filled properly."""
hass.data[DOMAIN] = hass.data.get(DOMAIN, {})
@@ -70,14 +74,25 @@ class UpnpFlowHandler(data_entry_flow.FlowHandler):
"""
await async_ensure_domain_data(self.hass)
if not discovery_info.get('udn') or not discovery_info.get('host'):
# Silently ignore incomplete/broken devices to prevent constant
# errors/warnings
_LOGGER.debug('UPnP device is missing the udn. Provided info: %r',
discovery_info)
return self.async_abort(reason='incomplete_device')
# store discovered device
discovery_info['friendly_name'] = \
'{} ({})'.format(discovery_info['host'], discovery_info['name'])
discovery_info['friendly_name'] = discovery_info.get('host', '')
# add name if available
if discovery_info.get('name'):
discovery_info['friendly_name'] += ' ({name})'.format(
**discovery_info)
self._store_discovery_info(discovery_info)
# ensure not already discovered/configured
udn = discovery_info['udn']
if udn in self._configured_upnp_igds:
if discovery_info.get('udn') in self._configured_upnp_igds:
return self.async_abort(reason='already_configured')
# auto config?