Use plain routes list for server-metadata endpoint instead of stevedore
This patch adds server-metadata related routes by a plain list, instead of using stevedore. After all the Nova API endpoints moves to the plain routes list, the usage of stevedore for API loading will be removed from Nova. Partial-implement-blueprint api-no-more-extensions-pike Change-Id: I88ca06d63016ffd1e38b61e6de0b75f88ecdb138
This commit is contained in:
parent
d6d5c6be0c
commit
f41acdd57e
|
@ -203,7 +203,10 @@ hardcoded_extensions = [
|
|||
'alias': 'os-flavor-access'},
|
||||
{'name': 'Keypairs',
|
||||
'description': 'Keypair Support.',
|
||||
'alias': 'os-keypairs'}
|
||||
'alias': 'os-keypairs'},
|
||||
{'name': 'ServerMetadata',
|
||||
'description': 'Server metadata Support.',
|
||||
'alias': 'server-metadata'},
|
||||
]
|
||||
|
||||
|
||||
|
|
|
@ -45,6 +45,7 @@ from nova.api.openstack.compute import pause_server
|
|||
from nova.api.openstack.compute import remote_consoles
|
||||
from nova.api.openstack.compute import rescue
|
||||
from nova.api.openstack.compute import security_groups
|
||||
from nova.api.openstack.compute import server_metadata
|
||||
from nova.api.openstack.compute import server_usage
|
||||
from nova.api.openstack.compute import servers
|
||||
from nova.api.openstack.compute import shelve
|
||||
|
@ -135,6 +136,9 @@ server_controller = functools.partial(_create_controller,
|
|||
)
|
||||
|
||||
|
||||
server_metadata_controller = functools.partial(_create_controller,
|
||||
server_metadata.ServerMetadataController, [], [])
|
||||
|
||||
# NOTE(alex_xu): This is structure of this route list as below:
|
||||
# (
|
||||
# ('Route path': {
|
||||
|
@ -228,7 +232,17 @@ ROUTE_LIST = (
|
|||
}),
|
||||
('/servers/{id}/action', {
|
||||
'POST': [server_controller, 'action']
|
||||
})
|
||||
}),
|
||||
('/servers/{server_id}/metadata', {
|
||||
'GET': [server_metadata_controller, 'index'],
|
||||
'POST': [server_metadata_controller, 'create'],
|
||||
'PUT': [server_metadata_controller, 'update_all'],
|
||||
}),
|
||||
('/servers/{server_id}/metadata/{id}', {
|
||||
'GET': [server_metadata_controller, 'show'],
|
||||
'PUT': [server_metadata_controller, 'update'],
|
||||
'DELETE': [server_metadata_controller, 'delete'],
|
||||
}),
|
||||
)
|
||||
|
||||
|
||||
|
|
|
@ -26,8 +26,6 @@ from nova import exception
|
|||
from nova.i18n import _
|
||||
from nova.policies import server_metadata as sm_policies
|
||||
|
||||
ALIAS = 'server-metadata'
|
||||
|
||||
|
||||
class ServerMetadataController(wsgi.Controller):
|
||||
"""The server metadata API controller for the OpenStack API."""
|
||||
|
@ -163,36 +161,3 @@ class ServerMetadataController(wsgi.Controller):
|
|||
except exception.InstanceInvalidState as state_error:
|
||||
common.raise_http_conflict_for_instance_invalid_state(state_error,
|
||||
'delete metadata', server_id)
|
||||
|
||||
|
||||
class ServerMetadata(extensions.V21APIExtensionBase):
|
||||
"""Server Metadata API."""
|
||||
name = "ServerMetadata"
|
||||
alias = ALIAS
|
||||
version = 1
|
||||
|
||||
def get_resources(self):
|
||||
parent = {'member_name': 'server',
|
||||
'collection_name': 'servers'}
|
||||
resources = [extensions.ResourceExtension('metadata',
|
||||
ServerMetadataController(),
|
||||
member_name='server_meta',
|
||||
parent=parent,
|
||||
custom_routes_fn=
|
||||
self.server_metadata_map
|
||||
)]
|
||||
return resources
|
||||
|
||||
def get_controller_extensions(self):
|
||||
return []
|
||||
|
||||
def server_metadata_map(self, mapper, wsgi_resource):
|
||||
mapper.connect("metadata",
|
||||
"/{project_id}/servers/{server_id}/metadata",
|
||||
controller=wsgi_resource,
|
||||
action='update_all', conditions={"method": ['PUT']})
|
||||
# Also connect the non project_id routes
|
||||
mapper.connect("metadata",
|
||||
"/servers/{server_id}/metadata",
|
||||
controller=wsgi_resource,
|
||||
action='update_all', conditions={"method": ['PUT']})
|
||||
|
|
|
@ -110,7 +110,6 @@ nova.api.v21.extensions =
|
|||
security_groups = nova.api.openstack.compute.security_groups:SecurityGroups
|
||||
server_diagnostics = nova.api.openstack.compute.server_diagnostics:ServerDiagnostics
|
||||
server_external_events = nova.api.openstack.compute.server_external_events:ServerExternalEvents
|
||||
server_metadata = nova.api.openstack.compute.server_metadata:ServerMetadata
|
||||
server_migrations = nova.api.openstack.compute.server_migrations:ServerMigrations
|
||||
server_password = nova.api.openstack.compute.server_password:ServerPassword
|
||||
server_tags = nova.api.openstack.compute.server_tags:ServerTags
|
||||
|
|
Loading…
Reference in New Issue