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

This commit is contained in:
Jenkins 2017-07-18 09:34:29 +00:00 committed by Gerrit Code Review
commit f5a07291ed
3 changed files with 16 additions and 36 deletions

View File

@ -27,8 +27,6 @@ from nova import exception
from nova.i18n import _
import nova.image
ALIAS = 'image-metadata'
class ImageMetadataController(wsgi.Controller):
"""The image metadata API controller for the OpenStack API."""
@ -134,36 +132,3 @@ class ImageMetadataController(wsgi.Controller):
purge_props=True)
except exception.ImageNotAuthorized as e:
raise exc.HTTPForbidden(explanation=e.format_message())
class ImageMetadata(extensions.V21APIExtensionBase):
"""Image Metadata API."""
name = "ImageMetadata"
alias = ALIAS
version = 1
def get_resources(self):
parent = {'member_name': 'image',
'collection_name': 'images'}
resources = [extensions.ResourceExtension('metadata',
ImageMetadataController(),
member_name='image_meta',
parent=parent,
custom_routes_fn=
self.image_metadata_map
)]
return resources
def get_controller_extensions(self):
return []
def image_metadata_map(self, mapper, wsgi_resource):
mapper.connect("metadata",
"/{project_id}/images/{image_id}/metadata",
controller=wsgi_resource,
action='update_all', conditions={"method": ['PUT']})
# Also connect the non project_id route
mapper.connect("metadata",
"/images/{image_id}/metadata",
controller=wsgi_resource,
action='update_all', conditions={"method": ['PUT']})

View File

@ -53,6 +53,7 @@ from nova.api.openstack.compute import fping
from nova.api.openstack.compute import hide_server_addresses
from nova.api.openstack.compute import hosts
from nova.api.openstack.compute import hypervisors
from nova.api.openstack.compute import image_metadata
from nova.api.openstack.compute import image_size
from nova.api.openstack.compute import images
from nova.api.openstack.compute import instance_actions
@ -202,6 +203,11 @@ images_controller = functools.partial(
[image_size.ImageSizeController], [])
image_metadata_controller = functools.partial(
_create_controller, image_metadata.ImageMetadataController,
[], [])
instance_actions_controller = functools.partial(_create_controller,
instance_actions.InstanceActionsController, [], [])
@ -391,6 +397,16 @@ ROUTE_LIST = (
'GET': [images_controller, 'show'],
'DELETE': [images_controller, 'delete']
}),
('/images/{image_id}/metadata', {
'GET': [image_metadata_controller, 'index'],
'POST': [image_metadata_controller, 'create'],
'PUT': [image_metadata_controller, 'update_all']
}),
('/images/{image_id}/metadata/{id}', {
'GET': [image_metadata_controller, 'show'],
'PUT': [image_metadata_controller, 'update'],
'DELETE': [image_metadata_controller, 'delete']
}),
('/limits', {
'GET': [limits_controller, 'index']
}),

View File

@ -76,7 +76,6 @@ wsgi_scripts =
nova.api.v21.extensions =
baremetal_nodes = nova.api.openstack.compute.baremetal_nodes:BareMetalNodes
extension_info = nova.api.openstack.compute.extension_info:ExtensionInfo
image_metadata = nova.api.openstack.compute.image_metadata:ImageMetadata
security_group_default_rules = nova.api.openstack.compute.security_group_default_rules:SecurityGroupDefaultRules
security_groups = nova.api.openstack.compute.security_groups:SecurityGroups
versions = nova.api.openstack.compute.versionsV21:Versions