Merge "Move common definition into common layer"

This commit is contained in:
Jenkins
2017-08-24 18:04:09 +00:00
committed by Gerrit Code Review
2 changed files with 60 additions and 55 deletions
+51 -55
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,
})
+9
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