From 9c902c5c69378a74d27fd88f02547b2e6c88ba57 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 2 Jun 2020 15:17:24 +0200 Subject: [PATCH] Expose all services/discovery with possible add-ons (#1772) --- API.md | 5 ++++- supervisor/api/discovery.py | 10 +++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/API.md b/API.md index c641dfea6..ac00b9cd4 100644 --- a/API.md +++ b/API.md @@ -672,7 +672,10 @@ Need ingress session as cookie. "uuid": "uuid", "config": {} } - ] + ], + "services": { + "ozw": ["core_zwave"] + } } ``` diff --git a/supervisor/api/discovery.py b/supervisor/api/discovery.py index b6077942c..d606e6136 100644 --- a/supervisor/api/discovery.py +++ b/supervisor/api/discovery.py @@ -5,6 +5,7 @@ from ..const import ( ATTR_ADDON, ATTR_CONFIG, ATTR_DISCOVERY, + ATTR_SERVICES, ATTR_SERVICE, ATTR_UUID, REQUEST_FROM, @@ -42,6 +43,7 @@ class APIDiscovery(CoreSysAttributes): """Show register services.""" self._check_permission_ha(request) + # Get available discovery discovery = [] for message in self.sys_discovery.list_messages: discovery.append( @@ -53,7 +55,13 @@ class APIDiscovery(CoreSysAttributes): } ) - return {ATTR_DISCOVERY: discovery} + # Get available services/add-ons + services = {} + for addon in self.sys_addons.all: + for name in addon.discovery: + services.setdefault(name, []).append(addon.slug) + + return {ATTR_DISCOVERY: discovery, ATTR_SERVICES: services} @api_process async def set_discovery(self, request):