Merge "Move common definition into common layer"
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user