Fix Task container raises validation error on null values

This commit is contained in:
allegroai 2021-05-27 16:55:32 +03:00
parent d324b57dd7
commit f34332344e
2 changed files with 9 additions and 1 deletions

View File

@ -176,6 +176,13 @@ class SafeMapField(MapField, DictValidationMixin):
self.error("Empty keys are not allowed in a MapField") self.error("Empty keys are not allowed in a MapField")
class NullableStringField(StringField):
def validate(self, value):
if value is None:
return
super(NullableStringField, self).validate(value)
class SafeDictField(DictField, DictValidationMixin): class SafeDictField(DictField, DictValidationMixin):
def validate(self, value): def validate(self, value):
self._safe_validate(value) self._safe_validate(value)

View File

@ -18,6 +18,7 @@ from apiserver.database.fields import (
UnionField, UnionField,
SafeSortedListField, SafeSortedListField,
EmbeddedDocumentListField, EmbeddedDocumentListField,
NullableStringField,
) )
from apiserver.database.model import AttributedDocument from apiserver.database.model import AttributedDocument
from apiserver.database.model.base import ProperDictMixin, GetMixin from apiserver.database.model.base import ProperDictMixin, GetMixin
@ -260,7 +261,7 @@ class Task(AttributedDocument):
configuration = SafeMapField(field=EmbeddedDocumentField(ConfigurationItem)) configuration = SafeMapField(field=EmbeddedDocumentField(ConfigurationItem))
runtime = SafeDictField(default=dict) runtime = SafeDictField(default=dict)
models: Models = EmbeddedDocumentField(Models, default=Models) models: Models = EmbeddedDocumentField(Models, default=Models)
container = SafeMapField(field=StringField(default="")) container = SafeMapField(field=NullableStringField())
enqueue_status = StringField( enqueue_status = StringField(
choices=get_options(TaskStatus), exclude_by_default=True choices=get_options(TaskStatus), exclude_by_default=True
) )