mirror of
https://github.com/ansible/awx.git
synced 2026-01-16 12:20:45 -03:30
move vars validation method into validators.py
This commit is contained in:
parent
166053e0eb
commit
8036e294dd
@ -40,6 +40,7 @@ from awx.main.models import * # noqa
|
||||
from awx.main.access import get_user_capabilities
|
||||
from awx.main.fields import ImplicitRoleField
|
||||
from awx.main.utils import get_type_for_model, get_model_for_type, build_url, timestamp_apiformat, camelcase_to_underscore, getattrd
|
||||
from awx.main.validators import vars_validate_or_raise
|
||||
|
||||
from awx.conf.license import feature_enabled
|
||||
from awx.api.fields import BooleanNullField, CharNullField, ChoiceNullField, EncryptedPasswordField, VerbatimField
|
||||
@ -110,20 +111,6 @@ def reverse_gfk(content_object):
|
||||
camelcase_to_underscore(content_object.__class__.__name__): content_object.get_absolute_url()
|
||||
}
|
||||
|
||||
def vars_validate_or_raise(vars_str):
|
||||
# vars must be blank, a valid JSON or YAML dict, or ...
|
||||
try:
|
||||
json.loads((vars_str or '').strip() or '{}')
|
||||
return vars_str
|
||||
except ValueError:
|
||||
pass
|
||||
try:
|
||||
yaml.safe_load(vars_str)
|
||||
return vars_str
|
||||
except yaml.YAMLError:
|
||||
pass
|
||||
raise serializers.ValidationError('Must be valid JSON or YAML.')
|
||||
|
||||
|
||||
class BaseSerializerMetaclass(serializers.SerializerMetaclass):
|
||||
'''
|
||||
|
||||
@ -4,11 +4,16 @@
|
||||
# Python
|
||||
import base64
|
||||
import re
|
||||
import yaml
|
||||
import json
|
||||
|
||||
# Django
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.core.exceptions import ValidationError
|
||||
|
||||
# REST framework
|
||||
from rest_framework.serializers import ValidationError as RestValidationError
|
||||
|
||||
|
||||
def validate_pem(data, min_keys=0, max_keys=None, min_certs=0, max_certs=None):
|
||||
"""
|
||||
@ -166,3 +171,21 @@ def validate_ssh_private_key(data):
|
||||
credential.
|
||||
"""
|
||||
return validate_pem(data, min_keys=1)
|
||||
|
||||
def vars_validate_or_raise(vars_str):
|
||||
"""
|
||||
Validate that fields like extra_vars or variables on resources like
|
||||
job templates, inventories, or hosts are either an acceptable
|
||||
blank string, or are valid JSON or YAML dict
|
||||
"""
|
||||
try:
|
||||
json.loads((vars_str or '').strip() or '{}')
|
||||
return vars_str
|
||||
except ValueError:
|
||||
pass
|
||||
try:
|
||||
yaml.safe_load(vars_str)
|
||||
return vars_str
|
||||
except yaml.YAMLError:
|
||||
pass
|
||||
raise RestValidationError('Must be valid JSON or YAML.')
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user