diff --git a/nova/api/openstack/compute/schemas/servers.py b/nova/api/openstack/compute/schemas/servers.py index e036672f85..768288725f 100644 --- a/nova/api/openstack/compute/schemas/servers.py +++ b/nova/api/openstack/compute/schemas/servers.py @@ -14,7 +14,6 @@ import copy -from nova.api.openstack.compute.schemas import user_data from nova.api.validation import parameter_types from nova.api.validation.parameter_types import multi_params from nova.objects import instance @@ -210,6 +209,11 @@ base_create = { 'additionalProperties': False, } }, + 'user_data': { + 'type': 'string', + 'format': 'base64', + 'maxLength': 65535 + } }, 'required': ['name', 'flavorRef'], 'additionalProperties': False, @@ -232,6 +236,12 @@ base_create_v20['properties']['server']['properties'][ base_create_v20['properties']['server']['properties'][ 'security_groups']['items']['properties']['name'] = ( parameter_types.name_with_leading_trailing_spaces) +base_create_v20['properties']['server']['properties'][ + 'user_data'] = { + 'oneOf': [{'type': 'string', 'format': 'base64', 'maxLength': 65535}, + {'type': 'null'}, + ], + } base_create_v219 = copy.deepcopy(base_create) base_create_v219['properties']['server'][ @@ -410,7 +420,7 @@ base_rebuild_v257 = copy.deepcopy(base_rebuild_v254) base_rebuild_v257['properties']['rebuild']['properties'].pop('personality') base_rebuild_v257['properties']['rebuild']['properties']['user_data'] = ({ 'oneOf': [ - user_data.common_user_data, + {'type': 'string', 'format': 'base64', 'maxLength': 65535}, {'type': 'null'} ] }) diff --git a/nova/api/openstack/compute/schemas/user_data.py b/nova/api/openstack/compute/schemas/user_data.py deleted file mode 100644 index da9e40d742..0000000000 --- a/nova/api/openstack/compute/schemas/user_data.py +++ /dev/null @@ -1,34 +0,0 @@ -# Copyright 2014 NEC Corporation. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -common_user_data = { - 'type': 'string', - 'format': 'base64', - 'maxLength': 65535 -} - - -server_create = { - 'user_data': common_user_data -} - - -server_create_v20 = { - 'user_data': { - 'oneOf': [ - common_user_data, - {'type': 'null'}, - ], - }, -} diff --git a/nova/api/openstack/compute/servers.py b/nova/api/openstack/compute/servers.py index 03ec832eb4..6c36778660 100644 --- a/nova/api/openstack/compute/servers.py +++ b/nova/api/openstack/compute/servers.py @@ -66,36 +66,6 @@ class ServersController(wsgi.Controller): _view_builder_class = views_servers.ViewBuilder - schema_server_create = schema_servers.base_create - schema_server_update = schema_servers.base_update - schema_server_rebuild = schema_servers.base_rebuild - - schema_server_create_v20 = schema_servers.base_create_v20 - schema_server_update_v20 = schema_servers.base_update_v20 - schema_server_rebuild_v20 = schema_servers.base_rebuild_v20 - - schema_server_create_v219 = schema_servers.base_create_v219 - schema_server_update_v219 = schema_servers.base_update_v219 - schema_server_rebuild_v219 = schema_servers.base_rebuild_v219 - schema_server_rebuild_v254 = schema_servers.base_rebuild_v254 - schema_server_rebuild_v257 = schema_servers.base_rebuild_v257 - - schema_server_create_v232 = schema_servers.base_create_v232 - schema_server_create_v233 = schema_servers.base_create_v233 - schema_server_create_v237 = schema_servers.base_create_v237 - schema_server_create_v242 = schema_servers.base_create_v242 - schema_server_create_v252 = schema_servers.base_create_v252 - schema_server_create_v257 = schema_servers.base_create_v257 - - schema_server_create_v263 = schema_servers.base_create_v263 - schema_server_rebuild_v263 = schema_servers.base_rebuild_v263 - - # NOTE(alex_xu): Please do not add more items into this list. This list - # should be removed in the future. - schema_func_list = [ - user_data.get_server_create_schema, - ] - # NOTE(alex_xu): Please do not add more items into this list. This list # should be removed in the future. server_create_func_list = [ @@ -127,19 +97,6 @@ class ServersController(wsgi.Controller): super(ServersController, self).__init__(**kwargs) self.compute_api = compute.API() - # TODO(alex_xu): The final goal is that merging all of - # extended json-schema into server main json-schema. - self._create_schema(self.schema_server_create_v263, '2.63') - self._create_schema(self.schema_server_create_v257, '2.57') - self._create_schema(self.schema_server_create_v252, '2.52') - self._create_schema(self.schema_server_create_v242, '2.42') - self._create_schema(self.schema_server_create_v237, '2.37') - self._create_schema(self.schema_server_create_v233, '2.33') - self._create_schema(self.schema_server_create_v232, '2.32') - self._create_schema(self.schema_server_create_v219, '2.19') - self._create_schema(self.schema_server_create, '2.1') - self._create_schema(self.schema_server_create_v20, '2.0') - @wsgi.expected_errors((400, 403)) @validation.query_schema(schema_servers.query_params_v226, '2.26') @validation.query_schema(schema_servers.query_params_v21, '2.1', '2.25') @@ -452,16 +409,16 @@ class ServersController(wsgi.Controller): @wsgi.response(202) @wsgi.expected_errors((400, 403, 409)) - @validation.schema(schema_server_create_v20, '2.0', '2.0') - @validation.schema(schema_server_create, '2.1', '2.18') - @validation.schema(schema_server_create_v219, '2.19', '2.31') - @validation.schema(schema_server_create_v232, '2.32', '2.32') - @validation.schema(schema_server_create_v233, '2.33', '2.36') - @validation.schema(schema_server_create_v237, '2.37', '2.41') - @validation.schema(schema_server_create_v242, '2.42', '2.51') - @validation.schema(schema_server_create_v252, '2.52', '2.56') - @validation.schema(schema_server_create_v257, '2.57', '2.62') - @validation.schema(schema_server_create_v263, '2.63') + @validation.schema(schema_servers.base_create_v20, '2.0', '2.0') + @validation.schema(schema_servers.base_create, '2.1', '2.18') + @validation.schema(schema_servers.base_create_v219, '2.19', '2.31') + @validation.schema(schema_servers.base_create_v232, '2.32', '2.32') + @validation.schema(schema_servers.base_create_v233, '2.33', '2.36') + @validation.schema(schema_servers.base_create_v237, '2.37', '2.41') + @validation.schema(schema_servers.base_create_v242, '2.42', '2.51') + @validation.schema(schema_servers.base_create_v252, '2.52', '2.56') + @validation.schema(schema_servers.base_create_v257, '2.57', '2.62') + @validation.schema(schema_servers.base_create_v263, '2.63') def create(self, req, body): """Creates a new server for a given user.""" context = req.environ['nova.context'] @@ -681,14 +638,6 @@ class ServersController(wsgi.Controller): for func in self.server_create_func_list: func(server_dict, create_kwargs, req_body) - def _create_schema(self, create_schema, version): - for schema_func in self.schema_func_list: - self._create_schema_by_func(create_schema, version, schema_func) - - def _create_schema_by_func(self, create_schema, version, schema_func): - schema = schema_func(version) - create_schema['properties']['server']['properties'].update(schema) - def _delete(self, context, req, instance_uuid): instance = self._get_server(context, req, instance_uuid) context.can(server_policies.SERVERS % 'delete', @@ -706,9 +655,9 @@ class ServersController(wsgi.Controller): self.compute_api.delete(context, instance) @wsgi.expected_errors(404) - @validation.schema(schema_server_update_v20, '2.0', '2.0') - @validation.schema(schema_server_update, '2.1', '2.18') - @validation.schema(schema_server_update_v219, '2.19') + @validation.schema(schema_servers.base_update_v20, '2.0', '2.0') + @validation.schema(schema_servers.base_update, '2.1', '2.18') + @validation.schema(schema_servers.base_update_v219, '2.19') def update(self, req, id, body): """Update server then pass on to version-specific controller.""" @@ -899,12 +848,12 @@ class ServersController(wsgi.Controller): @wsgi.response(202) @wsgi.expected_errors((400, 403, 404, 409)) @wsgi.action('rebuild') - @validation.schema(schema_server_rebuild_v20, '2.0', '2.0') - @validation.schema(schema_server_rebuild, '2.1', '2.18') - @validation.schema(schema_server_rebuild_v219, '2.19', '2.53') - @validation.schema(schema_server_rebuild_v254, '2.54', '2.56') - @validation.schema(schema_server_rebuild_v257, '2.57', '2.62') - @validation.schema(schema_server_rebuild_v263, '2.63') + @validation.schema(schema_servers.base_rebuild_v20, '2.0', '2.0') + @validation.schema(schema_servers.base_rebuild, '2.1', '2.18') + @validation.schema(schema_servers.base_rebuild_v219, '2.19', '2.53') + @validation.schema(schema_servers.base_rebuild_v254, '2.54', '2.56') + @validation.schema(schema_servers.base_rebuild_v257, '2.57', '2.62') + @validation.schema(schema_servers.base_rebuild_v263, '2.63') def _action_rebuild(self, req, id, body): """Rebuild an instance with the given attributes.""" rebuild_dict = body['rebuild'] diff --git a/nova/api/openstack/compute/user_data.py b/nova/api/openstack/compute/user_data.py index f89fb03060..f9890bbbfc 100644 --- a/nova/api/openstack/compute/user_data.py +++ b/nova/api/openstack/compute/user_data.py @@ -12,9 +12,6 @@ # License for the specific language governing permissions and limitations # under the License. -from nova.api.openstack.compute.schemas import user_data as schema_user_data - - ATTRIBUTE_NAME = 'user_data' @@ -22,9 +19,3 @@ ATTRIBUTE_NAME = 'user_data' # parameter as this is placed to handle scheduler_hint extension for V2.1. def server_create(server_dict, create_kwargs, body_deprecated_param): create_kwargs['user_data'] = server_dict.get(ATTRIBUTE_NAME) - - -def get_server_create_schema(version): - if version == '2.0': - return schema_user_data.server_create_v20 - return schema_user_data.server_create