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 S3NotImplemented("Multi-part feature isn't support") if 'acl' in self.params: return AclController 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 unsupported = ('notification', 'policy', 'requestPayment', 'torrent', 'website', 'cors', 'tagging', 'restore') if set(unsupported) & set(self.params): return UnsupportedController if self.is_object_request: return ObjectController return BucketController
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 S3NotImplemented("Multi-part feature isn't support") if "acl" in self.params: return AclController 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 unsupported = ("notification", "policy", "requestPayment", "torrent", "website", "cors", "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 swift3. """ 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. if check_filter_order(pipeline, ['swift3', 'proxy-server']): auth_pipeline = pipeline[pipeline.index('swift3') + 1: pipeline.index('proxy-server')] # Check SLO middleware if 'slo' not in auth_pipeline: self.slo_enabled = False LOGGER.warning('swift3 middleware is required SLO middleware ' 'to support multi-part upload, please add it ' 'in pipline') if not conf.auth_pipeline_check: LOGGER.debug('Skip pipeline auth check.') return if 'tempauth' in auth_pipeline: LOGGER.debug('Use tempauth middleware.') return elif 'keystoneauth' in auth_pipeline: if check_filter_order(auth_pipeline, ['s3token', 'authtoken', 'keystoneauth']): LOGGER.debug('Use keystone middleware.') return elif len(auth_pipeline): LOGGER.debug('Use third party(unknown) auth middleware.') return raise ValueError('Invalid proxy pipeline: %s' % pipeline)
def check_pipeline(self, conf): """ Check that proxy-server.conf has an appropriate pipeline for swift3. """ 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. if check_filter_order(pipeline, ['swift3', 'proxy-server']): auth_pipeline = pipeline[pipeline.index('swift3') + 1:pipeline.index('proxy-server')] # Check SLO middleware if 'slo' not in auth_pipeline: self.slo_enabled = False LOGGER.warning('swift3 middleware is required SLO middleware ' 'to support multi-part upload, please add it ' 'in pipline') if not conf.auth_pipeline_check: LOGGER.debug('Skip pipeline auth check.') return if 'tempauth' in auth_pipeline: LOGGER.debug('Use tempauth middleware.') return elif 'keystoneauth' in auth_pipeline: if check_filter_order( auth_pipeline, ['s3token', 'authtoken', 'keystoneauth']): LOGGER.debug('Use keystone middleware.') return elif len(auth_pipeline): LOGGER.debug('Use third party(unknown) auth middleware.') return raise ValueError('Invalid proxy pipeline: %s' % pipeline)
def check_pipeline(self, conf): """ Check that proxy-server.conf has an appropriate pipeline for swift3. """ 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, ['swift3', 'proxy-server']) auth_pipeline = pipeline[pipeline.index('swift3') + 1:pipeline.index('proxy-server')] # Check SLO middleware if self.slo_enabled and 'slo' not in auth_pipeline: self.slo_enabled = False LOGGER.warning('swift3 middleware requires SLO middleware ' 'to support multi-part upload, please add it ' 'in pipeline') # Check IAM middleware position: when enabled, must be before swift3 if 'iam' in pipeline: check_filter_order(pipeline, ['iam', 'swift3']) 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, ['s3token', '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 ' 'swift3 and proxy-server ' % pipeline)