def controller(self): if self.is_service_request: return ServiceController if not self.slo_enabled: multi_part = ['partNumber', 'uploadId', 'uploads'] if len([p for p in multi_part if p in self.params]): LOGGER.warning('multipart: No SLO middleware in pipeline') raise OssNotImplemented("Multi-part feature isn't support") # if 'objectMeta' in self.params: # return ObjectController if 'acl' in self.params: return AclController if 'cors' in self.params: return CorsController if 'delete' in self.params: return MultiObjectDeleteController if 'location' in self.params: return LocationController if 'logging' in self.params: return LoggingStatusController if 'partNumber' in self.params: return PartController if 'uploadId' in self.params: return UploadController if 'uploads' in self.params: return UploadsController if 'versioning' in self.params: return VersioningController if 'lifecycle' in self.params: return LifecycleController if 'website' in self.params: return WebsiteController if 'referer' in self.params: return RefererController unsupported = ('notification', 'policy', 'requestPayment', 'torrent', 'tagging', 'restore') if set(unsupported) & set(self.params): return UnsupportedController if self.is_object_request: return ObjectController return BucketController
def check_pipeline(self, conf): """ Check that proxy-server.conf has an appropriate pipeline for 2swift. """ if conf.get('__file__', None) is None: return ctx = loadcontext(loadwsgi.APP, conf.__file__) pipeline = str(PipelineWrapper(ctx)).split(' ') # Add compatible with 3rd party middleware. check_filter_order(pipeline, ['oss2swift', 'proxy-server']) auth_pipeline = pipeline[pipeline.index('oss2swift') + 1:pipeline.index('proxy-server')] # Check SLO middleware if self.slo_enabled and 'slo' not in auth_pipeline: self.slo_enabled = False LOGGER.warning('oss2swift middleware requires SLO middleware ' 'to support multi-part upload, please add it ' 'in pipeline') if not conf.auth_pipeline_check: LOGGER.debug('Skip pipeline auth check.') return if 'tempauth' in auth_pipeline: LOGGER.debug('Use tempauth middleware.') elif 'keystoneauth' in auth_pipeline: check_filter_order(auth_pipeline, ['osstoken', 'authtoken', 'keystoneauth']) LOGGER.debug('Use keystone middleware.') elif len(auth_pipeline): LOGGER.debug('Use third party(unknown) auth middleware.') else: raise ValueError('Invalid pipeline %r: expected auth between ' 'oss2swift and proxy-server ' % pipeline)