[Libguestfs] [v2v PATCH] vCenter: require curl in #precheck
Richard W.M. Jones
rjones at redhat.com
Tue May 26 09:20:43 UTC 2020
On Tue, May 26, 2020 at 09:29:24AM +0200, Pino Toscano wrote:
> The curl binary is used in the VCenter module, so require it up-front.
> This let us remove the need to point the user to check whether curl is
> installed in an error message.
> ---
> v2v/input_libvirt_vcenter_https.ml | 13 ++++++++++++-
> v2v/vCenter.ml | 2 +-
> 2 files changed, 13 insertions(+), 2 deletions(-)
>
> diff --git a/v2v/input_libvirt_vcenter_https.ml b/v2v/input_libvirt_vcenter_https.ml
> index ed2e5eed..2265f76e 100644
> --- a/v2v/input_libvirt_vcenter_https.ml
> +++ b/v2v/input_libvirt_vcenter_https.ml
> @@ -19,6 +19,7 @@
> (** [-i libvirt] when the source is VMware vCenter *)
>
> open Common_gettext.Gettext
> +open Std_utils
> open Tools_utils
> open Unix_utils.Env
>
> @@ -33,13 +34,23 @@ open Printf
> (* Subclass specialized for handling VMware vCenter over https. *)
> class input_libvirt_vcenter_https
> libvirt_conn input_conn input_password parsed_uri server guest =
> +
> + let error_unless_curl_command_exists () =
> + let curl_binary = "curl" in
> + try ignore (which curl_binary)
> + with Executable_not_found _ ->
> + error (f_"the ‘%s’ program is not available. It is needed to communicate with vCenter.")
> + curl_binary
> + in
> +
> object (self)
> inherit input_libvirt libvirt_conn ~input_conn guest
>
> val mutable dcPath = ""
>
> method precheck () =
> - error_if_libvirt_does_not_support_json_backingfile ()
> + error_if_libvirt_does_not_support_json_backingfile ();
> + error_unless_curl_command_exists ()
>
> method source ?bandwidth () =
> debug "input_libvirt_vcenter_https: source: server %s" server;
> diff --git a/v2v/vCenter.ml b/v2v/vCenter.ml
> index 586ea3e2..33120e88 100644
> --- a/v2v/vCenter.ml
> +++ b/v2v/vCenter.ml
> @@ -189,7 +189,7 @@ and fetch_headers_from_url password_file uri sslverify https_url =
> match statuses with
> | [] ->
> dump_response stderr;
> - error (f_"vcenter: no status code in output of ‘curl’ command. Is ‘curl’ installed?")
> + error (f_"vcenter: no status code in output of ‘curl’ command.")
> | ss ->
> let s = List.hd (List.rev ss) in
> String.sub s (String.index s ' ' + 1) 3 in
ACK
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-p2v converts physical machines to virtual machines. Boot with a
live CD or over the network (PXE) and turn machines into KVM guests.
http://libguestfs.org/virt-v2v
More information about the Libguestfs
mailing list