Cleanup discovery data (#734)

* Cleanup discovery data

* Update API.md

* Update validate.py

* Update discovery.py

* Update const.py
This commit is contained in:
Pascal Vizeli 2018-10-01 16:17:46 +02:00 committed by GitHub
parent 36cdb05387
commit bf75a8a439
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 11 additions and 28 deletions

10
API.md
View File

@ -574,7 +574,7 @@ Write data to add-on stdin
} }
``` ```
### Service discovery ### discovery
- GET `/discovery` - GET `/discovery`
```json ```json
@ -584,8 +584,6 @@ Write data to add-on stdin
"addon": "slug", "addon": "slug",
"service": "name", "service": "name",
"uuid": "uuid", "uuid": "uuid",
"component": "component",
"platform": "null|platform",
"config": {} "config": {}
} }
] ]
@ -598,8 +596,6 @@ Write data to add-on stdin
"addon": "slug", "addon": "slug",
"service": "name", "service": "name",
"uuid": "uuid", "uuid": "uuid",
"component": "component",
"platform": "null|platform",
"config": {} "config": {}
} }
``` ```
@ -608,8 +604,6 @@ Write data to add-on stdin
```json ```json
{ {
"service": "name", "service": "name",
"component": "component",
"platform": "null|platform",
"config": {} "config": {}
} }
``` ```
@ -623,6 +617,8 @@ return:
- DEL `/discovery/{UUID}` - DEL `/discovery/{UUID}`
### Services
- GET `/services` - GET `/services`
```json ```json
{ {

View File

@ -3,8 +3,8 @@ import voluptuous as vol
from .utils import api_process, api_validate from .utils import api_process, api_validate
from ..const import ( from ..const import (
ATTR_ADDON, ATTR_UUID, ATTR_COMPONENT, ATTR_PLATFORM, ATTR_CONFIG, ATTR_ADDON, ATTR_UUID, ATTR_CONFIG, ATTR_DISCOVERY, ATTR_SERVICE,
ATTR_DISCOVERY, ATTR_SERVICE, REQUEST_FROM) REQUEST_FROM)
from ..coresys import CoreSysAttributes from ..coresys import CoreSysAttributes
from ..exceptions import APIError, APIForbidden from ..exceptions import APIError, APIForbidden
from ..validate import SERVICE_ALL from ..validate import SERVICE_ALL
@ -12,8 +12,6 @@ from ..validate import SERVICE_ALL
SCHEMA_DISCOVERY = vol.Schema({ SCHEMA_DISCOVERY = vol.Schema({
vol.Required(ATTR_SERVICE): SERVICE_ALL, vol.Required(ATTR_SERVICE): SERVICE_ALL,
vol.Required(ATTR_COMPONENT): vol.Coerce(str),
vol.Optional(ATTR_PLATFORM): vol.Maybe(vol.Coerce(str)),
vol.Optional(ATTR_CONFIG): vol.Maybe(dict), vol.Optional(ATTR_CONFIG): vol.Maybe(dict),
}) })
@ -44,8 +42,6 @@ class APIDiscovery(CoreSysAttributes):
ATTR_ADDON: message.addon, ATTR_ADDON: message.addon,
ATTR_SERVICE: message.service, ATTR_SERVICE: message.service,
ATTR_UUID: message.uuid, ATTR_UUID: message.uuid,
ATTR_COMPONENT: message.component,
ATTR_PLATFORM: message.platform,
ATTR_CONFIG: message.config, ATTR_CONFIG: message.config,
}) })
@ -78,8 +74,6 @@ class APIDiscovery(CoreSysAttributes):
ATTR_ADDON: message.addon, ATTR_ADDON: message.addon,
ATTR_SERVICE: message.service, ATTR_SERVICE: message.service,
ATTR_UUID: message.uuid, ATTR_UUID: message.uuid,
ATTR_COMPONENT: message.component,
ATTR_PLATFORM: message.platform,
ATTR_CONFIG: message.config, ATTR_CONFIG: message.config,
} }

View File

@ -160,8 +160,6 @@ ATTR_HOST = 'host'
ATTR_USERNAME = 'username' ATTR_USERNAME = 'username'
ATTR_PROTOCOL = 'protocol' ATTR_PROTOCOL = 'protocol'
ATTR_DISCOVERY = 'discovery' ATTR_DISCOVERY = 'discovery'
ATTR_PLATFORM = 'platform'
ATTR_COMPONENT = 'component'
ATTR_CONFIG = 'config' ATTR_CONFIG = 'config'
ATTR_SERVICES = 'services' ATTR_SERVICES = 'services'
ATTR_SERVICE = 'service' ATTR_SERVICE = 'service'

View File

@ -76,8 +76,8 @@ class Discovery(CoreSysAttributes, JsonConfig):
_LOGGER.warning("Duplicate discovery message from %s", addon.slug) _LOGGER.warning("Duplicate discovery message from %s", addon.slug)
return old_message return old_message
_LOGGER.info("Send discovery to Home Assistant %s/%s from %s", _LOGGER.info("Send discovery to Home Assistant %s from %s",
component, platform, addon.slug) service, addon.slug)
self.message_obj[message.uuid] = message self.message_obj[message.uuid] = message
self.save() self.save()
@ -89,8 +89,8 @@ class Discovery(CoreSysAttributes, JsonConfig):
self.message_obj.pop(message.uuid, None) self.message_obj.pop(message.uuid, None)
self.save() self.save()
_LOGGER.info("Delete discovery to Home Assistant %s/%s from %s", _LOGGER.info("Delete discovery to Home Assistant %s from %s",
message.component, message.platform, message.addon) message.service, message.addon)
self.sys_create_task(self._push_discovery(message, CMD_DEL)) self.sys_create_task(self._push_discovery(message, CMD_DEL))
async def _push_discovery(self, message, command): async def _push_discovery(self, message, command):
@ -115,9 +115,7 @@ class Discovery(CoreSysAttributes, JsonConfig):
@attr.s @attr.s
class Message: class Message:
"""Represent a single Discovery message.""" """Represent a single Discovery message."""
uuid = attr.ib(factory=lambda: uuid4().hex, cmp=False)
addon = attr.ib() addon = attr.ib()
service = attr.ib() service = attr.ib()
component = attr.ib()
platform = attr.ib()
config = attr.ib(cmp=False) config = attr.ib(cmp=False)
uuid = attr.ib(factory=lambda: uuid4().hex, cmp=False)

View File

@ -9,8 +9,7 @@ from .const import (
ATTR_ADDONS_CUSTOM_LIST, ATTR_PASSWORD, ATTR_HOMEASSISTANT, ATTR_HASSIO, ATTR_ADDONS_CUSTOM_LIST, ATTR_PASSWORD, ATTR_HOMEASSISTANT, ATTR_HASSIO,
ATTR_BOOT, ATTR_LAST_BOOT, ATTR_SSL, ATTR_PORT, ATTR_WATCHDOG, ATTR_CONFIG, ATTR_BOOT, ATTR_LAST_BOOT, ATTR_SSL, ATTR_PORT, ATTR_WATCHDOG, ATTR_CONFIG,
ATTR_WAIT_BOOT, ATTR_UUID, ATTR_REFRESH_TOKEN, ATTR_HASSOS_CLI, ATTR_WAIT_BOOT, ATTR_UUID, ATTR_REFRESH_TOKEN, ATTR_HASSOS_CLI,
ATTR_ACCESS_TOKEN, ATTR_DISCOVERY, ATTR_ADDON, ATTR_COMPONENT, ATTR_ACCESS_TOKEN, ATTR_DISCOVERY, ATTR_ADDON, ATTR_SERVICE,
ATTR_PLATFORM, ATTR_SERVICE,
SERVICE_MQTT, SERVICE_MQTT,
CHANNEL_STABLE, CHANNEL_BETA, CHANNEL_DEV) CHANNEL_STABLE, CHANNEL_BETA, CHANNEL_DEV)
from .utils.validate import schema_or, validate_timezone from .utils.validate import schema_or, validate_timezone
@ -114,8 +113,6 @@ SCHEMA_DISCOVERY = vol.Schema([
vol.Required(ATTR_UUID): UUID_MATCH, vol.Required(ATTR_UUID): UUID_MATCH,
vol.Required(ATTR_ADDON): vol.Coerce(str), vol.Required(ATTR_ADDON): vol.Coerce(str),
vol.Required(ATTR_SERVICE): SERVICE_ALL, vol.Required(ATTR_SERVICE): SERVICE_ALL,
vol.Required(ATTR_COMPONENT): vol.Coerce(str),
vol.Required(ATTR_PLATFORM): vol.Maybe(vol.Coerce(str)),
vol.Required(ATTR_CONFIG): vol.Maybe(dict), vol.Required(ATTR_CONFIG): vol.Maybe(dict),
}, extra=vol.REMOVE_EXTRA) }, extra=vol.REMOVE_EXTRA)
]) ])