Factor out perfoming the actual convertion of the guest, which includes
determinig the appropriate guest os specific conversion module and
running its conversion routine.
Signed-off-by: Roman Kagan <rkagan(a)virtuozzo.com>
---
v2v/v2v.ml | 59 ++++++++++++++++++++++++++++++-----------------------------
1 file changed, 30 insertions(+), 29 deletions(-)
diff --git a/v2v/v2v.ml b/v2v/v2v.ml
index 53456ea..c6a567a 100644
--- a/v2v/v2v.ml
+++ b/v2v/v2v.ml
@@ -371,6 +371,34 @@ let check_target_free_space mpstats source targets output =
output#check_target_free_space source targets
+let do_convert g inspect source keep_serial_console =
+ (* Conversion. *)
+ (match inspect.i_product_name with
+ | "unknown" ->
+ message (f_"Converting the guest to run on KVM")
+ | prod ->
+ message (f_"Converting %s to run on KVM") prod
+ );
+
+ let conversion_name, convert =
+ try Modules_list.find_convert_module inspect
+ with Not_found ->
+ error (f_"virt-v2v is unable to convert this guest type (%s/%s)")
+ inspect.i_type inspect.i_distro in
+ if verbose () then printf "picked conversion module %s\n%!" conversion_name;
+ let guestcaps = convert ~keep_serial_console g inspect source in
+ if verbose () then printf "%s%!" (string_of_guestcaps guestcaps);
+
+ (* Did we manage to install virtio drivers? *)
+ if not (quiet ()) then (
+ if guestcaps.gcaps_block_bus = Virtio_blk then
+ info (f_"This guest has virtio drivers installed.")
+ else
+ info (f_"This guest does not have virtio drivers installed.");
+ );
+
+ guestcaps
+
let rec main () =
(* Handle the command line. *)
let input, output,
@@ -414,35 +442,8 @@ let rec main () =
check_free_space mpstats;
check_target_free_space mpstats source targets output;
- (* Conversion. *)
- let guestcaps =
- (match inspect.i_product_name with
- | "unknown" ->
- message (f_"Converting the guest to run on KVM")
- | prod ->
- message (f_"Converting %s to run on KVM") prod
- );
-
- (* RHEV doesn't support serial console so remove any on conversion. *)
- let keep_serial_console = output#keep_serial_console in
-
- let conversion_name, convert =
- try Modules_list.find_convert_module inspect
- with Not_found ->
- error (f_"virt-v2v is unable to convert this guest type (%s/%s)")
- inspect.i_type inspect.i_distro in
- if verbose () then printf "picked conversion module %s\n%!"
conversion_name;
- let guestcaps = convert ~keep_serial_console g inspect source in
- if verbose () then printf "%s%!" (string_of_guestcaps guestcaps);
- guestcaps in
-
- (* Did we manage to install virtio drivers? *)
- if not (quiet ()) then (
- if guestcaps.gcaps_block_bus = Virtio_blk then
- info (f_"This guest has virtio drivers installed.")
- else
- info (f_"This guest does not have virtio drivers installed.");
- );
+ let keep_serial_console = output#keep_serial_console in
+ let guestcaps = do_convert g inspect source keep_serial_console in
g#umount_all ();
--
2.4.3