def check(self): from pcs_api.bytes_io import (MemoryByteSource, MemoryByteSink, StdoutProgressListener) from pcs_api.models import (CPath, CUploadRequest, CDownloadRequest) msg = "Cloud storage user_id = " + repr(self.storage.get_user_id()) self.ctx.logger.info(msg) msg = "Cloud storage quota = " + repr(self.storage.get_quota()) self.ctx.logger.info(msg) self.ctx.logger.info("Cloud storage is ready") fpath = CPath('/test_dir') self.storage.create_folder(fpath) bpath = fpath.add("test.txt") file_contents_uploaded = b"Test file contents" upload_request = CUploadRequest( bpath, MemoryByteSource(file_contents_uploaded)).content_type( 'text/plain') upload_request.progress_listener(StdoutProgressListener()) self.storage.upload(upload_request) file_contents_downloaded = MemoryByteSink() download_request = CDownloadRequest(bpath, file_contents_downloaded) download_request.progress_listener(StdoutProgressListener()) self.storage.download(download_request) self.storage.delete(fpath) if file_contents_uploaded != file_contents_downloaded.get_bytes(): raise RemotePCSError
def get_file(self, local_path, remote_path): from pcs_api.bytes_io import (FileByteSink, StdoutProgressListener) from pcs_api.models import (CPath, CDownloadRequest) bpath = CPath(remote_path) download_request = CDownloadRequest(bpath, FileByteSink(local_path)) download_request.progress_listener(StdoutProgressListener()) self.storage.download(download_request)
def get_bytes(self, remote_path): from pcs_api.bytes_io import (MemoryByteSink, StdoutProgressListener) from pcs_api.models import (CPath, CDownloadRequest) remote_bytes = MemoryByteSink() bpath = CPath(remote_path) download_request = CDownloadRequest(bpath, remote_bytes) download_request.progress_listener(StdoutProgressListener()) self.storage.download(download_request) return remote_bytes.get_bytes()
def test_download_request_progress_listener(): mbs = MemoryByteSink() dr = CDownloadRequest(CPath('/foo'), mbs) assert dr.byte_sink() is mbs # Now if we decorate: pl = StdoutProgressListener() dr.progress_listener(pl) os = dr.byte_sink().open_stream() os.write(b'a') assert pl.current == 1
def test_download_request_progress_listener(): mbs = MemoryByteSink() dr = CDownloadRequest(CPath("/foo"), mbs) assert dr.byte_sink() is mbs # Now if we decorate: pl = StdoutProgressListener() dr.progress_listener(pl) os = dr.byte_sink().open_stream() os.write(b"a") assert pl.current == 1
fpath = CPath('/pcs_api_new_folder') storage.create_folder(fpath) # Upload a local file in this folder : bpath = fpath.add('pcs_api_new_file') file_content = b'this is file content...' upload_request = CUploadRequest(bpath, MemoryByteSource(file_content)).content_type('text/plain') storage.upload(upload_request) # Download back the file : mbs = MemoryByteSink() download_request = CDownloadRequest(bpath, mbs) storage.download(download_request) assert mbs.get_bytes() == file_content # delete remote folder : storage.delete(fpath) # Example : we'll download a range of largest blob : if largest_blob: range_start = largest_blob.length / 2 range_length = min(largest_blob.length / 2, 1000000) bs = FileByteSink('dest_file.txt') print("Will download range from largest blob : %s to : %s" % (largest_blob, bs)) dr = CDownloadRequest(largest_blob.path, bs).range(range_start, range_length) # watch download progress : dr.progress_listener(StdoutProgressListener()) storage.download(dr) print()
# Upload a local file in this folder : bpath = fpath.add('pcs_api_new_file') file_content = b'this is file content...' upload_request = CUploadRequest( bpath, MemoryByteSource(file_content)).content_type('text/plain') storage.upload(upload_request) # Download back the file : mbs = MemoryByteSink() download_request = CDownloadRequest(bpath, mbs) storage.download(download_request) assert mbs.get_bytes() == file_content # delete remote folder : storage.delete(fpath) # Example : we'll download a range of largest blob : if largest_blob: range_start = largest_blob.length / 2 range_length = min(largest_blob.length / 2, 1000000) bs = FileByteSink('dest_file.txt') print("Will download range from largest blob : %s to : %s" % (largest_blob, bs)) dr = CDownloadRequest(largest_blob.path, bs).range(range_start, range_length) # watch download progress : dr.progress_listener(StdoutProgressListener()) storage.download(dr) print()