GUID of a partion can be specified if needed

Previously, when a composite disk is create from one or more partition
images, the GUID for each of the partition was randomly chosen.

This change makes it possible to specify the partition GUID if needed.
This is required for Ferrochrome where partitions are accessed via their
GUID, not by their label in the partition table.

Bug: 351973725
Test: Ferrochrome boots with the vm_config.json in the follow-up change.

Change-Id: I63647d77d74a7be99cc4811f5c836f74f13928a9
diff --git a/virtualizationmanager/src/composite.rs b/virtualizationmanager/src/composite.rs
index a4b7eae..681ec59 100644
--- a/virtualizationmanager/src/composite.rs
+++ b/virtualizationmanager/src/composite.rs
@@ -23,6 +23,8 @@
 use std::os::unix::io::AsRawFd;
 use std::path::{Path, PathBuf};
 
+use uuid::Uuid;
+
 /// Constructs a composite disk image for the given list of partitions, and opens it ready to use.
 ///
 /// Returns the composite disk image file, and a list of files whose file descriptors must be passed
@@ -105,6 +107,7 @@
                 partition_type: ImagePartitionType::LinuxFilesystem,
                 writable: partition.writable,
                 size,
+                part_guid: partition.guid.as_deref().map(Uuid::parse_str).transpose()?,
             })
         })
         .collect::<Result<_, Error>>()?;