[Libguestfs] [PATCH v3 05/13] v2v: factor out actual guest transformation
Richard W.M. Jones
rjones at redhat.com
Tue Oct 20 14:07:59 UTC 2015
On Tue, Oct 20, 2015 at 04:08:13PM +0300, Roman Kagan wrote:
> 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 at virtuozzo.com>
> ---
> v2v/v2v.ml | 59 ++++++++++++++++++++++++++++++-----------------------------
> 1 file changed, 30 insertions(+), 29 deletions(-)
>
> diff --git a/v2v/v2v.ml b/v2v/v2v.ml
> index a2b6f52..633c29f 100644
> --- a/v2v/v2v.ml
> +++ b/v2v/v2v.ml
> @@ -84,35 +84,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 ();
>
> @@ -819,6 +792,34 @@ and check_target_free_space mpstats source targets output =
>
> output#check_target_free_space source targets
>
> +and 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
> +
> (* Update the target_actual_size field in the target structure. *)
> and actual_target_size target =
> { target with target_actual_size = du target.target_file }
Straightforward refactoring, ACK.
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
libguestfs lets you edit virtual machines. Supports shell scripting,
bindings from many languages. http://libguestfs.org
More information about the Libguestfs
mailing list