Move common definition into common layer
move common definition into common layer, as dependency patches like I64ad387ec7b532e9dbc791f683a005587825ff61 plan to use the definitions of the schema, this patch moves these definitions as common ones Change-Id: I17c2937e6b8ac3d09fabe273c50c81dd9b0babb6
This commit is contained in:
parent
41ff707efd
commit
ceabc1753c
|
@ -269,19 +269,15 @@ trigger_crash_dump = {
|
|||
'additionalProperties': False
|
||||
}
|
||||
|
||||
# NOTE: We don't check actual values of queries on params
|
||||
# which are defined as the following common_param.
|
||||
common_param = multi_params({'type': 'string'})
|
||||
common_regex_param = multi_params({'type': 'string', 'format': 'regex'})
|
||||
|
||||
JOINED_TABLE_QUERY_PARAMS_SERVERS = {
|
||||
'block_device_mapping': common_param,
|
||||
'services': common_param,
|
||||
'metadata': common_param,
|
||||
'system_metadata': common_param,
|
||||
'info_cache': common_param,
|
||||
'security_groups': common_param,
|
||||
'pci_devices': common_param
|
||||
'block_device_mapping': parameter_types.common_query_param,
|
||||
'services': parameter_types.common_query_param,
|
||||
'metadata': parameter_types.common_query_param,
|
||||
'system_metadata': parameter_types.common_query_param,
|
||||
'info_cache': parameter_types.common_query_param,
|
||||
'security_groups': parameter_types.common_query_param,
|
||||
'pci_devices': parameter_types.common_query_param
|
||||
}
|
||||
|
||||
# These fields are valid values for sort_keys before we start
|
||||
|
@ -313,59 +309,59 @@ VALID_SORT_KEYS = {
|
|||
query_params_v21 = {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'user_id': common_param,
|
||||
'project_id': common_param,
|
||||
'user_id': parameter_types.common_query_param,
|
||||
'project_id': parameter_types.common_query_param,
|
||||
# The alias of project_id. It should be removed in the
|
||||
# future with microversion bump.
|
||||
'tenant_id': common_param,
|
||||
'launch_index': common_param,
|
||||
'tenant_id': parameter_types.common_query_param,
|
||||
'launch_index': parameter_types.common_query_param,
|
||||
# The alias of image. It should be removed in the
|
||||
# future with microversion bump.
|
||||
'image_ref': common_param,
|
||||
'image': common_param,
|
||||
'kernel_id': common_regex_param,
|
||||
'ramdisk_id': common_regex_param,
|
||||
'hostname': common_regex_param,
|
||||
'key_name': common_regex_param,
|
||||
'power_state': common_regex_param,
|
||||
'vm_state': common_param,
|
||||
'task_state': common_param,
|
||||
'host': common_param,
|
||||
'node': common_regex_param,
|
||||
'flavor': common_regex_param,
|
||||
'reservation_id': common_regex_param,
|
||||
'launched_at': common_regex_param,
|
||||
'terminated_at': common_regex_param,
|
||||
'availability_zone': common_regex_param,
|
||||
'image_ref': parameter_types.common_query_param,
|
||||
'image': parameter_types.common_query_param,
|
||||
'kernel_id': parameter_types.common_query_regex_param,
|
||||
'ramdisk_id': parameter_types.common_query_regex_param,
|
||||
'hostname': parameter_types.common_query_regex_param,
|
||||
'key_name': parameter_types.common_query_regex_param,
|
||||
'power_state': parameter_types.common_query_regex_param,
|
||||
'vm_state': parameter_types.common_query_param,
|
||||
'task_state': parameter_types.common_query_param,
|
||||
'host': parameter_types.common_query_param,
|
||||
'node': parameter_types.common_query_regex_param,
|
||||
'flavor': parameter_types.common_query_regex_param,
|
||||
'reservation_id': parameter_types.common_query_regex_param,
|
||||
'launched_at': parameter_types.common_query_regex_param,
|
||||
'terminated_at': parameter_types.common_query_regex_param,
|
||||
'availability_zone': parameter_types.common_query_regex_param,
|
||||
# NOTE(alex_xu): This is pattern matching, it didn't get any benefit
|
||||
# from DB index.
|
||||
'name': common_regex_param,
|
||||
'name': parameter_types.common_query_regex_param,
|
||||
# The alias of name. It should be removed in the future
|
||||
# with microversion bump.
|
||||
'display_name': common_regex_param,
|
||||
'description': common_regex_param,
|
||||
'display_name': parameter_types.common_query_regex_param,
|
||||
'description': parameter_types.common_query_regex_param,
|
||||
# The alias of description. It should be removed in the
|
||||
# future with microversion bump.
|
||||
'display_description': common_regex_param,
|
||||
'locked_by': common_regex_param,
|
||||
'uuid': common_param,
|
||||
'root_device_name': common_regex_param,
|
||||
'config_drive': common_regex_param,
|
||||
'access_ip_v4': common_regex_param,
|
||||
'access_ip_v6': common_regex_param,
|
||||
'auto_disk_config': common_regex_param,
|
||||
'progress': common_regex_param,
|
||||
'display_description': parameter_types.common_query_regex_param,
|
||||
'locked_by': parameter_types.common_query_regex_param,
|
||||
'uuid': parameter_types.common_query_param,
|
||||
'root_device_name': parameter_types.common_query_regex_param,
|
||||
'config_drive': parameter_types.common_query_regex_param,
|
||||
'access_ip_v4': parameter_types.common_query_regex_param,
|
||||
'access_ip_v6': parameter_types.common_query_regex_param,
|
||||
'auto_disk_config': parameter_types.common_query_regex_param,
|
||||
'progress': parameter_types.common_query_regex_param,
|
||||
'sort_key': multi_params(VALID_SORT_KEYS),
|
||||
'sort_dir': common_param,
|
||||
'all_tenants': common_param,
|
||||
'deleted': common_param,
|
||||
'status': common_param,
|
||||
'sort_dir': parameter_types.common_query_param,
|
||||
'all_tenants': parameter_types.common_query_param,
|
||||
'deleted': parameter_types.common_query_param,
|
||||
'status': parameter_types.common_query_param,
|
||||
'changes-since': multi_params({'type': 'string',
|
||||
'format': 'date-time'}),
|
||||
# NOTE(alex_xu): The ip and ip6 are implemented in the python.
|
||||
'ip': common_regex_param,
|
||||
'ip6': common_regex_param,
|
||||
'created_at': common_regex_param,
|
||||
'ip': parameter_types.common_query_regex_param,
|
||||
'ip6': parameter_types.common_query_regex_param,
|
||||
'created_at': parameter_types.common_query_regex_param,
|
||||
},
|
||||
# For backward-compatible additionalProperties is set to be True here.
|
||||
# And we will either strip the extra params out or raise HTTP 400
|
||||
|
@ -373,7 +369,7 @@ query_params_v21 = {
|
|||
'additionalProperties': True,
|
||||
# Prevent internal-attributes that are started with underscore from
|
||||
# being striped out in schema validation, and raise HTTP 400 in API.
|
||||
'patternProperties': {"^_": common_param}
|
||||
'patternProperties': {"^_": parameter_types.common_query_param}
|
||||
}
|
||||
|
||||
# Update the joined-table fields to the list so it will not be
|
||||
|
@ -387,8 +383,8 @@ query_params_v21['properties'].update(
|
|||
|
||||
query_params_v226 = copy.deepcopy(query_params_v21)
|
||||
query_params_v226['properties'].update({
|
||||
'tags': common_regex_param,
|
||||
'tags-any': common_regex_param,
|
||||
'not-tags': common_regex_param,
|
||||
'not-tags-any': common_regex_param,
|
||||
'tags': parameter_types.common_query_regex_param,
|
||||
'tags-any': parameter_types.common_query_regex_param,
|
||||
'not-tags': parameter_types.common_query_regex_param,
|
||||
'not-tags-any': parameter_types.common_query_regex_param,
|
||||
})
|
||||
|
|
|
@ -42,6 +42,15 @@ def multi_params(schema):
|
|||
return {'type': 'array', 'items': schema}
|
||||
|
||||
|
||||
# NOTE: We don't check actual values of queries on params
|
||||
# which are defined as the following common_param.
|
||||
# Please note those are for backward compatible existing
|
||||
# query parameters because previously multiple parameters
|
||||
# might be input and accepted.
|
||||
common_query_param = multi_params({'type': 'string'})
|
||||
common_query_regex_param = multi_params({'type': 'string', 'format': 'regex'})
|
||||
|
||||
|
||||
class ValidationRegex(object):
|
||||
def __init__(self, regex, reason):
|
||||
self.regex = regex
|
||||
|
|
Loading…
Reference in New Issue