Revision 07867f70

b/snf-pithos-backend/pithos/backends/lib/sqlalchemy/node.py
631 631
            c = c.where(self.versions.c.mtime < before)
632 632
        s = s.where(and_(v.c.serial.in_(c),
633 633
                         v.c.cluster == cluster))
634
        s = s.order_by(v.c.node)
634 635
        r = self.conn.execute(s)
635 636
        rproxy = r.fetchall()
636 637
        r.close()
b/snf-pithos-backend/pithos/backends/modular.py
785 785
        if delimiter:
786 786
            prefix = src_name + delimiter if not src_name.endswith(delimiter) else src_name
787 787
            src_names = self._list_objects_no_limit(user, src_account, src_container, prefix, delimiter=None, virtual=True, domain=None, keys=[], shared=False, until=None, size_range=None, all_props=True, public=False)
788
            src_names.sort(key=lambda x: x[2]) # order by nodes
788 789
            paths = [elem[0] for elem in src_names]
789 790
            nodes = [elem[2] for elem in src_names]
790 791
            # TODO: Will do another fetch of the properties in duplicate version...
......
794 795
                src_version_id = prop[self.SERIAL]
795 796
                hash = prop[self.HASH]
796 797
                vtype = prop[self.TYPE]
798
                size = prop[self.SIZE]
797 799
                dest_prefix = dest_name + delimiter if not dest_name.endswith(delimiter) else dest_name
798 800
                vdest_name = path.replace(prefix, dest_prefix, 1)
799 801
                dest_version_ids.append(self._update_object_hash(user, dest_account, dest_container, vdest_name, size, vtype, hash, None, dest_domain, dest_meta, replace_meta, permissions, src_node=node, src_version_id=src_version_id, is_copy=is_copy))
b/snf-pithos-tools/pithos/tools/test.py
1432 1432
    
1433 1433
    def test_copy_dir(self):
1434 1434
        self.client.create_folder(self.containers[0], 'dir')
1435
        objects = ('object1', 'subdir/object2', 'dirs')
1436
        for name in objects[:-1]:
1437
            self.upload_random_data(self.containers[0], 'dir/%s' % name)
1435
        objects = ('object1.jpg', 'subdir/object2.pdf', 'dirs')
1436
        for name, i in zip(objects[:-1], range(1, len(objects[:-1])+1)):
1437
            self.upload_random_data(self.containers[0], 'dir/%s' % name, length=i*1024)
1438 1438
        self.upload_random_data(self.containers[0], 'dirs')
1439 1439
        
1440 1440
        self.client.copy_object(self.containers[0], 'dir', self.containers[1], 'dir-backup', delimiter='/')
......
1485 1485
    
1486 1486
    def test_move_dir(self):
1487 1487
        self.client.create_folder(self.containers[0], 'dir')
1488
        objects = ('object1', 'subdir/object2', 'dirs')
1488
        objects = ('object1.jpg', 'subdir/object2.pdf', 'dirs')
1489 1489
        meta = {}
1490
        for name in objects[:-1]:
1491
            self.upload_random_data(self.containers[0], 'dir/%s' % name)
1490
        for name, i in zip(objects[:-1], range(1, len(objects[:-1])+1)):
1491
            self.upload_random_data(self.containers[0], 'dir/%s' % name, length=i*1024)
1492 1492
            meta[name] = self.client.retrieve_object_metadata(self.containers[0], 'dir/%s' % name)
1493 1493
        self.upload_random_data(self.containers[0], 'dirs')
1494 1494
        
......
1799 1799
    
1800 1800
    def test_delete_dir(self):
1801 1801
        self.client.create_folder(self.containers[0], 'dir')
1802
        objects = ('object1', 'subdir/object2', 'dirs')
1802
        objects = ('object1.jpg', 'subdir/object2.pdf', 'dirs')
1803 1803
        for name in objects[:-1]:
1804 1804
            self.upload_random_data(self.containers[0], 'dir/%s' % name)
1805 1805
        self.upload_random_data(self.containers[0], 'dirs')

Also available in: Unified diff