[Libguestfs] [PATCH v2v 3/4] v2v: Simplify VCenter module interface.

Richard W.M. Jones rjones at redhat.com
Thu Sep 24 09:38:34 UTC 2020


Since we no longer need to return the extra data needed by
virt-v2v-copy-to-local, we can greatly simplify the interface to this
module.
---
 v2v/input_libvirt_vcenter_https.ml |  6 ++--
 v2v/vCenter.ml                     | 16 ++-------
 v2v/vCenter.mli                    | 53 ++++++------------------------
 3 files changed, 16 insertions(+), 59 deletions(-)

diff --git a/v2v/input_libvirt_vcenter_https.ml b/v2v/input_libvirt_vcenter_https.ml
index 2265f76ec..0886067b0 100644
--- a/v2v/input_libvirt_vcenter_https.ml
+++ b/v2v/input_libvirt_vcenter_https.ml
@@ -88,9 +88,9 @@ object (self)
       | { p_source = P_source_dev _ } -> assert false
       | { p_source_disk = disk; p_source = P_dont_rewrite } -> disk
       | { p_source_disk = disk; p_source = P_source_file path } ->
-        let { VCenter.qemu_uri } =
-          VCenter.map_source ?bandwidth ?password_file:input_password
-                             dcPath parsed_uri server path in
+        let qemu_uri =
+          VCenter.qemu_uri_of_path ?bandwidth ?password_file:input_password
+                                   dcPath parsed_uri server path in
 
         (* The libvirt ESX driver doesn't normally specify a format, but
          * the format of the -flat file is *always* raw, so force it here.
diff --git a/v2v/vCenter.ml b/v2v/vCenter.ml
index 33120e881..b41422c1f 100644
--- a/v2v/vCenter.ml
+++ b/v2v/vCenter.ml
@@ -25,17 +25,10 @@ open Common_gettext.Gettext
 open Xml
 open Utils
 
-type remote_resource = {
-  https_url : string;
-  qemu_uri : string;
-  session_cookie : string option;
-  sslverify : bool;
-}
-
 let source_re = PCRE.compile "^\\[(.*)\\] (.*)\\.vmdk$"
 let snapshot_re = PCRE.compile "^(.*)-\\d{6}(\\.vmdk)$"
 
-let rec map_source ?bandwidth ?password_file dcPath uri server path =
+let rec qemu_uri_of_path ?bandwidth ?password_file dcPath uri server path =
   (* If no_verify=1 was passed in the libvirt URI, then we have to
    * turn off certificate verification here too.
    *)
@@ -82,11 +75,8 @@ let rec map_source ?bandwidth ?password_file dcPath uri server path =
                        ?user:uri.uri_user https_url in
   let qemu_uri = Nbdkit_sources.run nbdkit in
 
-  (* Return the struct. *)
-  { https_url = https_url;
-    qemu_uri = qemu_uri;
-    session_cookie = session_cookie;
-    sslverify = sslverify }
+  (* Return the QEMU URI. *)
+  qemu_uri
 
 and get_https_url dcPath uri server path =
   if not (PCRE.matches source_re path) then
diff --git a/v2v/vCenter.mli b/v2v/vCenter.mli
index d400d39b4..848def9dc 100644
--- a/v2v/vCenter.mli
+++ b/v2v/vCenter.mli
@@ -18,52 +18,19 @@
 
 (** Functions for dealing with VMware vCenter. *)
 
-type remote_resource = {
-  https_url : string;
-  (** The full URL of the remote disk as an https link on the vCenter
-      server.  It will have the general form
-      [https://vcenter/folder/.../guest-flat.vmdk?dcPath=...&...] *)
-
-  qemu_uri : string;
-  (** The remote disk as a QEMU URI.  This opaque blob (usually a
-      [json:] URL) can be passed to [qemu] or [qemu-img] as a backing
-      file. *)
-
-  session_cookie : string option;
-  (** When creating the URLs above, the module contacts the vCenter
-      server, logs in, and gets the session cookie, which can later
-      be passed back to the server instead of having to log in each
-      time (this is also more efficient since it avoids vCenter
-      running out of authentication sessions).
-
-      This can be [None] if the session cookie could not be read (but
-      authentication was successful).  You can proceed without the
-      session cookie in this case, but there is an unavoidable
-      danger of running out of authentication sessions.  If the
-      session cookie could not be read, this function prints a
-      warning.
-
-      If authentication {i failed} then the {!map_source} function
-      would exit with an error, so [None] does not indicate auth
-      failure. *)
-
-  sslverify : bool;
-  (** This is true except when the libvirt URI had [?no_verify=1] in
-      the parameters. *)
-}
-(** The "remote resource" is the structure returned by the {!map_source}
-    function. *)
-
-val map_source : ?bandwidth:Types.bandwidth -> ?password_file:string ->
-                 string -> Xml.uri -> string -> string -> remote_resource
-(** [map_source ?password_file dcPath uri server path]
-    maps the [<source path=...>] string to a {!remote_resource}
-    structure containing both an [https://] URL and a qemu URI,
-    both pointing the guest disk.
+val qemu_uri_of_path : ?bandwidth:Types.bandwidth -> ?password_file:string ->
+                       string -> Xml.uri -> string -> string -> string
+(** [qemu_uri_of_path ?bandwidth ?password_file dcPath uri server path]
+    maps the [<source path=...>] string to a qemu URI pointing
+    to the guest disk.
 
     The input [path] comes from libvirt and will be something like:
     ["[datastore1] Fedora 20/Fedora 20.vmdk"]
     (including those literal spaces in the string).
 
     This checks that the disk exists and that authentication is
-    correct, otherwise it will fail. *)
+    correct, otherwise it will fail.
+
+    The returned QEMU URI is an opaque blob (usually a [json:] URL)
+    which can be passed to [qemu] or [qemu-img] as a backing
+    file. *)
-- 
2.27.0




More information about the Libguestfs mailing list