]> code.ossystems Code Review - openembedded-core.git/commitdiff
wic: direct: move UUID generation to PartitionedImage
authorEd Bartosh <ed.bartosh@linux.intel.com>
Fri, 10 Feb 2017 10:41:15 +0000 (12:41 +0200)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Thu, 16 Feb 2017 04:06:34 +0000 (20:06 -0800)
Moved code that generates partition UUIDs from DirectPlugin to
PartitionedImage class as it's more logical to have it there.
This allows the code to be reused by other imager plugins.

Got rid of having yet another list of partitions in PartitionedImage.
Reused the list passed from DirectPlugin.

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
scripts/lib/wic/plugins/imager/direct.py

index ffe6c8406d1c7f6a5527d22c7b487c6374d32ad1..18cd2773d1c22b5f74ed00885433beb2d3760f2f 100644 (file)
@@ -158,7 +158,7 @@ class DirectPlugin(ImagerPlugin):
         """
         image_path = self._full_path(self.workdir, self.parts[0].disk, "direct")
         self._image = PartitionedImage(image_path, self.ptable_format,
-                                       self.native_sysroot)
+                                       self.parts, self.native_sysroot)
 
         for part in self.parts:
             # as a convenience, set source to the boot partition source
@@ -166,13 +166,6 @@ class DirectPlugin(ImagerPlugin):
             if not self.ks.bootloader.source and part.mountpoint == "/boot":
                 self.ks.bootloader.source = part.source
 
-            # generate parition UUIDs
-            if not part.uuid and part.use_uuid:
-                if self.ptable_format == 'gpt':
-                    part.uuid = str(uuid.uuid4())
-                else: # msdos partition table
-                    part.uuid = '%0x-%02d' % (self._image.identifier, part.realnum)
-
         fstab_path = self._write_fstab(self.rootfs_dir.get("ROOTFS_DIR"))
 
         for part in self.parts:
@@ -310,7 +303,7 @@ class PartitionedImage():
     Partitioned image in a file.
     """
 
-    def __init__(self, path, ptable_format, native_sysroot=None):
+    def __init__(self, path, ptable_format, partitions, native_sysroot=None):
         self.path = path  # Path to the image file
         self.numpart = 0  # Number of allocated partitions
         self.realpart = 0 # Number of partitions in the partition table
@@ -321,12 +314,20 @@ class PartitionedImage():
         # Disk system identifier
         self.identifier = int.from_bytes(os.urandom(4), 'little')
 
-        self.partitions = []
+        self.partitions = partitions
         self.partimages = []
         # Size of a sector used in calculations
         self.sector_size = SECTOR_SIZE
         self.native_sysroot = native_sysroot
 
+        # generate parition UUIDs
+        for part in self.partitions:
+            if not part.uuid and part.use_uuid:
+                if self.ptable_format == 'gpt':
+                    part.uuid = str(uuid.uuid4())
+                else: # msdos partition table
+                    part.uuid = '%0x-%02d' % (self.identifier, part.realnum)
+
     def add_partition(self, part):
         """
         Add the next partition. Partitions have to be added in the
@@ -337,8 +338,6 @@ class PartitionedImage():
         # Converting kB to sectors for parted
         part.size_sec = part.disk_size * 1024 // self.sector_size
 
-        self.partitions.append(part)
-
     def layout_partitions(self):
         """ Layout the partitions, meaning calculate the position of every
         partition on the disk. The 'ptable_format' parameter defines the