created volume handler for restore without index
authorChristian Herdtweck <christian.herdtweck@intra2net.com>
Wed, 22 Jun 2016 15:13:29 +0000 (17:13 +0200)
committerThomas Jarosch <thomas.jarosch@intra2net.com>
Mon, 2 Apr 2018 09:32:53 +0000 (11:32 +0200)
deltatar/deltatar.py

index 2455be8..7fdf5c6 100644 (file)
@@ -1273,7 +1273,25 @@ class DeltaTar(object):
         os.chdir(target_path)
 
         if mode == 'tar':
-            index_it = self.iterate_tar_path(backup_tar_path)
+            def new_volume_handler(deltarobj, backup_path, tarobj, base_name, volume_number):
+                ''' Handles the new volumes '''
+                is_full = True
+                volume_name = deltarobj.volume_name_func(backup_path, is_full,
+                                                         volume_number)
+                volume_path = os.path.join(backup_path, volume_name)
+                deltarobj.vol_no = volume_number
+
+                if tarobj.fileobj is not None:
+                    tarobj.fileobj.close()
+
+                deltarobj.logger.debug("opening volume %s" % volume_path)
+                tarobj.open_volume(volume_path)
+
+            # will be used by TarFile
+            # wraps some args from context into the handler
+            new_volume_handler = partial(new_volume_handler, self, os.path.dirname(backup_tar_path))
+            index_it = self.iterate_tar_path(backup_tar_path,
+                                             new_volume_handler=new_volume_handler)
             helper = RestoreHelper(self, cwd, backup_path=backup_tar_path,
                                    tarobj=index_it.tar_obj)
         elif mode == "diff":