126 lines
4.9 KiB
Diff
126 lines
4.9 KiB
Diff
|
From 60e72acb344e89656f7b13d9e360d05cc983a419 Mon Sep 17 00:00:00 2001
|
|||
|
From: "Richard W.M. Jones" <rjones@redhat.com>
|
|||
|
Date: Mon, 15 Jan 2024 16:14:10 +0000
|
|||
|
Subject: [PATCH] virt-v2v: -i vmx: Add the input password to vmx_source
|
|||
|
|
|||
|
Since we use the input password in various places in the VMX module,
|
|||
|
store the input password in vmx_source. This neutral refactoring
|
|||
|
makes later changes simpler.
|
|||
|
|
|||
|
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
|
|||
|
---
|
|||
|
input/input_vmx.ml | 13 ++++++-------
|
|||
|
input/parse_domain_from_vmx.ml | 12 ++++++------
|
|||
|
input/parse_domain_from_vmx.mli | 7 ++++---
|
|||
|
3 files changed, 16 insertions(+), 16 deletions(-)
|
|||
|
|
|||
|
diff --git a/input/input_vmx.ml b/input/input_vmx.ml
|
|||
|
index bd20420c..b9cce10f 100644
|
|||
|
--- a/input/input_vmx.ml
|
|||
|
+++ b/input/input_vmx.ml
|
|||
|
@@ -45,13 +45,17 @@ module VMX = struct
|
|||
|
let vmx_source =
|
|||
|
match args with
|
|||
|
| [arg] ->
|
|||
|
+ let input_password =
|
|||
|
+ match options.input_password with
|
|||
|
+ | None -> Nbdkit_ssh.NoPassword
|
|||
|
+ | Some ip -> Nbdkit_ssh.PasswordFile ip in
|
|||
|
let input_transport =
|
|||
|
match options.input_transport with
|
|||
|
| None -> None
|
|||
|
| Some `SSH -> Some `SSH
|
|||
|
| Some `VDDK ->
|
|||
|
error (f_"-i vmx: cannot use -it vddk in this input mode") in
|
|||
|
- vmx_source_of_arg input_transport arg
|
|||
|
+ vmx_source_of_arg input_password input_transport arg
|
|||
|
| _ ->
|
|||
|
error (f_"-i vmx: expecting a VMX file or ssh:// URI") in
|
|||
|
|
|||
|
@@ -73,7 +77,7 @@ module VMX = struct
|
|||
|
On_exit.kill pid
|
|||
|
) filenames
|
|||
|
|
|||
|
- | SSH uri ->
|
|||
|
+ | SSH (password, uri) ->
|
|||
|
List.iteri (
|
|||
|
fun i filename ->
|
|||
|
let socket = sprintf "%s/in%d" dir i in
|
|||
|
@@ -95,11 +99,6 @@ module VMX = struct
|
|||
|
let server = Ssh.server_of_uri uri in
|
|||
|
let port = Option.map string_of_int (Ssh.port_of_uri uri) in
|
|||
|
let user = uri.Xml.uri_user in
|
|||
|
- let password =
|
|||
|
- match options.input_password with
|
|||
|
- | None -> Nbdkit_ssh.NoPassword
|
|||
|
- | Some ip -> Nbdkit_ssh.PasswordFile ip in
|
|||
|
-
|
|||
|
let cor = dir // "convert" in
|
|||
|
let bandwidth = options.bandwidth in
|
|||
|
let nbdkit = Nbdkit_ssh.create_ssh ?bandwidth ~cor ~password
|
|||
|
diff --git a/input/parse_domain_from_vmx.ml b/input/parse_domain_from_vmx.ml
|
|||
|
index e6500da6..0719738c 100644
|
|||
|
--- a/input/parse_domain_from_vmx.ml
|
|||
|
+++ b/input/parse_domain_from_vmx.ml
|
|||
|
@@ -29,13 +29,13 @@ open Utils
|
|||
|
open Name_from_disk
|
|||
|
|
|||
|
type vmx_source =
|
|||
|
- | File of string (* local file or NFS *)
|
|||
|
- | SSH of Xml.uri (* SSH URI *)
|
|||
|
+ | File of string (* local file or NFS *)
|
|||
|
+ | SSH of Nbdkit_ssh.password * Xml.uri (* SSH URI *)
|
|||
|
|
|||
|
(* The single filename on the command line is intepreted either as
|
|||
|
* a local file or a remote SSH URI (only if ‘-it ssh’).
|
|||
|
*)
|
|||
|
-let vmx_source_of_arg input_transport arg =
|
|||
|
+let vmx_source_of_arg input_password input_transport arg =
|
|||
|
match input_transport, arg with
|
|||
|
| None, arg -> File arg
|
|||
|
| Some `SSH, arg ->
|
|||
|
@@ -49,7 +49,7 @@ let vmx_source_of_arg input_transport arg =
|
|||
|
error (f_"vmx URI remote server name omitted");
|
|||
|
if uri.Xml.uri_path = None || uri.Xml.uri_path = Some "/" then
|
|||
|
error (f_"vmx URI path component looks incorrect");
|
|||
|
- SSH uri
|
|||
|
+ SSH (input_password, uri)
|
|||
|
|
|||
|
let rec find_disks vmx vmx_source =
|
|||
|
(* Set the s_disk_id field to an incrementing number. *)
|
|||
|
@@ -334,7 +334,7 @@ let parse_domain_from_vmx vmx_source =
|
|||
|
let vmx =
|
|||
|
match vmx_source with
|
|||
|
| File filename -> Parse_vmx.parse_file filename
|
|||
|
- | SSH uri ->
|
|||
|
+ | SSH (_, uri) ->
|
|||
|
let filename = tmpdir // "source.vmx" in
|
|||
|
Ssh.download_file uri filename;
|
|||
|
Parse_vmx.parse_file filename in
|
|||
|
@@ -346,7 +346,7 @@ let parse_domain_from_vmx vmx_source =
|
|||
|
warning (f_"no displayName key found in VMX file");
|
|||
|
match vmx_source with
|
|||
|
| File filename -> name_from_disk filename
|
|||
|
- | SSH uri -> name_from_disk (Ssh.path_of_uri uri) in
|
|||
|
+ | SSH (_, uri) -> name_from_disk (Ssh.path_of_uri uri) in
|
|||
|
|
|||
|
let genid =
|
|||
|
(* See: https://lists.nongnu.org/archive/html/qemu-devel/2018-07/msg02019.html *)
|
|||
|
diff --git a/input/parse_domain_from_vmx.mli b/input/parse_domain_from_vmx.mli
|
|||
|
index 42f8100e..208797a7 100644
|
|||
|
--- a/input/parse_domain_from_vmx.mli
|
|||
|
+++ b/input/parse_domain_from_vmx.mli
|
|||
|
@@ -17,8 +17,9 @@
|
|||
|
*)
|
|||
|
|
|||
|
type vmx_source =
|
|||
|
- | File of string (** local file or NFS *)
|
|||
|
- | SSH of Xml.uri (** SSH URI *)
|
|||
|
+ | File of string (** local file or NFS *)
|
|||
|
+ | SSH of Nbdkit_ssh.password * Xml.uri (** SSH URI *)
|
|||
|
|
|||
|
-val vmx_source_of_arg : [`SSH] option -> string -> vmx_source
|
|||
|
+val vmx_source_of_arg : Nbdkit_ssh.password -> [`SSH] option -> string ->
|
|||
|
+ vmx_source
|
|||
|
val parse_domain_from_vmx : vmx_source -> Types.source * string list
|