Merge "Merge server create schema for user data extension"
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user