Perform json and yaml validation on Job Templates

This commit is contained in:
Matthew Jones
2016-05-05 12:00:12 -04:00
parent e5bebf7b51
commit 675b596fb0
2 changed files with 30 additions and 1 deletions

View File

@@ -1773,6 +1773,21 @@ class JobTemplateSerializer(UnifiedJobTemplateSerializer, JobOptionsSerializer):
return super(JobTemplateSerializer, self).validate(attrs)
def validate_extra_vars(self, value):
# extra_vars must be blank, a valid JSON or YAML dict, or ...
# FIXME: support key=value pairs.
try:
json.loads((value or '').strip() or '{}')
return value
except ValueError:
pass
try:
yaml.safe_load(value)
return value
except yaml.YAMLError:
pass
raise serializers.ValidationError('Must be valid JSON or YAML')
class JobSerializer(UnifiedJobSerializer, JobOptionsSerializer):