Use shared zeroconf for discovery netdisco (#37237)

* Use shared zeroconf for netdisco

* Update netdisco

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
This commit is contained in:
J. Nick Koston 2020-06-29 19:34:38 -05:00 committed by GitHub
parent 0f43476d03
commit fae47358b8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 17 additions and 14 deletions

View file

@ -14,6 +14,7 @@ from netdisco.discovery import NetworkDiscovery
import voluptuous as vol
from homeassistant import config_entries
from homeassistant.components import zeroconf
from homeassistant.const import EVENT_HOMEASSISTANT_START
from homeassistant.core import callback
import homeassistant.helpers.config_validation as cv
@ -147,6 +148,8 @@ async def async_setup(hass, config):
platform,
)
zeroconf_instance = await zeroconf.async_get_instance(hass)
async def new_service_found(service, info):
"""Handle a new service if one is found."""
if service in MIGRATED_SERVICE_HANDLERS:
@ -193,7 +196,7 @@ async def async_setup(hass, config):
async def scan_devices(now):
"""Scan for devices."""
try:
results = await hass.async_add_job(_discover, netdisco)
results = await hass.async_add_job(_discover, netdisco, zeroconf_instance)
for result in results:
hass.async_create_task(new_service_found(*result))
@ -214,11 +217,11 @@ async def async_setup(hass, config):
return True
def _discover(netdisco):
def _discover(netdisco, zeroconf_instance):
"""Discover devices."""
results = []
try:
netdisco.scan()
netdisco.scan(zeroconf_instance=zeroconf_instance)
for disc in netdisco.discover():
for service in netdisco.get_info(disc):

View file

@ -2,7 +2,7 @@
"domain": "discovery",
"name": "Discovery",
"documentation": "https://www.home-assistant.io/integrations/discovery",
"requirements": ["netdisco==2.7.1"],
"requirements": ["netdisco==2.8.0"],
"after_dependencies": ["zeroconf"],
"codeowners": [],
"quality_scale": "internal"

View file

@ -2,7 +2,7 @@
"domain": "ssdp",
"name": "Simple Service Discovery Protocol (SSDP)",
"documentation": "https://www.home-assistant.io/integrations/ssdp",
"requirements": ["defusedxml==0.6.0", "netdisco==2.7.1"],
"requirements": ["defusedxml==0.6.0", "netdisco==2.8.0"],
"after_dependencies": ["zeroconf"],
"codeowners": []
}

View file

@ -16,7 +16,7 @@ hass-nabucasa==0.34.7
home-assistant-frontend==20200629.0
importlib-metadata==1.6.0;python_version<'3.8'
jinja2>=2.11.1
netdisco==2.7.1
netdisco==2.8.0
pip>=8.0.3
python-slugify==4.0.0
pytz>=2020.1

View file

@ -953,7 +953,7 @@ netdata==0.2.0
# homeassistant.components.discovery
# homeassistant.components.ssdp
netdisco==2.7.1
netdisco==2.8.0
# homeassistant.components.neurio_energy
neurio==0.3.1

View file

@ -424,7 +424,7 @@ nessclient==0.9.15
# homeassistant.components.discovery
# homeassistant.components.ssdp
netdisco==2.7.1
netdisco==2.8.0
# homeassistant.components.nexia
nexia==0.9.3

View file

@ -58,7 +58,7 @@ async def mock_discovery(hass, discoveries, config=BASE_CONFIG):
async def test_unknown_service(hass):
"""Test that unknown service is ignored."""
def discover(netdisco):
def discover(netdisco, zeroconf_instance):
"""Fake discovery."""
return [("this_service_will_never_be_supported", {"info": "some"})]
@ -71,7 +71,7 @@ async def test_unknown_service(hass):
async def test_load_platform(hass):
"""Test load a platform."""
def discover(netdisco):
def discover(netdisco, zeroconf_instance):
"""Fake discovery."""
return [(SERVICE, SERVICE_INFO)]
@ -87,7 +87,7 @@ async def test_load_platform(hass):
async def test_load_component(hass):
"""Test load a component."""
def discover(netdisco):
def discover(netdisco, zeroconf_instance):
"""Fake discovery."""
return [(SERVICE_NO_PLATFORM, SERVICE_INFO)]
@ -107,7 +107,7 @@ async def test_load_component(hass):
async def test_ignore_service(hass):
"""Test ignore service."""
def discover(netdisco):
def discover(netdisco, zeroconf_instance):
"""Fake discovery."""
return [(SERVICE_NO_PLATFORM, SERVICE_INFO)]
@ -120,7 +120,7 @@ async def test_ignore_service(hass):
async def test_discover_duplicates(hass):
"""Test load a component."""
def discover(netdisco):
def discover(netdisco, zeroconf_instance):
"""Fake discovery."""
return [
(SERVICE_NO_PLATFORM, SERVICE_INFO),
@ -145,7 +145,7 @@ async def test_discover_config_flow(hass):
"""Test discovery triggering a config flow."""
discovery_info = {"hello": "world"}
def discover(netdisco):
def discover(netdisco, zeroconf_instance):
"""Fake discovery."""
return [("mock-service", discovery_info)]