def __init__(self, application, ext_mgr=None): ext_mgr = (ext_mgr or ExtensionManager()) mapper = routes.Mapper() # extended resources for resource_ext in ext_mgr.get_resources(): LOG.debug('Extended resource: %s', resource_ext.collection) # The only difference here is that we are using our common # wsgi.Resource instead of the openstack common wsgi.Resource exception_map = None if hasattr(resource_ext.controller, 'exception_map'): exception_map = resource_ext.controller.exception_map controller_resource = wsgi.Resource(resource_ext.controller, resource_ext.deserializer, resource_ext.serializer, exception_map) self._map_custom_routes(resource_ext, mapper, controller_resource) self._map_custom_collection_actions(resource_ext, mapper, controller_resource) kargs = dict(controller=controller_resource, collection=resource_ext.collection_actions, member=resource_ext.member_actions) if resource_ext.parent: kargs['parent_resource'] = resource_ext.parent mapper.resource(resource_ext.collection, resource_ext.collection, **kargs) mapper.connect(("/%s/{id}" % resource_ext.collection), controller=controller_resource, action='edit', conditions={'method': ['PATCH']}) # extended actions action_resources = self._action_ext_resources(application, ext_mgr, mapper) for action in ext_mgr.get_actions(): LOG.debug('Extended action: %s', action.action_name) resource = action_resources[action.collection] resource.add_action(action.action_name, action.handler) # extended requests req_controllers = self._request_ext_resources(application, ext_mgr, mapper) for request_ext in ext_mgr.get_request_extensions(): LOG.debug('Extended request: %s', request_ext.key) controller = req_controllers[request_ext.key] controller.add_handler(request_ext.handler) self._router = routes.middleware.RoutesMiddleware(self._dispatch, mapper) super(ExtensionMiddleware, self).__init__(application)
def __init__(self, application, config, ext_mgr=None): ext_mgr = (ext_mgr or ExtensionManager()) mapper = routes.Mapper() # extended resources for resource_ext in ext_mgr.get_resources(): LOG.debug('Extended resource: %s', resource_ext.collection) controller_resource = wsgi.Resource(resource_ext.controller, resource_ext.deserializer, resource_ext.serializer) self._map_custom_collection_actions(resource_ext, mapper, controller_resource) kargs = dict(controller=controller_resource, collection=resource_ext.collection_actions, member=resource_ext.member_actions) if resource_ext.parent: kargs['parent_resource'] = resource_ext.parent mapper.resource(resource_ext.collection, resource_ext.collection, **kargs) # extended actions action_resources = self._action_ext_resources(application, ext_mgr, mapper) for action in ext_mgr.get_actions(): LOG.debug('Extended action: %s', action.action_name) resource = action_resources[action.collection] resource.add_action(action.action_name, action.handler) # extended requests req_controllers = self._request_ext_resources(application, ext_mgr, mapper) for request_ext in ext_mgr.get_request_extensions(): LOG.debug('Extended request: %s', request_ext.key) controller = req_controllers[request_ext.key] controller.add_handler(request_ext.handler) self._router = routes.middleware.RoutesMiddleware(self._dispatch, mapper) super(ExtensionMiddleware, self).__init__(application)