Revision 188f23b9
b/kamaki/clients/pithos.py | ||
---|---|---|
57 | 57 |
success=202) |
58 | 58 |
assert r.text.strip() == hash, 'Local hash does not match server' |
59 | 59 |
|
60 |
def create_object(self, object, f, hash_cb=None, upload_cb=None): |
|
60 |
def create_object(self, object, f, size=None, hash_cb=None, |
|
61 |
upload_cb=None): |
|
61 | 62 |
"""Create an object by uploading only the missing blocks |
62 | 63 |
|
63 | 64 |
hash_cb is a generator function taking the total number of blocks to |
... | ... | |
73 | 74 |
blocksize = int(meta['block-size']) |
74 | 75 |
blockhash = meta['block-hash'] |
75 | 76 |
|
76 |
file_size = os.fstat(f.fileno()).st_size |
|
77 |
file_size = size if size is not None else os.fstat(f.fileno()).st_size
|
|
77 | 78 |
nblocks = 1 + (file_size - 1) // blocksize |
78 | 79 |
hashes = OrderedDict() |
79 | 80 |
|
b/kamaki/clients/storage.py | ||
---|---|---|
74 | 74 |
|
75 | 75 |
return reply |
76 | 76 |
|
77 |
def create_object(self, object, f, hash_cb=None, upload_cb=None): |
|
77 |
def create_object(self, object, f, size=None, hash_cb=None, |
|
78 |
upload_cb=None): |
|
78 | 79 |
# This is a naive implementation, it loads the whole file in memory |
79 | 80 |
self.assert_container() |
80 | 81 |
path = '/%s/%s/%s' % (self.account, self.container, object) |
81 |
data = f.read() |
|
82 |
data = f.read(size) if size is not None else f.read()
|
|
82 | 83 |
self.put(path, data=data, success=201) |
83 | 84 |
|
84 | 85 |
def get_object(self, object): |
Also available in: Unified diff