Rodrigo Bistolfi avatar Rodrigo Bistolfi committed 58e8cb2

Better free region detection

Comments (0)

Files changed (1)


         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,
         self.assertEqual(len(disk._disk.partitions), 0)
 if __name__ == "__main__":
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.