[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