Merge server create schema for user data extension
As nova extensions has been deprecated already and goal is to merge all scattered code into main controller side. Currently schema and request/response extended code are there among all extensions. This commit merge the schema part of create server for user data extensions. Also this commit removes the logic of appending the extensions schema as this is the last extensions schema to merge. Partially implements: blueprint api-extensions-merge-rocky Change-Id: I692a048b3a8da4e912e000b47da977dda466348b
This commit is contained in:
parent
1f677061fa
commit
de03b832ad
@ -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'}
|
||||
]
|
||||
})
|
||||
|
@ -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'},
|
||||
],
|
||||
},
|
||||
}
|
@ -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']
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user