Merge "Use plain routes list for server-metadata endpoint instead of stevedore"

This commit is contained in:
Jenkins
2017-05-03 16:00:31 +00:00
committed by Gerrit Code Review
4 changed files with 19 additions and 38 deletions

View File

@@ -206,7 +206,10 @@ hardcoded_extensions = [
'alias': 'os-floating-ips'},
{'name': 'Keypairs',
'description': 'Keypair Support.',
'alias': 'os-keypairs'}
'alias': 'os-keypairs'},
{'name': 'ServerMetadata',
'description': 'Server metadata Support.',
'alias': 'server-metadata'},
]

View File

@@ -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
@@ -139,6 +140,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': {
@@ -240,7 +244,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'],
}),
)

View File

@@ -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']})

View File

@@ -109,7 +109,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