Extend become_method to model field validation as well

This commit is contained in:
Wayne Witzel III
2018-04-20 14:37:50 -04:00
parent d6ac9b6e3d
commit 07474d5b21
3 changed files with 10 additions and 7 deletions

View File

@@ -4,6 +4,7 @@
# Python
import copy
import json
import operator
import re
import six
import urllib
@@ -45,7 +46,7 @@ from awx.main.utils.filters import SmartFilter
from awx.main.utils.encryption import encrypt_value, decrypt_value, get_encryption_key
from awx.main.validators import validate_ssh_private_key
from awx.main.models.rbac import batch_role_ancestor_rebuilding, Role
from awx.main.constants import PRIVILEGE_ESCALATION_METHODS
from awx.main.constants import CHOICES_PRIVILEGE_ESCALATION_METHODS
from awx.main import utils
@@ -507,6 +508,9 @@ class CredentialInputField(JSONSchemaField):
properties = {}
for field in model_instance.credential_type.inputs.get('fields', []):
field = field.copy()
if field['type'] == 'become_method':
field.pop('type')
field['choices'] = map(operator.itemgetter(0), CHOICES_PRIVILEGE_ESCALATION_METHODS)
properties[field['id']] = field
if field.get('choices', []):
field['enum'] = field['choices'][:]
@@ -720,7 +724,7 @@ class CredentialTypeInputField(JSONSchemaField):
)
else:
field['type'] = 'string'
field['choices'] = PRIVILEGE_ESCALATION_METHODS
field['choices'] = CHOICES_PRIVILEGE_ESCALATION_METHODS
for key in ('choices', 'multiline', 'format', 'secret',):
if key in field and field['type'] != 'string':