11"""Validate addons options schema."""
22import logging
33import re
4+ import uuid
45
56import voluptuous as vol
67
1213 ATTR_ARCH , ATTR_DEVICES , ATTR_ENVIRONMENT , ATTR_HOST_NETWORK , ARCH_ARMHF ,
1314 ARCH_AARCH64 , ARCH_AMD64 , ARCH_I386 , ATTR_TMPFS , ATTR_PRIVILEGED ,
1415 ATTR_USER , ATTR_STATE , ATTR_SYSTEM , STATE_STARTED , STATE_STOPPED ,
15- ATTR_LOCATON , ATTR_REPOSITORY , ATTR_TIMEOUT , ATTR_NETWORK ,
16+ ATTR_LOCATON , ATTR_REPOSITORY , ATTR_TIMEOUT , ATTR_NETWORK , ATTR_UUID ,
1617 ATTR_AUTO_UPDATE , ATTR_WEBUI , ATTR_AUDIO , ATTR_AUDIO_INPUT ,
1718 ATTR_AUDIO_OUTPUT , ATTR_HASSIO_API , ATTR_BUILD_FROM , ATTR_SQUASH ,
1819 ATTR_ARGS , ATTR_GPIO , ATTR_HOMEASSISTANT_API , ATTR_STDIN , ATTR_LEGACY )
@@ -116,7 +117,7 @@ def _simple_startup(value):
116117 }), False ),
117118 vol .Optional (ATTR_IMAGE ): vol .Match (r"^[\w{}]+/[\-\w{}]+$" ),
118119 vol .Optional (ATTR_TIMEOUT , default = 10 ):
119- vol .All (vol .Coerce (int ), vol .Range (min = 10 , max = 120 ))
120+ vol .All (vol .Coerce (int ), vol .Range (min = 10 , max = 120 )),
120121}, extra = vol .REMOVE_EXTRA )
121122
122123
@@ -137,20 +138,22 @@ def _simple_startup(value):
137138 vol .Optional (ATTR_ARGS , default = {}): vol .Schema ({
138139 vol .Coerce (str ): vol .Coerce (str )
139140 }),
140- })
141+ }, extra = vol . REMOVE_EXTRA )
141142
142143
143144# pylint: disable=no-value-for-parameter
144145SCHEMA_ADDON_USER = vol .Schema ({
145146 vol .Required (ATTR_VERSION ): vol .Coerce (str ),
147+ vol .Optional (ATTR_UUID , default = lambda : uuid .uuid4 ().hex ):
148+ vol .Match (r"^[0-9a-f]{32}$" ),
146149 vol .Optional (ATTR_OPTIONS , default = {}): dict ,
147150 vol .Optional (ATTR_AUTO_UPDATE , default = False ): vol .Boolean (),
148151 vol .Optional (ATTR_BOOT ):
149152 vol .In ([BOOT_AUTO , BOOT_MANUAL ]),
150153 vol .Optional (ATTR_NETWORK ): DOCKER_PORTS ,
151154 vol .Optional (ATTR_AUDIO_OUTPUT ): ALSA_CHANNEL ,
152155 vol .Optional (ATTR_AUDIO_INPUT ): ALSA_CHANNEL ,
153- })
156+ }, extra = vol . REMOVE_EXTRA )
154157
155158
156159SCHEMA_ADDON_SYSTEM = SCHEMA_ADDON_CONFIG .extend ({
0 commit comments