def copy(self, meta, fresh_meta): sxcontroller = get_sxcontroller() metadata = get_metadata(self.src_vol, self.src_path) clean_meta = { 'etag': metadata.get('etag', ''), 'content-type': metadata.get('content-type', 'application/octet-stream'), 'last-modified': datetime_to_http_iso(datetime.utcnow()), } if not fresh_meta: for key, value in meta: clean_meta[key] = value meta = clean_meta file_info = sxcontroller.getFile.json_call( self.src_vol, self.src_path ) blocks = [obj.keys()[0] for obj in file_info['fileData']] size = file_info['fileSize'] resp = sxcontroller.initializeFile.call( self.dst_vol, self.dst_path, size, blocks, encode_meta(meta) ) token = resp.json()['uploadToken'] sxcontroller.flushUploadedFile.call_on_node(resp.node_address, token)
def set_common_headers(): now = datetime.utcnow() bottle.response.set_header('date', datetime_to_http_iso(now)) trans_id = bottle.request.get_header('x-trans-id') if not trans_id: trans_id = '5358-' + str(uuid.uuid4()) # 5358 = SX hex encoded bottle.response.set_header('x-trans-id', trans_id)
def set_common_headers(): now = datetime.utcnow() bottle.response.set_header('date', datetime_to_http_iso(now)) trans_id = bottle.request.get_header('x-trans-id') if not trans_id: trans_id = '5358-' + str(uuid.uuid4()) # 5358 = SX hex encoded bottle.response.set_header('x-trans-id', trans_id)
def copy(self, meta, fresh_meta): sxcontroller = get_sxcontroller() metadata = get_metadata(self.src_vol, self.src_path) clean_meta = { 'etag': metadata.get('etag', ''), 'content-type': metadata.get('content-type', 'application/octet-stream'), 'last-modified': datetime_to_http_iso(datetime.utcnow()), } if not fresh_meta: for key, value in meta: clean_meta[key] = value meta = clean_meta file_info = sxcontroller.getFile.json_call(self.src_vol, self.src_path) blocks = [obj.keys()[0] for obj in file_info['fileData']] size = file_info['fileSize'] resp = sxcontroller.initializeFile.call(self.dst_vol, self.dst_path, size, blocks, encode_meta(meta)) token = resp.json()['uploadToken'] sxcontroller.flushUploadedFile.call_on_node(resp.node_address, token)
def list_files(vol_name, prefix, delimiter, start_marker, end_marker, limit): sxcontroller = get_sxcontroller() file_objects = sxcontroller.listFiles.call(vol_name, recursive=True, limit=str(limit)).content file_objects = json.loads(file_objects, object_pairs_hook=collections.OrderedDict) for file_name, file_object in file_objects["fileList"].iteritems(): file_name = file_name.lstrip("/") file_meta = sxcontroller.getFileMeta.json_call(vol_name, file_name) file_meta = file_meta.get("fileMeta", {}) last_modified = datetime.fromtimestamp(file_object["createdAt"]) last_modified = datetime_to_http_iso(last_modified) yield { "hash": file_meta.get("sx-etag", "").decode("hex"), "content_type": file_meta.get("sx-content-type", "").decode("hex"), "last_modified": last_modified, "bytes": file_object["fileSize"], "name": file_name, }
def list_files(vol_name, prefix, delimiter, start_marker, end_marker, limit): sxcontroller = get_sxcontroller() file_objects = sxcontroller.listFiles.call(vol_name, recursive=True, limit=str(limit)).content file_objects = json.loads(file_objects, object_pairs_hook=collections.OrderedDict) for file_name, file_object in file_objects['fileList'].iteritems(): file_name = file_name.lstrip('/') file_meta = sxcontroller.getFileMeta.json_call(vol_name, file_name) file_meta = file_meta.get('fileMeta', {}) last_modified = datetime.fromtimestamp(file_object['createdAt']) last_modified = datetime_to_http_iso(last_modified) yield { 'hash': file_meta.get('sx-etag', '').decode('hex'), 'content_type': file_meta.get('sx-content-type', '').decode('hex'), 'last_modified': last_modified, 'bytes': file_object['fileSize'], 'name': file_name }
def put_object(api_ver, account, container, object): _validate_object(api_ver, account, container, object) content_length = get_content_length() now = datetime.utcnow() params = { 'last-modified': datetime_to_http_iso(now), 'content-type': get_content_type(object), 'content-length': content_length, 'copy-from': get_copy_from(content_length), 'etag': get_etag(), } content_stream = get_content_stream(params) object_saver = ObjectSaver(account, container, object) object_saver.update_metadata(params) object_saver.upload_from_stream(content_stream) bottle.response.status = 201
def put_object(api_ver, account, container, object): _validate_object(api_ver, account, container, object) content_length = get_content_length() now = datetime.utcnow() params = { "last-modified": datetime_to_http_iso(now), "content-type": get_content_type(object), "content-length": content_length, "copy-from": get_copy_from(content_length), "etag": get_etag(), } content_stream = get_content_stream(params) object_saver = ObjectSaver(account, container, object) object_saver.update_metadata(params) object_saver.upload_from_stream(content_stream) bottle.response.status = 201