[Libguestfs] [PATCH v3 06/13] v2v: factor out determining the guest firmware

Roman Kagan rkagan at virtuozzo.com
Tue Oct 20 13:08:14 UTC 2015


Signed-off-by: Roman Kagan <rkagan at virtuozzo.com>
---
 v2v/v2v.ml | 45 +++++++++++++++++++++++++--------------------
 1 file changed, 25 insertions(+), 20 deletions(-)

diff --git a/v2v/v2v.ml b/v2v/v2v.ml
index 633c29f..afffde2 100644
--- a/v2v/v2v.ml
+++ b/v2v/v2v.ml
@@ -103,26 +103,7 @@ let rec main () =
   g#shutdown ();
   g#close ();
 
-  (* Does the guest require UEFI on the target? *)
-  message (f_"Checking if the guest needs BIOS or UEFI to boot");
-  let target_firmware =
-    match source.s_firmware with
-    | BIOS -> TargetBIOS
-    | UEFI -> TargetUEFI
-    | UnknownFirmware ->
-       if inspect.i_uefi then TargetUEFI else TargetBIOS in
-  let supported_firmware = output#supported_firmware in
-  if not (List.mem target_firmware supported_firmware) then
-    error (f_"this guest cannot run on the target, because the target does not support %s firmware (supported firmware on target: %s)")
-          (string_of_target_firmware target_firmware)
-          (String.concat " "
-            (List.map string_of_target_firmware supported_firmware));
-
-  output#check_target_firmware guestcaps target_firmware;
-
-  (match target_firmware with
-   | TargetBIOS -> ()
-   | TargetUEFI -> info (f_"This guest requires UEFI on the target to boot."));
+  let target_firmware = get_target_firmware inspect guestcaps source output in
 
   message (f_"Assigning disks to buses");
   let target_buses = target_bus_assignment source targets guestcaps in
@@ -820,6 +801,30 @@ and do_convert g inspect source keep_serial_console =
 
   guestcaps
 
+and get_target_firmware inspect guestcaps source output =
+  (* Does the guest require UEFI on the target? *)
+  message (f_"Checking if the guest needs BIOS or UEFI to boot");
+  let target_firmware =
+    match source.s_firmware with
+    | BIOS -> TargetBIOS
+    | UEFI -> TargetUEFI
+    | UnknownFirmware ->
+       if inspect.i_uefi then TargetUEFI else TargetBIOS in
+  let supported_firmware = output#supported_firmware in
+  if not (List.mem target_firmware supported_firmware) then
+    error (f_"this guest cannot run on the target, because the target does not support %s firmware (supported firmware on target: %s)")
+          (string_of_target_firmware target_firmware)
+          (String.concat " "
+            (List.map string_of_target_firmware supported_firmware));
+
+  output#check_target_firmware guestcaps target_firmware;
+
+  (match target_firmware with
+   | TargetBIOS -> ()
+   | TargetUEFI -> info (f_"This guest requires UEFI on the target to boot."));
+
+  target_firmware
+
 (* Update the target_actual_size field in the target structure. *)
 and actual_target_size target =
   { target with target_actual_size = du target.target_file }
-- 
2.4.3




More information about the Libguestfs mailing list