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 _ from nova.i18n import _
import nova.image import nova.image
ALIAS = 'image-metadata'
class ImageMetadataController(wsgi.Controller): class ImageMetadataController(wsgi.Controller):
"""The image metadata API controller for the OpenStack API.""" """The image metadata API controller for the OpenStack API."""
@ -134,36 +132,3 @@ class ImageMetadataController(wsgi.Controller):
purge_props=True) purge_props=True)
except exception.ImageNotAuthorized as e: except exception.ImageNotAuthorized as e:
raise exc.HTTPForbidden(explanation=e.format_message()) 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 hide_server_addresses
from nova.api.openstack.compute import hosts from nova.api.openstack.compute import hosts
from nova.api.openstack.compute import hypervisors 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 image_size
from nova.api.openstack.compute import images from nova.api.openstack.compute import images
from nova.api.openstack.compute import instance_actions from nova.api.openstack.compute import instance_actions
@ -202,6 +203,11 @@ images_controller = functools.partial(
[image_size.ImageSizeController], []) [image_size.ImageSizeController], [])
image_metadata_controller = functools.partial(
_create_controller, image_metadata.ImageMetadataController,
[], [])
instance_actions_controller = functools.partial(_create_controller, instance_actions_controller = functools.partial(_create_controller,
instance_actions.InstanceActionsController, [], []) instance_actions.InstanceActionsController, [], [])
@ -391,6 +397,16 @@ ROUTE_LIST = (
'GET': [images_controller, 'show'], 'GET': [images_controller, 'show'],
'DELETE': [images_controller, 'delete'] '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', { ('/limits', {
'GET': [limits_controller, 'index'] 'GET': [limits_controller, 'index']
}), }),

View File

@ -76,7 +76,6 @@ wsgi_scripts =
nova.api.v21.extensions = nova.api.v21.extensions =
baremetal_nodes = nova.api.openstack.compute.baremetal_nodes:BareMetalNodes baremetal_nodes = nova.api.openstack.compute.baremetal_nodes:BareMetalNodes
extension_info = nova.api.openstack.compute.extension_info:ExtensionInfo 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_group_default_rules = nova.api.openstack.compute.security_group_default_rules:SecurityGroupDefaultRules
security_groups = nova.api.openstack.compute.security_groups:SecurityGroups security_groups = nova.api.openstack.compute.security_groups:SecurityGroups
versions = nova.api.openstack.compute.versionsV21:Versions versions = nova.api.openstack.compute.versionsV21:Versions