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