Commits

Rodrigo Bistolfi committed 58e8cb2

Better free region detection

Comments (0)

Files changed (1)

vinstall/backend/partitioning.py

         self.disk._disk = parted.freshDisk(self.disk._device, "msdos")
         self.disk._disk.has_partition_table = True
 
+    def partitions_number(self):
+        """Return the number of partitions in disk
+        
+        """
+        return len(self.disk._disk.partitions)
+
     def add_partition(self,  size=0, units='MB'):
         """Add a partition to the disk.  
         Args:  size = partition size
         myconst = parted.Constraint(device = self.disk._device)
         for i in self.disk._disk.getFreeSpaceRegions():
             if i > mypsize:  # partition fits here
-                start_marker = max(i.start, 2048)
+                if not self.partitions_number():
+                    start_marker = max(i.start, 2048)
+                else:
+                    start_marker = i.start
+                break
+        else:
+            raise RuntimeError("There is no free space for partition")
 
         mygeom = parted.Geometry(device = self.disk._device,
                                  start = start_marker,
         p.delete_all_partitions()
         p.write_changes()
         self.assertEqual(len(disk._disk.partitions), 0)
- 
+
 
 if __name__ == "__main__":
     unittest.main()