def process_task(self, req): """ Process task """ try: files = self.pre_cache(req.scope, req.name) ret_files = [] for file in files: ret_file = { 'scope': file['scope'], 'name': file['name'], 'min_id': file['min_id'], 'max_id': file['max_id'], 'content_type': ContentType.FILE, 'status': file['status'], 'priority': req.priority, 'pfn_size': file['size'], 'pfn': file['pfn'], 'object_metadata': { 'md5': file['md5'], 'adler32': file['adler32'] } } ret_files.append(ret_file) add_contents(req.scope, req.name, self.resource_name, ret_files) req.status = RequestStatus.PRECACHED req.processing_meta['collection_status'] = str( RequestStatus.PRECACHED) return req except NoRequestedData as error: req.status = RequestStatus.ERROR req.errors = {'message': str(error)} return req
def prepare_to_split_files(self, req): if req.granularity_type == GranularityType.PARTIAL: coll_id = req.processing_meta['coll_id'] files = get_contents_by_edge(edge_name=self.resource_name, coll_id=coll_id, content_type=ContentType.FILE) sub_files = [] for file in files: for i in range(file.min_id, file.max_id + 1, req.granularity_level): new_min_id = i new_max_id = i + req.granularity_level - 1 if new_max_id > file.max_id: new_max_id = file.max_id new_file = { 'coll_id': file.coll_id, 'scope': file.scope, 'name': file.name, 'min_id': new_min_id, 'max_id': new_max_id, 'content_type': ContentType.PARTIAL, 'edge_id': file.edge_id, 'status': ContentStatus.TOSPLIT, 'pfn': file.pfn, 'priority': file.priority } sub_files.append(new_file) self.logger.debug("Creating new splitting files: %s" % sub_files) self.logger.info("Creating %s new splitting files" % len(sub_files)) add_contents(req.scope, req.name, self.resource_name, sub_files)
def POST(self, collection_scope, collection_name, edge_name): """ Add or update list of contents in a collection on an edge. HTTP Success: 200 OK HTTP Error: 404 Not Found 500 InternalError :returns: dictionary of an request. """ header('Content-Type', 'application/json') try: json_data = data files = json.loads(json_data) add_contents(collection_scope, collection_name, edge_name, files) except exceptions.DuplicatedObject as error: raise self.generate_http_response(HTTP_STATUS_CODE.NotFound, exc_cls=error.__class__.__name__, exc_msg=error) except exceptions.ESSException as error: raise self.generate_http_response(HTTP_STATUS_CODE.InternalError, exc_cls=error.__class__.__name__, exc_msg=error) except Exception as error: print(error) print(format_exc()) raise self.generate_http_response( HTTP_STATUS_CODE.InternalError, exc_cls=exceptions.CoreException.__name__, exc_msg=error) raise self.generate_http_response(HTTP_STATUS_CODE.OK, data={ 'status': 0, 'message': 'added successfully' })