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:
jichenjc 2017-07-27 23:44:39 +08:00
parent 41ff707efd
commit ceabc1753c
2 changed files with 60 additions and 55 deletions

View File

@ -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,
})

View File

@ -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