Rebase to virt-v2v 2.7.10
related: RHEL-81735 Fix virt-v2v -v --install dnf5 error resolves: RHEL-83288 Print blkhash of converted image in virt-v2v debugging output resolves: RHEL-85514
This commit is contained in:
parent
c3ef9bc846
commit
c7438ea845
@ -1,60 +0,0 @@
|
||||
From 8dd5577174fe23ace5ecba7a81d2516315a0b301 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Wed, 30 Oct 2024 10:16:35 +0000
|
||||
Subject: [PATCH] lib: OVF: Add preliminary support for Windows Server 2025
|
||||
|
||||
Unfortunately support has not yet been added to oVirt. However I have
|
||||
inferred the correct ostype value based on existing entries.
|
||||
|
||||
Also pull in the following commit from the common submodule:
|
||||
|
||||
Richard W.M. Jones (1):
|
||||
mlcustomize: Add heuristic support for Windows Server 2025
|
||||
|
||||
Related: https://issues.redhat.com/browse/RHEL-65009
|
||||
Related: https://issues.redhat.com/browse/RHEL-65010
|
||||
Reported-by: Ming Xie
|
||||
---
|
||||
common | 2 +-
|
||||
lib/create_ovf.ml | 4 +++-
|
||||
2 files changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
Submodule common e9eea65a..2d42128e:
|
||||
diff --git a/common/mlcustomize/inject_virtio_win.ml b/common/mlcustomize/inject_virtio_win.ml
|
||||
index 88c1c8cf..7e46f318 100644
|
||||
--- a/common/mlcustomize/inject_virtio_win.ml
|
||||
+++ b/common/mlcustomize/inject_virtio_win.ml
|
||||
@@ -522,6 +522,8 @@ and virtio_iso_path_matches_guest_os t path =
|
||||
(10, 0, not_client, ((=) "win2k19"))
|
||||
else if pathelem "2k22" || pathelem "win2022" then
|
||||
(10, 0, not_client, ((=) "win2k22"))
|
||||
+ else if pathelem "2k25" || pathelem "win2025" then
|
||||
+ (10, 0, not_client, ((=) "win2k25"))
|
||||
else
|
||||
raise Not_found in
|
||||
|
||||
diff --git a/lib/create_ovf.ml b/lib/create_ovf.ml
|
||||
index f0b32e01..e2c19b08 100644
|
||||
--- a/lib/create_ovf.ml
|
||||
+++ b/lib/create_ovf.ml
|
||||
@@ -242,10 +242,11 @@ and get_ostype = function
|
||||
| "win2k16" -> "windows_2016x64"
|
||||
| "win2k19" -> "windows_2019x64"
|
||||
| "win2k22" -> "windows_2022"
|
||||
+ | "win2k25" -> "windows_2025"
|
||||
| _ ->
|
||||
warning (f_"unknown Windows 10 variant: %s (%s)")
|
||||
osinfo product;
|
||||
- "windows_2022"
|
||||
+ "windows_2025"
|
||||
)
|
||||
|
||||
| { i_type = typ; i_distro = distro;
|
||||
@@ -448,6 +449,7 @@ and get_ovirt_osid = function
|
||||
| "win2k16" -> (* windows_2016x64 *) 29
|
||||
| "win2k19" -> (* windows_2019x64 *) 31
|
||||
| "win2k22" -> (* windows_2022 *) 37
|
||||
+ (*| "win2k25" -> (* windows_2025 *) not yet known - 2024/10 *)
|
||||
| _ ->
|
||||
warning (f_"unknown Windows 10 variant: %s (%s)")
|
||||
osinfo product;
|
||||
119
0001-v2v-v2v_unit_tests.ml-Remove-use-of-oUnit.patch
Normal file
119
0001-v2v-v2v_unit_tests.ml-Remove-use-of-oUnit.patch
Normal file
@ -0,0 +1,119 @@
|
||||
From 610a5d66eca090169cc91e76a16f5a045139e607 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Sat, 22 Mar 2025 13:11:58 +0000
|
||||
Subject: [PATCH] v2v/v2v_unit_tests.ml: Remove use of oUnit
|
||||
|
||||
---
|
||||
v2v/Makefile.am | 12 +++---------
|
||||
v2v/v2v_unit_tests.ml | 29 ++++++++++++-----------------
|
||||
2 files changed, 15 insertions(+), 26 deletions(-)
|
||||
|
||||
diff --git a/v2v/Makefile.am b/v2v/Makefile.am
|
||||
index 9747c3a2..2e0ecaaa 100644
|
||||
--- a/v2v/Makefile.am
|
||||
+++ b/v2v/Makefile.am
|
||||
@@ -125,12 +125,8 @@ virt_v2v_LINK = \
|
||||
|
||||
virttoolsdatadir = $(datadir)/virt-tools
|
||||
|
||||
-if HAVE_OCAML_PKG_OUNIT
|
||||
-TESTS = \
|
||||
- v2v_unit_tests
|
||||
-check_PROGRAMS = \
|
||||
- v2v_unit_tests
|
||||
-endif
|
||||
+TESTS = v2v_unit_tests
|
||||
+check_PROGRAMS = v2v_unit_tests
|
||||
|
||||
v2v_unit_tests_BOBJECTS = \
|
||||
../lib/create_ovf.cmo \
|
||||
@@ -146,10 +142,8 @@ v2v_unit_tests_CFLAGS = $(virt_v2v_CFLAGS)
|
||||
if !HAVE_OCAMLOPT
|
||||
# Can't call this v2v_unit_tests_OBJECTS because automake gets confused.
|
||||
v2v_unit_tests_THEOBJECTS = $(v2v_unit_tests_BOBJECTS)
|
||||
-v2v_unit_tests.cmo: OCAMLPACKAGES += -package ounit2
|
||||
else
|
||||
v2v_unit_tests_THEOBJECTS = $(v2v_unit_tests_XOBJECTS)
|
||||
-v2v_unit_tests.cmx: OCAMLPACKAGES += -package ounit2
|
||||
endif
|
||||
|
||||
v2v_unit_tests_DEPENDENCIES = \
|
||||
@@ -166,7 +160,7 @@ v2v_unit_tests_DEPENDENCIES = \
|
||||
v2v_unit_tests_LINK = \
|
||||
$(top_srcdir)/ocaml-link.sh -cclib '$(OCAMLCLIBS)' -- \
|
||||
$(OCAMLFIND) $(BEST) $(OCAMLFLAGS) \
|
||||
- $(OCAMLPACKAGES) -package ounit2 \
|
||||
+ $(OCAMLPACKAGES) \
|
||||
$(OCAMLLINKFLAGS) \
|
||||
$(v2v_unit_tests_THEOBJECTS) -o $@
|
||||
|
||||
diff --git a/v2v/v2v_unit_tests.ml b/v2v/v2v_unit_tests.ml
|
||||
index 89da6488..581b0e11 100644
|
||||
--- a/v2v/v2v_unit_tests.ml
|
||||
+++ b/v2v/v2v_unit_tests.ml
|
||||
@@ -20,14 +20,19 @@
|
||||
|
||||
open Printf
|
||||
|
||||
-open OUnit2
|
||||
-
|
||||
open Std_utils
|
||||
open Tools_utils
|
||||
|
||||
open Types
|
||||
open Utils
|
||||
|
||||
+let assert_equal ?(cmp = fun a b -> a = b) ~printer a b =
|
||||
+ if not (cmp a b) then
|
||||
+ failwithf "FAIL: %s <> %s" (printer a) (printer b)
|
||||
+
|
||||
+let assert_bool name b =
|
||||
+ if not b then failwithf "FAIL: %s" name
|
||||
+
|
||||
let inspect_defaults = {
|
||||
i_type = ""; i_distro = ""; i_osinfo = ""; i_arch = "";
|
||||
i_major_version = 0; i_minor_version = 0;
|
||||
@@ -40,7 +45,8 @@ let inspect_defaults = {
|
||||
i_drive_mappings = [];
|
||||
}
|
||||
|
||||
-let test_get_ostype ctx =
|
||||
+(* Test Create_ovf.get_ostype *)
|
||||
+let () =
|
||||
let printer = identity in
|
||||
assert_equal ~printer "RHEL6"
|
||||
(Create_ovf.get_ostype {
|
||||
@@ -112,14 +118,15 @@ let test_get_ostype ctx =
|
||||
i_product_variant = "Server";
|
||||
i_arch = "x86_64" })
|
||||
|
||||
-let test_qemu_img_supports ctx =
|
||||
+(* Test Utils.qemu_img_supports_offset_and_size *)
|
||||
+let () =
|
||||
(* No assertion here, we don't know if qemu-img supports the
|
||||
* feature, so just run the code and make sure it doesn't crash.
|
||||
*)
|
||||
ignore (Utils.qemu_img_supports_offset_and_size ())
|
||||
|
||||
(* Test the VMX file parser in the Parse_vmx module. *)
|
||||
-let test_vmx_parse_string ctx =
|
||||
+let () =
|
||||
let cmp = Parse_vmx.equal in
|
||||
let printer = Parse_vmx.to_string 0 in
|
||||
|
||||
@@ -259,15 +266,3 @@ foo.a.b = \"abc\"
|
||||
foo.a.c = \"abc\"
|
||||
" in
|
||||
assert_equal ~cmp ~printer t2 t1
|
||||
-
|
||||
-(* Suites declaration. *)
|
||||
-let suite =
|
||||
- "virt-v2v" >:::
|
||||
- [
|
||||
- "Create_ovf.get_ostype" >:: test_get_ostype;
|
||||
- "Utils.qemu_img_supports" >:: test_qemu_img_supports;
|
||||
- "Parse_vmx.parse_string" >::test_vmx_parse_string;
|
||||
- ]
|
||||
-
|
||||
-let () =
|
||||
- run_test_tt_main suite
|
||||
1415
0002-build-Remove-use-of-oUnit.patch
Normal file
1415
0002-build-Remove-use-of-oUnit.patch
Normal file
File diff suppressed because it is too large
Load Diff
77
0003-v2v-Use-nbdcopy-blkhash-in-verbose-mode.patch
Normal file
77
0003-v2v-Use-nbdcopy-blkhash-in-verbose-mode.patch
Normal file
@ -0,0 +1,77 @@
|
||||
From cffd129d8fd47554255d52ad611d58a30b6b9951 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Mon, 31 Mar 2025 11:06:09 +0100
|
||||
Subject: [PATCH] v2v: Use nbdcopy --blkhash in verbose mode
|
||||
|
||||
In verbose mode, and if nbdcopy supports it, add the nbdcopy --blkhash
|
||||
option. This will compute and print a hash of the disk as we are
|
||||
copying it (more precisely, a hash of the source disk after conversion
|
||||
changes have been made). This will allow users to detect any
|
||||
corruption during or after writing the output.
|
||||
|
||||
This feature requires nbdcopy >= 1.23.1
|
||||
|
||||
It adds some overhead to the copy, but (a) we're almost always copying
|
||||
over the network which is slow anyway and (b) this is only done in
|
||||
verbose mode where there's a lot of overhead from the output anyway.
|
||||
However keep an eye on this overhead.
|
||||
|
||||
Note what is printed is a blkhash, not a regular checksum. See:
|
||||
https://gitlab.com/nirs/blkhash/
|
||||
|
||||
Fixes: https://issues.redhat.com/browse/RHEL-85508
|
||||
Fixes: https://issues.redhat.com/browse/RHEL-85512
|
||||
Fixes: https://issues.redhat.com/browse/RHEL-85514
|
||||
---
|
||||
lib/utils.ml | 8 ++++++++
|
||||
lib/utils.mli | 3 +++
|
||||
v2v/v2v.ml | 3 +++
|
||||
3 files changed, 14 insertions(+)
|
||||
|
||||
diff --git a/lib/utils.ml b/lib/utils.ml
|
||||
index eab69d5a..9568a9d9 100644
|
||||
--- a/lib/utils.ml
|
||||
+++ b/lib/utils.ml
|
||||
@@ -180,6 +180,14 @@ let error_if_no_ssh_agent () =
|
||||
is not set). This is required by qemu to do passwordless \
|
||||
ssh access. See the virt-v2v(1) man page for more information.")
|
||||
|
||||
+let nbdcopy_supports_blkhash =
|
||||
+ let check =
|
||||
+ lazy (
|
||||
+ let cmd = sprintf "%s --help | grep -sq -- --blkhash" Config.nbdcopy in
|
||||
+ 0 = Sys.command cmd
|
||||
+ ) in
|
||||
+ fun () -> Lazy.force check
|
||||
+
|
||||
(* Create the directory containing inX and outX sockets. *)
|
||||
let create_v2v_directory () =
|
||||
let d = Mkdtemp.temp_dir "v2v." in
|
||||
diff --git a/lib/utils.mli b/lib/utils.mli
|
||||
index 9c394eca..a79628bd 100644
|
||||
--- a/lib/utils.mli
|
||||
+++ b/lib/utils.mli
|
||||
@@ -68,6 +68,9 @@ val chown_for_libvirt_rhbz_1045069 : string -> unit
|
||||
|
||||
val error_if_no_ssh_agent : unit -> unit
|
||||
|
||||
+val nbdcopy_supports_blkhash : unit -> bool
|
||||
+(** Return true if [nbdcopy] supports the [--blkhash] flag. *)
|
||||
+
|
||||
val create_v2v_directory : unit -> string
|
||||
(** Create the directory containing inX and outX sockets. *)
|
||||
|
||||
diff --git a/v2v/v2v.ml b/v2v/v2v.ml
|
||||
index c0ca26ec..1fcf8e61 100644
|
||||
--- a/v2v/v2v.ml
|
||||
+++ b/v2v/v2v.ml
|
||||
@@ -728,6 +728,9 @@ and nbdcopy ?request_size output_alloc input_uri output_uri =
|
||||
min 64 (target_buffer_size / request_size) in
|
||||
List.push_back cmd (sprintf "--requests=%d" requests);
|
||||
|
||||
+ if verbose () && nbdcopy_supports_blkhash () then
|
||||
+ List.push_back cmd "--blkhash";
|
||||
+
|
||||
List.push_back cmd "--flush";
|
||||
(*List.push_back cmd "--verbose";*)
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
From 8d792ee85d5fc188cba79faff477ef5f73d73022 Mon Sep 17 00:00:00 2001
|
||||
From 7236e9f76c1c0e41d1e95971adc638e39887dea8 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Sun, 28 Sep 2014 19:14:43 +0100
|
||||
Subject: [PATCH] RHEL: v2v: Select correct qemu binary for -o qemu mode
|
||||
@ -16,10 +16,10 @@ support cases.
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/output/output_qemu.ml b/output/output_qemu.ml
|
||||
index 26c1ba48..07dae8c2 100644
|
||||
index 2a21b5cf..39778724 100644
|
||||
--- a/output/output_qemu.ml
|
||||
+++ b/output/output_qemu.ml
|
||||
@@ -131,7 +131,7 @@ module QEMU = struct
|
||||
@@ -159,7 +159,7 @@ module QEMU = struct
|
||||
* module deals with shell and qemu comma quoting.
|
||||
*)
|
||||
let cmd = Qemuopts.create () in
|
||||
@ -1,4 +1,4 @@
|
||||
From f2dbe2f1c595c1201b0f404950b3c4c57f11c04b Mon Sep 17 00:00:00 2001
|
||||
From dabda2010e51d05ccab05d29e5977c58908b5440 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Tue, 30 Sep 2014 10:50:27 +0100
|
||||
Subject: [PATCH] RHEL: v2v: Disable the --qemu-boot / -oo qemu-boot option
|
||||
@ -17,7 +17,7 @@ qemu script.
|
||||
4 files changed, 5 insertions(+), 23 deletions(-)
|
||||
|
||||
diff --git a/docs/virt-v2v-output-local.pod b/docs/virt-v2v-output-local.pod
|
||||
index d2a1c270..0be37f5e 100644
|
||||
index 5a342434..bdf12c5d 100644
|
||||
--- a/docs/virt-v2v-output-local.pod
|
||||
+++ b/docs/virt-v2v-output-local.pod
|
||||
@@ -9,7 +9,7 @@ or libvirt
|
||||
@ -44,7 +44,7 @@ index d2a1c270..0be37f5e 100644
|
||||
=item B<-o null>
|
||||
|
||||
diff --git a/docs/virt-v2v.pod b/docs/virt-v2v.pod
|
||||
index 5345a6c9..a1e8fb30 100644
|
||||
index 084f29e7..97d9397f 100644
|
||||
--- a/docs/virt-v2v.pod
|
||||
+++ b/docs/virt-v2v.pod
|
||||
@@ -157,11 +157,6 @@ Since F<guest-domain.xml> contains the path(s) to the guest disk
|
||||
@ -81,7 +81,7 @@ index 5345a6c9..a1e8fb30 100644
|
||||
=item B<-oo verify-server-certificate>
|
||||
|
||||
=item B<-oo verify-server-certificate=>C<true|false>
|
||||
@@ -793,10 +780,6 @@ Print information about the source guest and stop. This option is
|
||||
@@ -806,10 +793,6 @@ Print information about the source guest and stop. This option is
|
||||
useful when you are setting up network and bridge maps.
|
||||
See L</Networks and bridges>.
|
||||
|
||||
@ -93,7 +93,7 @@ index 5345a6c9..a1e8fb30 100644
|
||||
|
||||
=item B<--quiet>
|
||||
diff --git a/output/output_qemu.ml b/output/output_qemu.ml
|
||||
index 07dae8c2..b6f24565 100644
|
||||
index 39778724..416000cd 100644
|
||||
--- a/output/output_qemu.ml
|
||||
+++ b/output/output_qemu.ml
|
||||
@@ -65,6 +65,9 @@ module QEMU = struct
|
||||
@ -107,11 +107,11 @@ index 07dae8c2..b6f24565 100644
|
||||
let output_storage =
|
||||
match options.output_storage with
|
||||
diff --git a/v2v/v2v.ml b/v2v/v2v.ml
|
||||
index 194e6233..6baa111f 100644
|
||||
index 1fcf8e61..77a37eca 100644
|
||||
--- a/v2v/v2v.ml
|
||||
+++ b/v2v/v2v.ml
|
||||
@@ -277,8 +277,6 @@ let rec main () =
|
||||
s_"Same as ‘-ip filename’";
|
||||
@@ -280,8 +280,6 @@ let rec main () =
|
||||
s_"Run up to N instances of nbdcopy in parallel";
|
||||
[ L"print-source" ], Getopt.Set print_source,
|
||||
s_"Print source and stop";
|
||||
- [ L"qemu-boot" ], Getopt.Unit (fun () -> set_output_option_compat "qemu-boot" ""),
|
||||
@ -1,4 +1,4 @@
|
||||
From c9da5056aa7b0d939724b325808a587f79fdb01e Mon Sep 17 00:00:00 2001
|
||||
From 6f02c25c8000ccfa7eb0daa6c886fa6b99c15eef Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Fri, 24 Apr 2015 09:45:41 -0400
|
||||
Subject: [PATCH] RHEL: Fix list of supported sound cards to match RHEL qemu
|
||||
@ -9,10 +9,10 @@ Subject: [PATCH] RHEL: Fix list of supported sound cards to match RHEL qemu
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/lib/utils.ml b/lib/utils.ml
|
||||
index bf010a0a..4c9b7415 100644
|
||||
index 9568a9d9..b30ac256 100644
|
||||
--- a/lib/utils.ml
|
||||
+++ b/lib/utils.ml
|
||||
@@ -60,13 +60,14 @@ let kvm_arch = function
|
||||
@@ -66,13 +66,14 @@ let kvm_arch = function
|
||||
(* Does qemu support the given sound card? *)
|
||||
let qemu_supports_sound_card = function
|
||||
| Types.AC97
|
||||
@ -27,5 +27,5 @@ index bf010a0a..4c9b7415 100644
|
||||
- -> true
|
||||
+ -> false
|
||||
|
||||
(* Find the UEFI firmware. *)
|
||||
let find_uefi_firmware guest_arch =
|
||||
let compare_app2_versions app1 app2 =
|
||||
let i = compare app1.Guestfs.app2_epoch app2.Guestfs.app2_epoch in
|
||||
@ -1,7 +1,7 @@
|
||||
From de77ecd123658dd28362da72783424f4a3ff5deb Mon Sep 17 00:00:00 2001
|
||||
From c30041193a17787a7904b3154213f145cc798a15 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Sun, 30 Aug 2015 03:21:57 -0400
|
||||
Subject: [PATCH] RHEL: Fixes for libguestfs-winsupport.
|
||||
Subject: [PATCH] RHEL: Fixes for libguestfs-winsupport
|
||||
|
||||
In tests we cannot use guestfish for arbitrary Windows edits.
|
||||
In virt-v2v helpers we must set the program name to virt-v2v.
|
||||
@ -9,16 +9,17 @@ In virt-v2v helpers we must set the program name to virt-v2v.
|
||||
For RHEL 9.3 and above, see this comment:
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=2187961#c1
|
||||
---
|
||||
convert/convert.ml | 1 +
|
||||
test-data/phony-guests/make-windows-img.sh | 1 +
|
||||
tests/test-v2v-block-driver.sh | 6 +++++-
|
||||
tests/test-v2v-in-place.sh | 8 +++++++-
|
||||
tests/test-v2v-virtio-win-iso.sh | 8 +++++++-
|
||||
tests/test-v2v-windows-conversion.sh | 8 +++++++-
|
||||
6 files changed, 28 insertions(+), 4 deletions(-)
|
||||
convert/convert.ml | 1 +
|
||||
test-data/phony-guests/make-windows-img.sh | 1 +
|
||||
tests/test-block-driver.sh | 6 +++++-
|
||||
tests/test-in-place.sh | 8 +++++++-
|
||||
tests/test-virtio-win-iso.sh | 8 +++++++-
|
||||
tests/test-windows-conversion.sh | 8 +++++++-
|
||||
tests/test-windows-phony.sh | 13 ++++++++++++-
|
||||
7 files changed, 40 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/convert/convert.ml b/convert/convert.ml
|
||||
index 64b36c97..604902d1 100644
|
||||
index 1deb1478..ed8ad537 100644
|
||||
--- a/convert/convert.ml
|
||||
+++ b/convert/convert.ml
|
||||
@@ -53,6 +53,7 @@ let rec convert dir options source =
|
||||
@ -30,21 +31,21 @@ index 64b36c97..604902d1 100644
|
||||
(* Setting the number of vCPUs allows parallel mkinitrd, but make
|
||||
* sure this is not too large because each vCPU consumes guest RAM.
|
||||
diff --git a/test-data/phony-guests/make-windows-img.sh b/test-data/phony-guests/make-windows-img.sh
|
||||
index 501c2a93..28b2744f 100755
|
||||
index b52d2522..8d036ee6 100755
|
||||
--- a/test-data/phony-guests/make-windows-img.sh
|
||||
+++ b/test-data/phony-guests/make-windows-img.sh
|
||||
@@ -37,6 +37,7 @@ fi
|
||||
@@ -49,6 +49,7 @@ fi
|
||||
|
||||
# Create a disk image.
|
||||
guestfish <<EOF
|
||||
+set-program virt-testing
|
||||
sparse windows.img-t 512M
|
||||
sparse $IMAGENAME-t 512M
|
||||
run
|
||||
|
||||
diff --git a/tests/test-v2v-block-driver.sh b/tests/test-v2v-block-driver.sh
|
||||
index db59a2cf..a0e56bed 100755
|
||||
--- a/tests/test-v2v-block-driver.sh
|
||||
+++ b/tests/test-v2v-block-driver.sh
|
||||
diff --git a/tests/test-block-driver.sh b/tests/test-block-driver.sh
|
||||
index 595e969c..0b8ac6ea 100755
|
||||
--- a/tests/test-block-driver.sh
|
||||
+++ b/tests/test-block-driver.sh
|
||||
@@ -100,7 +100,11 @@ check_driver_presence ()
|
||||
|
||||
local virtio_dir="/Windows/Drivers/VirtIO"
|
||||
@ -58,10 +59,10 @@ index db59a2cf..a0e56bed 100755
|
||||
is-dir $virtio_dir
|
||||
is-file $virtio_dir/$drv.cat
|
||||
is-file $virtio_dir/$drv.inf
|
||||
diff --git a/tests/test-v2v-in-place.sh b/tests/test-v2v-in-place.sh
|
||||
index 4373f140..2b31b0bb 100755
|
||||
--- a/tests/test-v2v-in-place.sh
|
||||
+++ b/tests/test-v2v-in-place.sh
|
||||
diff --git a/tests/test-in-place.sh b/tests/test-in-place.sh
|
||||
index e66d2647..38d05de5 100755
|
||||
--- a/tests/test-in-place.sh
|
||||
+++ b/tests/test-in-place.sh
|
||||
@@ -89,6 +89,12 @@ mktest ()
|
||||
:> "$script"
|
||||
:> "$expected"
|
||||
@ -84,10 +85,10 @@ index 4373f140..2b31b0bb 100755
|
||||
diff -u "$expected" "$response"
|
||||
|
||||
# Test the base image remained untouched
|
||||
diff --git a/tests/test-v2v-virtio-win-iso.sh b/tests/test-v2v-virtio-win-iso.sh
|
||||
index 68fb879b..2e133034 100755
|
||||
--- a/tests/test-v2v-virtio-win-iso.sh
|
||||
+++ b/tests/test-v2v-virtio-win-iso.sh
|
||||
diff --git a/tests/test-virtio-win-iso.sh b/tests/test-virtio-win-iso.sh
|
||||
index ccc42550..cd92db92 100755
|
||||
--- a/tests/test-virtio-win-iso.sh
|
||||
+++ b/tests/test-virtio-win-iso.sh
|
||||
@@ -82,6 +82,12 @@ mktest ()
|
||||
:> "$script"
|
||||
:> "$expected"
|
||||
@ -108,10 +109,10 @@ index 68fb879b..2e133034 100755
|
||||
-guestfish --ro -a "$d/windows-sda" -i < "$script" > "$response"
|
||||
+guestfish --ro -a "$d/windows-sda" < "$script" > "$response"
|
||||
diff -u "$expected" "$response"
|
||||
diff --git a/tests/test-v2v-windows-conversion.sh b/tests/test-v2v-windows-conversion.sh
|
||||
index a4cf191d..1ff41f6a 100755
|
||||
--- a/tests/test-v2v-windows-conversion.sh
|
||||
+++ b/tests/test-v2v-windows-conversion.sh
|
||||
diff --git a/tests/test-windows-conversion.sh b/tests/test-windows-conversion.sh
|
||||
index bfe04904..eeddcb86 100755
|
||||
--- a/tests/test-windows-conversion.sh
|
||||
+++ b/tests/test-windows-conversion.sh
|
||||
@@ -76,6 +76,12 @@ mktest ()
|
||||
:> "$script"
|
||||
:> "$expected"
|
||||
@ -125,12 +126,41 @@ index a4cf191d..1ff41f6a 100755
|
||||
firstboot_dir="/Program Files/Guestfs/Firstboot"
|
||||
mktest "is-dir \"$firstboot_dir\"" true
|
||||
mktest "is-file \"$firstboot_dir/firstboot.bat\"" true
|
||||
@@ -88,7 +94,7 @@ for drv in netkvm vioscsi viostor; do
|
||||
done
|
||||
done
|
||||
@@ -83,7 +89,7 @@ mktest "is-dir \"$firstboot_dir/scripts\"" true
|
||||
virtio_dir="/Windows/Drivers/VirtIO"
|
||||
mktest "ls \"$virtio_dir\"" "$(cat test-windows-conversion-ls.txt)"
|
||||
|
||||
-guestfish --ro -a "$d/windows-sda" -i < "$script" > "$response"
|
||||
+guestfish --ro -a "$d/windows-sda" < "$script" > "$response"
|
||||
diff -u "$expected" "$response"
|
||||
|
||||
# We also update the Registry several times, for firstboot, and (ONLY
|
||||
diff --git a/tests/test-windows-phony.sh b/tests/test-windows-phony.sh
|
||||
index 066ff0ff..3f761b68 100755
|
||||
--- a/tests/test-windows-phony.sh
|
||||
+++ b/tests/test-windows-phony.sh
|
||||
@@ -69,6 +69,17 @@ mktest ()
|
||||
:> "$script"
|
||||
:> "$expected"
|
||||
|
||||
+cat >> "$script" <<EOF
|
||||
+ set-program virt-testing
|
||||
+ run
|
||||
+ inspect-os
|
||||
+ mount /dev/sda2 /
|
||||
+EOF
|
||||
+
|
||||
+cat >> "$expected" <<EOF
|
||||
+/dev/sda2
|
||||
+EOF
|
||||
+
|
||||
firstboot_dir="/Program Files/Guestfs/Firstboot"
|
||||
mktest "is-dir \"$firstboot_dir\"" true
|
||||
mktest "is-file \"$firstboot_dir/firstboot.bat\"" true
|
||||
@@ -78,5 +89,5 @@ mktest "ls \"$virtio_dir\"" "$(cat test-phony-$guestname-ls.txt)"
|
||||
osinfo_name="${guestname%-32}"
|
||||
mktest "inspect-get-osinfo /dev/sda2" "$osinfo_name"
|
||||
|
||||
-guestfish --ro -a "$d/$guestname-sda" -i < "$script" > "$response"
|
||||
+guestfish --ro -a "$d/$guestname-sda" < "$script" > "$response"
|
||||
diff -u "$expected" "$response"
|
||||
@ -1,4 +1,4 @@
|
||||
From 1c85b582fc38f379b54efe344dc2323db95acc78 Mon Sep 17 00:00:00 2001
|
||||
From 1fdd651db409b8432a836f4097296d551d22ff07 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Thu, 2 Mar 2017 14:21:37 +0100
|
||||
Subject: [PATCH] RHEL: v2v: -i disk: force VNC as display (RHBZ#1372671)
|
||||
@ -9,12 +9,12 @@ The SDL output mode is not supported in RHEL's qemu-kvm.
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/input/input_disk.ml b/input/input_disk.ml
|
||||
index cf1f811b..27fc80de 100644
|
||||
index 61ac9a8b..a54f06f9 100644
|
||||
--- a/input/input_disk.ml
|
||||
+++ b/input/input_disk.ml
|
||||
@@ -77,7 +77,7 @@ module Disk = struct
|
||||
s_features = [ "acpi"; "apic"; "pae" ];
|
||||
@@ -78,7 +78,7 @@ module Disk = struct
|
||||
s_firmware = UnknownFirmware; (* causes virt-v2v to autodetect *)
|
||||
s_uefi_secureboot = false;
|
||||
s_display =
|
||||
- Some { s_display_type = Window; s_keymap = None; s_password = None;
|
||||
+ Some { s_display_type = VNC; s_keymap = None; s_password = None;
|
||||
@ -1,4 +1,4 @@
|
||||
From 6b7b2934d54d5273bb6c444ddabccef3a64c5eee Mon Sep 17 00:00:00 2001
|
||||
From aea6d02693e0f3afc36c5052d70e04ff58b95c32 Mon Sep 17 00:00:00 2001
|
||||
From: Pino Toscano <ptoscano@redhat.com>
|
||||
Date: Tue, 26 Mar 2019 09:42:25 +0100
|
||||
Subject: [PATCH] RHEL: point to KB for supported v2v hypervisors/guests
|
||||
@ -8,7 +8,7 @@ Subject: [PATCH] RHEL: point to KB for supported v2v hypervisors/guests
|
||||
1 file changed, 4 insertions(+), 92 deletions(-)
|
||||
|
||||
diff --git a/docs/virt-v2v-support.pod b/docs/virt-v2v-support.pod
|
||||
index e6415692..1ffc0f9d 100644
|
||||
index 60cd1b69..f563389e 100644
|
||||
--- a/docs/virt-v2v-support.pod
|
||||
+++ b/docs/virt-v2v-support.pod
|
||||
@@ -8,98 +8,10 @@ systems and guests in virt-v2v
|
||||
@ -1,4 +1,4 @@
|
||||
From 0b4fc69b54bf5a8fafc9bed62749ff2c91eeb21d Mon Sep 17 00:00:00 2001
|
||||
From 9657cdcf89cd7ae09fe1890908655fb9e08b64fa Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Mon, 8 Jul 2024 09:35:54 +0100
|
||||
Subject: [PATCH] RHEL: Remove input from Xen
|
||||
@ -11,19 +11,19 @@ Fixes: https://issues.redhat.com/browse/RHEL-37687
|
||||
---
|
||||
docs/Makefile.am | 14 ----
|
||||
docs/virt-v2v-input-xen.pod | 154 ------------------------------------
|
||||
docs/virt-v2v.pod | 52 ++----------
|
||||
docs/virt-v2v.pod | 50 ++----------
|
||||
input/Makefile.am | 4 +-
|
||||
input/input_xen_ssh.ml | 132 -------------------------------
|
||||
input/input_xen_ssh.mli | 21 -----
|
||||
inspector/inspector.ml | 4 -
|
||||
v2v/v2v.ml | 5 --
|
||||
8 files changed, 6 insertions(+), 380 deletions(-)
|
||||
8 files changed, 6 insertions(+), 378 deletions(-)
|
||||
delete mode 100644 docs/virt-v2v-input-xen.pod
|
||||
delete mode 100644 input/input_xen_ssh.ml
|
||||
delete mode 100644 input/input_xen_ssh.mli
|
||||
|
||||
diff --git a/docs/Makefile.am b/docs/Makefile.am
|
||||
index 0f6a3e21..7cb6e09a 100644
|
||||
index dc36487c..36a831bf 100644
|
||||
--- a/docs/Makefile.am
|
||||
+++ b/docs/Makefile.am
|
||||
@@ -23,7 +23,6 @@ EXTRA_DIST = \
|
||||
@ -70,7 +70,7 @@ index 0f6a3e21..7cb6e09a 100644
|
||||
stamp-virt-v2v-inspector.pod: virt-v2v-inspector.pod
|
||||
diff --git a/docs/virt-v2v-input-xen.pod b/docs/virt-v2v-input-xen.pod
|
||||
deleted file mode 100644
|
||||
index 4a0544f8..00000000
|
||||
index 0417e89f..00000000
|
||||
--- a/docs/virt-v2v-input-xen.pod
|
||||
+++ /dev/null
|
||||
@@ -1,154 +0,0 @@
|
||||
@ -227,9 +227,9 @@ index 4a0544f8..00000000
|
||||
-
|
||||
-=head1 COPYRIGHT
|
||||
-
|
||||
-Copyright (C) 2009-2020 Red Hat Inc.
|
||||
-Copyright (C) 2009-2025 Red Hat Inc.
|
||||
diff --git a/docs/virt-v2v.pod b/docs/virt-v2v.pod
|
||||
index a1e8fb30..ca75c255 100644
|
||||
index 97d9397f..036b72ab 100644
|
||||
--- a/docs/virt-v2v.pod
|
||||
+++ b/docs/virt-v2v.pod
|
||||
@@ -12,7 +12,7 @@ virt-v2v - Convert a guest to use KVM
|
||||
@ -277,7 +277,7 @@ index a1e8fb30..ca75c255 100644
|
||||
|
||||
=item B<-if> format
|
||||
|
||||
@@ -859,40 +851,6 @@ __CUSTOMIZE_OPTIONS__
|
||||
@@ -872,38 +864,6 @@ __CUSTOMIZE_OPTIONS__
|
||||
|
||||
=head1 NOTES
|
||||
|
||||
@ -292,8 +292,6 @@ index a1e8fb30..ca75c255 100644
|
||||
-installed. For some older Linux distributions, this means installing
|
||||
-a kernel from the table below:
|
||||
-
|
||||
- RHEL 3 (Does not apply, as there was no Xen PV kernel)
|
||||
-
|
||||
- RHEL 4 i686 with > 10GB of RAM: install 'kernel-hugemem'
|
||||
- i686 SMP: install 'kernel-smp'
|
||||
- other i686: install 'kernel'
|
||||
@ -318,7 +316,7 @@ index a1e8fb30..ca75c255 100644
|
||||
=head2 Enabling virtio
|
||||
|
||||
"Virtio" is the name for a set of drivers which make disk (block
|
||||
@@ -1184,7 +1142,7 @@ bandwidth. Virt-v2v should be able to copy guest data at gigabit
|
||||
@@ -1229,7 +1189,7 @@ bandwidth. Virt-v2v should be able to copy guest data at gigabit
|
||||
ethernet speeds or greater.
|
||||
|
||||
Ensure that the network connections between servers (conversion
|
||||
@ -328,7 +326,7 @@ index a1e8fb30..ca75c255 100644
|
||||
|
||||
=head3 Disk space
|
||||
diff --git a/input/Makefile.am b/input/Makefile.am
|
||||
index 4153f878..2f4ceb0c 100644
|
||||
index 19f30b47..a33b826a 100644
|
||||
--- a/input/Makefile.am
|
||||
+++ b/input/Makefile.am
|
||||
@@ -29,7 +29,6 @@ SOURCES_MLI = \
|
||||
@ -351,12 +349,12 @@ index 4153f878..2f4ceb0c 100644
|
||||
# compilation of the C sources for us. At the end we take the C
|
||||
diff --git a/input/input_xen_ssh.ml b/input/input_xen_ssh.ml
|
||||
deleted file mode 100644
|
||||
index c4235a4b..00000000
|
||||
index 77ee0ea1..00000000
|
||||
--- a/input/input_xen_ssh.ml
|
||||
+++ /dev/null
|
||||
@@ -1,132 +0,0 @@
|
||||
-(* helper-v2v-input
|
||||
- * Copyright (C) 2009-2021 Red Hat Inc.
|
||||
- * Copyright (C) 2009-2025 Red Hat Inc.
|
||||
- *
|
||||
- * This program is free software; you can redistribute it and/or modify
|
||||
- * it under the terms of the GNU General Public License as published by
|
||||
@ -489,12 +487,12 @@ index c4235a4b..00000000
|
||||
-end
|
||||
diff --git a/input/input_xen_ssh.mli b/input/input_xen_ssh.mli
|
||||
deleted file mode 100644
|
||||
index fa048231..00000000
|
||||
index 339309b8..00000000
|
||||
--- a/input/input_xen_ssh.mli
|
||||
+++ /dev/null
|
||||
@@ -1,21 +0,0 @@
|
||||
-(* virt-v2v
|
||||
- * Copyright (C) 2009-2021 Red Hat Inc.
|
||||
- * Copyright (C) 2009-2025 Red Hat Inc.
|
||||
- *
|
||||
- * This program is free software; you can redistribute it and/or modify
|
||||
- * it under the terms of the GNU General Public License as published by
|
||||
@ -515,7 +513,7 @@ index fa048231..00000000
|
||||
-
|
||||
-module XenSSH : Input.INPUT
|
||||
diff --git a/inspector/inspector.ml b/inspector/inspector.ml
|
||||
index 1ad67bbc..d7cbf449 100644
|
||||
index 0a04b312..47d50347 100644
|
||||
--- a/inspector/inspector.ml
|
||||
+++ b/inspector/inspector.ml
|
||||
@@ -296,10 +296,6 @@ read the man page virt-v2v-inspector(1).
|
||||
@ -530,10 +528,10 @@ index 1ad67bbc..d7cbf449 100644
|
||||
* deliberately not supporting this in new virt-v2v. Don't
|
||||
* use virt-v2v if a guest already runs on KVM.
|
||||
diff --git a/v2v/v2v.ml b/v2v/v2v.ml
|
||||
index 6baa111f..9a622da0 100644
|
||||
index 77a37eca..9999b639 100644
|
||||
--- a/v2v/v2v.ml
|
||||
+++ b/v2v/v2v.ml
|
||||
@@ -398,7 +398,6 @@ read the man page virt-v2v(1).
|
||||
@@ -404,7 +404,6 @@ read the man page virt-v2v(1).
|
||||
pr "virt-v2v-2.0\n";
|
||||
pr "libguestfs-rewrite\n";
|
||||
pr "vcenter-https\n";
|
||||
@ -541,7 +539,7 @@ index 6baa111f..9a622da0 100644
|
||||
pr "vddk\n";
|
||||
pr "colours-option\n";
|
||||
pr "vdsm-compat-option\n";
|
||||
@@ -463,10 +462,6 @@ read the man page virt-v2v(1).
|
||||
@@ -470,10 +469,6 @@ read the man page virt-v2v(1).
|
||||
| Some server, Some ("esx"|"gsx"|"vpx"), Some `VDDK ->
|
||||
(module Input_vddk.VDDK)
|
||||
|
||||
@ -1,84 +0,0 @@
|
||||
From af62ac81540fc6baf10c572ae5440dd4b678b073 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Thu, 2 Dec 2021 11:56:05 +0000
|
||||
Subject: [PATCH] RHEL: Remove the --in-place option
|
||||
|
||||
This disables the virt-v2v --in-place option which we do not
|
||||
wish to support in RHEL.
|
||||
---
|
||||
docs/virt-v2v.pod | 8 --------
|
||||
tests/Makefile.am | 1 -
|
||||
v2v/v2v.ml | 8 --------
|
||||
3 files changed, 17 deletions(-)
|
||||
|
||||
diff --git a/docs/virt-v2v.pod b/docs/virt-v2v.pod
|
||||
index 6e26e62c..2230a556 100644
|
||||
--- a/docs/virt-v2v.pod
|
||||
+++ b/docs/virt-v2v.pod
|
||||
@@ -25,9 +25,6 @@ virtualize those machines (physical to virtual, or p2v).
|
||||
To estimate the disk space needed before conversion, see
|
||||
L<virt-v2v-inspector(1)>.
|
||||
|
||||
-For in-place conversion, there is a separate tool called
|
||||
-L<virt-v2v-in-place(1)>.
|
||||
-
|
||||
=head2 Input and Output
|
||||
|
||||
You normally run virt-v2v with several I<-i*> options controlling the
|
||||
@@ -40,10 +37,6 @@ The input and output sides of virt-v2v are separate and unrelated.
|
||||
Virt-v2v can read from any input and write to any output. Therefore
|
||||
these sides of virt-v2v are documented separately in this manual.
|
||||
|
||||
-Virt-v2v normally copies from the input to the output, called "copying
|
||||
-mode". In this case the source guest is always left unchanged.
|
||||
-In-place conversions may be done using L<virt-v2v-in-place(1)>.
|
||||
-
|
||||
=head2 Customization
|
||||
|
||||
Virt-v2v can also customize the guest during conversion, using the
|
||||
@@ -1639,7 +1632,6 @@ L<https://rwmj.wordpress.com/2015/09/18/importing-kvm-guests-to-ovirt-or-rhev/#c
|
||||
|
||||
L<virt-p2v(1)>,
|
||||
L<virt-v2v-inspector(1)>,
|
||||
-L<virt-v2v-in-place(1)>,
|
||||
L<virt-customize(1)>,
|
||||
L<virt-df(1)>,
|
||||
L<virt-filesystems(1)>,
|
||||
diff --git a/tests/Makefile.am b/tests/Makefile.am
|
||||
index 1c3d6064..cee516c4 100644
|
||||
--- a/tests/Makefile.am
|
||||
+++ b/tests/Makefile.am
|
||||
@@ -77,7 +77,6 @@ TESTS = \
|
||||
test-v2v-floppy.sh \
|
||||
test-v2v-i-disk.sh \
|
||||
test-v2v-i-ova.sh \
|
||||
- test-v2v-in-place.sh \
|
||||
test-v2v-block-driver.sh \
|
||||
test-v2v-inspector.sh \
|
||||
test-v2v-mac.sh \
|
||||
diff --git a/v2v/v2v.ml b/v2v/v2v.ml
|
||||
index 801aaf7d..c18aeaa1 100644
|
||||
--- a/v2v/v2v.ml
|
||||
+++ b/v2v/v2v.ml
|
||||
@@ -219,12 +219,6 @@ let rec main () =
|
||||
warning (f_"the --vmtype option has been removed and now does nothing")
|
||||
in
|
||||
|
||||
- (* Options that are errors. *)
|
||||
- let in_place_error _ =
|
||||
- error (f_"The --in-place option has been replaced by the \
|
||||
- ‘virt-v2v-in-place’ program")
|
||||
- in
|
||||
-
|
||||
let argspec = [
|
||||
[ L"bandwidth" ], Getopt.String ("bps", set_string_option_once "--bandwidth" bandwidth),
|
||||
s_"Set bandwidth to bits per sec";
|
||||
@@ -248,8 +242,6 @@ let rec main () =
|
||||
s_"Use password from file to connect to input hypervisor";
|
||||
[ M"it" ], Getopt.String ("transport", set_string_option_once "-it" input_transport),
|
||||
s_"Input transport";
|
||||
- [ L"in-place" ], Getopt.Unit in_place_error,
|
||||
- s_"Use virt-v2v-in-place instead";
|
||||
[ L"mac" ], Getopt.String ("mac:network|bridge|ip:out", add_mac),
|
||||
s_"Map NIC to network or bridge or assign static IP";
|
||||
[ S 'n'; L"network" ], Getopt.String ("in:out", add_network),
|
||||
@ -1,4 +1,4 @@
|
||||
From dce2fe3c583cb6a8259667337df31c6c361fa670 Mon Sep 17 00:00:00 2001
|
||||
From 96eafd9ddef8733602d1c517e0cabe29afb5e414 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Wed, 30 Jun 2021 11:15:52 +0100
|
||||
Subject: [PATCH] RHEL: Remove -o glance
|
||||
@ -8,12 +8,12 @@ Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1977539
|
||||
docs/virt-v2v-output-openstack.pod | 54 ++----------------------------
|
||||
docs/virt-v2v.pod | 20 -----------
|
||||
output/output_glance.mli | 2 +-
|
||||
tests/test-v2v-o-glance.sh | 3 ++
|
||||
tests/test-o-glance.sh | 3 ++
|
||||
v2v/v2v.ml | 7 +---
|
||||
5 files changed, 7 insertions(+), 79 deletions(-)
|
||||
|
||||
diff --git a/docs/virt-v2v-output-openstack.pod b/docs/virt-v2v-output-openstack.pod
|
||||
index cd4862b1..54cd276e 100644
|
||||
index 9bef76ea..04595816 100644
|
||||
--- a/docs/virt-v2v-output-openstack.pod
|
||||
+++ b/docs/virt-v2v-output-openstack.pod
|
||||
@@ -10,13 +10,10 @@ virt-v2v-output-openstack - Using virt-v2v to convert guests to OpenStack
|
||||
@ -98,7 +98,7 @@ index cd4862b1..54cd276e 100644
|
||||
=head1 AUTHOR
|
||||
|
||||
diff --git a/docs/virt-v2v.pod b/docs/virt-v2v.pod
|
||||
index ca75c255..6e26e62c 100644
|
||||
index 036b72ab..45ccd4d7 100644
|
||||
--- a/docs/virt-v2v.pod
|
||||
+++ b/docs/virt-v2v.pod
|
||||
@@ -438,14 +438,6 @@ See L</Networks and bridges> below.
|
||||
@ -116,7 +116,7 @@ index ca75c255..6e26e62c 100644
|
||||
=item B<-o> B<kubevirt>
|
||||
|
||||
Set the output method to I<kubevirt>. B<Note the way this mode works
|
||||
@@ -1164,11 +1156,6 @@ and output methods may use disk space, as outlined in the table below.
|
||||
@@ -1211,11 +1203,6 @@ and output methods may use disk space, as outlined in the table below.
|
||||
This temporarily places a full copy of the uncompressed source disks
|
||||
in C<$VIRT_V2V_TMPDIR> (or F</var/tmp>).
|
||||
|
||||
@ -128,7 +128,7 @@ index ca75c255..6e26e62c 100644
|
||||
=item I<-o local>
|
||||
|
||||
=item I<-o qemu>
|
||||
@@ -1371,13 +1358,6 @@ See also L</Starting the libvirt system instance>.
|
||||
@@ -1418,13 +1405,6 @@ See also L</Starting the libvirt system instance>.
|
||||
Because of how Cinder volumes are presented as F</dev> block devices,
|
||||
using I<-o openstack> normally requires that virt-v2v is run as root.
|
||||
|
||||
@ -143,7 +143,7 @@ index ca75c255..6e26e62c 100644
|
||||
|
||||
This normally requires root. See the next section.
|
||||
diff --git a/output/output_glance.mli b/output/output_glance.mli
|
||||
index 972320a2..9befc461 100644
|
||||
index 83d67576..7ab1503c 100644
|
||||
--- a/output/output_glance.mli
|
||||
+++ b/output/output_glance.mli
|
||||
@@ -18,4 +18,4 @@
|
||||
@ -152,10 +152,10 @@ index 972320a2..9befc461 100644
|
||||
|
||||
-module Glance : Output.OUTPUT
|
||||
+(*module Glance : Output.OUTPUT*)
|
||||
diff --git a/tests/test-v2v-o-glance.sh b/tests/test-v2v-o-glance.sh
|
||||
index c0db9115..074b5e16 100755
|
||||
--- a/tests/test-v2v-o-glance.sh
|
||||
+++ b/tests/test-v2v-o-glance.sh
|
||||
diff --git a/tests/test-o-glance.sh b/tests/test-o-glance.sh
|
||||
index 9e32d2bf..632579ee 100755
|
||||
--- a/tests/test-o-glance.sh
|
||||
+++ b/tests/test-o-glance.sh
|
||||
@@ -20,6 +20,9 @@
|
||||
|
||||
set -e
|
||||
@ -167,10 +167,10 @@ index c0db9115..074b5e16 100755
|
||||
set -e
|
||||
set -x
|
||||
diff --git a/v2v/v2v.ml b/v2v/v2v.ml
|
||||
index 9a622da0..801aaf7d 100644
|
||||
index 9999b639..c1eb12ab 100644
|
||||
--- a/v2v/v2v.ml
|
||||
+++ b/v2v/v2v.ml
|
||||
@@ -197,7 +197,6 @@ let rec main () =
|
||||
@@ -198,7 +198,6 @@ let rec main () =
|
||||
if !output_mode <> `Not_set then
|
||||
error (f_"%s option used more than once on the command line") "-o";
|
||||
match mode with
|
||||
@ -178,7 +178,7 @@ index 9a622da0..801aaf7d 100644
|
||||
| "kubevirt" -> output_mode := `Kubevirt
|
||||
| "libvirt" -> output_mode := `Libvirt
|
||||
| "disk" | "local" -> output_mode := `Disk
|
||||
@@ -257,7 +256,7 @@ let rec main () =
|
||||
@@ -258,7 +257,7 @@ let rec main () =
|
||||
s_"Map network ‘in’ to ‘out’";
|
||||
[ L"no-trim" ], Getopt.String ("-", no_trim_warning),
|
||||
s_"Ignored for backwards compatibility";
|
||||
@ -187,7 +187,7 @@ index 9a622da0..801aaf7d 100644
|
||||
s_"Set output mode (default: libvirt)";
|
||||
[ M"oa" ], Getopt.String ("sparse|preallocated", set_output_alloc),
|
||||
s_"Set output allocation mode";
|
||||
@@ -333,8 +332,6 @@ virt-v2v -i libvirtxml guest-domain.xml -o local -os /var/tmp
|
||||
@@ -336,8 +335,6 @@ virt-v2v -i libvirtxml guest-domain.xml -o local -os /var/tmp
|
||||
|
||||
virt-v2v -i disk disk.img -o local -os /var/tmp
|
||||
|
||||
@ -196,7 +196,7 @@ index 9a622da0..801aaf7d 100644
|
||||
There is a companion front-end called \"virt-p2v\" which comes as an
|
||||
ISO or CD image that can be booted on physical machines.
|
||||
|
||||
@@ -411,7 +408,6 @@ read the man page virt-v2v(1).
|
||||
@@ -418,7 +415,6 @@ read the man page virt-v2v(1).
|
||||
pr "input:libvirtxml\n";
|
||||
pr "input:ova\n";
|
||||
pr "input:vmx\n";
|
||||
@ -204,7 +204,7 @@ index 9a622da0..801aaf7d 100644
|
||||
pr "output:kubevirt\n";
|
||||
pr "output:libvirt\n";
|
||||
pr "output:local\n";
|
||||
@@ -504,7 +500,6 @@ read the man page virt-v2v(1).
|
||||
@@ -511,7 +507,6 @@ read the man page virt-v2v(1).
|
||||
| `Disk -> (module Output_disk.Disk)
|
||||
| `Null -> (module Output_null.Null)
|
||||
| `QEmu -> (module Output_qemu.QEMU)
|
||||
@ -1,22 +0,0 @@
|
||||
From b7614e03e7e6584296fb4b74d951997bfd24b848 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Tue, 5 Jul 2022 11:58:09 +0100
|
||||
Subject: [PATCH] RHEL: tests: Remove btrfs test
|
||||
|
||||
RHEL does not have btrfs so this test always fails.
|
||||
---
|
||||
tests/Makefile.am | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/tests/Makefile.am b/tests/Makefile.am
|
||||
index cee516c4..ddecdfbf 100644
|
||||
--- a/tests/Makefile.am
|
||||
+++ b/tests/Makefile.am
|
||||
@@ -101,7 +101,6 @@ TESTS = \
|
||||
test-v2v-sound.sh \
|
||||
test-v2v-virtio-win-iso.sh \
|
||||
test-v2v-fedora-conversion.sh \
|
||||
- test-v2v-fedora-btrfs-conversion.sh \
|
||||
test-v2v-fedora-luks-on-lvm-conversion.sh \
|
||||
test-v2v-fedora-lvm-on-luks-conversion.sh \
|
||||
test-v2v-fedora-md-conversion.sh \
|
||||
22
0012-RHEL-tests-Remove-btrfs-test.patch
Normal file
22
0012-RHEL-tests-Remove-btrfs-test.patch
Normal file
@ -0,0 +1,22 @@
|
||||
From 0e086ed0e10eee2e51cd7cbb767c9943308c8f27 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Tue, 5 Jul 2022 11:58:09 +0100
|
||||
Subject: [PATCH] RHEL: tests: Remove btrfs test
|
||||
|
||||
RHEL does not have btrfs so this test always fails.
|
||||
---
|
||||
tests/Makefile.am | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/tests/Makefile.am b/tests/Makefile.am
|
||||
index 51faa63d..d5ce6bd3 100644
|
||||
--- a/tests/Makefile.am
|
||||
+++ b/tests/Makefile.am
|
||||
@@ -64,7 +64,6 @@ TESTS = \
|
||||
test-checksum-good.sh \
|
||||
test-checksum-print.sh \
|
||||
test-customize.sh \
|
||||
- test-fedora-btrfs-conversion.sh \
|
||||
test-fedora-conversion.sh \
|
||||
test-fedora-luks-on-lvm-conversion.sh \
|
||||
test-fedora-lvm-on-luks-conversion.sh \
|
||||
@ -1,4 +1,4 @@
|
||||
From e0af932e291fdb9f87b071a873152f757f8ad71c Mon Sep 17 00:00:00 2001
|
||||
From 9b6362a804d2e1350b365308edcffbc5def1353d Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Fri, 28 Apr 2023 12:28:19 +0100
|
||||
Subject: [PATCH] RHEL: Remove --block-driver option
|
||||
@ -16,10 +16,10 @@ Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2190387
|
||||
5 files changed, 2 insertions(+), 41 deletions(-)
|
||||
|
||||
diff --git a/docs/virt-v2v-in-place.pod b/docs/virt-v2v-in-place.pod
|
||||
index 4304c0d6..b7384210 100644
|
||||
index fb3bc9a4..3e73bfc1 100644
|
||||
--- a/docs/virt-v2v-in-place.pod
|
||||
+++ b/docs/virt-v2v-in-place.pod
|
||||
@@ -51,16 +51,6 @@ Display help.
|
||||
@@ -72,16 +72,6 @@ Display help.
|
||||
|
||||
See I<--network> below.
|
||||
|
||||
@ -37,10 +37,10 @@ index 4304c0d6..b7384210 100644
|
||||
|
||||
=item B<--colours>
|
||||
diff --git a/docs/virt-v2v.pod b/docs/virt-v2v.pod
|
||||
index 2230a556..eb7da9ca 100644
|
||||
index 45ccd4d7..661c18e9 100644
|
||||
--- a/docs/virt-v2v.pod
|
||||
+++ b/docs/virt-v2v.pod
|
||||
@@ -202,16 +202,6 @@ The options are silently ignored for other input methods.
|
||||
@@ -209,16 +209,6 @@ The options are silently ignored for other input methods.
|
||||
|
||||
See I<--network> below.
|
||||
|
||||
@ -58,10 +58,10 @@ index 2230a556..eb7da9ca 100644
|
||||
|
||||
=item B<--colours>
|
||||
diff --git a/in-place/in_place.ml b/in-place/in_place.ml
|
||||
index 8286dbc5..2dc406e2 100644
|
||||
index 70af0dfb..caf34a0b 100644
|
||||
--- a/in-place/in_place.ml
|
||||
+++ b/in-place/in_place.ml
|
||||
@@ -43,7 +43,6 @@ let rec main () =
|
||||
@@ -49,7 +49,6 @@ let rec main () =
|
||||
|
||||
let bandwidth = ref None in
|
||||
let bandwidth_file = ref None in
|
||||
@ -69,7 +69,7 @@ index 8286dbc5..2dc406e2 100644
|
||||
let input_conn = ref None in
|
||||
let input_format = ref None in
|
||||
let input_password = ref None in
|
||||
@@ -159,8 +158,6 @@ let rec main () =
|
||||
@@ -172,8 +171,6 @@ let rec main () =
|
||||
let argspec = [
|
||||
[ S 'b'; L"bridge" ], Getopt.String ("in:out", add_bridge),
|
||||
s_"Map bridge ‘in’ to ‘out’";
|
||||
@ -78,7 +78,7 @@ index 8286dbc5..2dc406e2 100644
|
||||
[ S 'i' ], Getopt.String ("disk|libvirt|libvirtxml|ova|vmx", set_input_mode),
|
||||
s_"Set input mode (default: libvirt)";
|
||||
[ M"ic" ], Getopt.String ("uri", set_string_option_once "-ic" input_conn),
|
||||
@@ -225,12 +222,6 @@ read the man page virt-v2v-in-place(1).
|
||||
@@ -240,12 +237,6 @@ read the man page virt-v2v-in-place(1).
|
||||
|
||||
(* Dereference the arguments. *)
|
||||
let args = List.rev !args in
|
||||
@ -91,7 +91,7 @@ index 8286dbc5..2dc406e2 100644
|
||||
let customize_ops = get_customize_ops () in
|
||||
let input_conn = !input_conn in
|
||||
let input_mode = !input_mode in
|
||||
@@ -316,7 +307,7 @@ read the man page virt-v2v-in-place(1).
|
||||
@@ -333,7 +324,7 @@ read the man page virt-v2v-in-place(1).
|
||||
|
||||
(* Get the conversion options. *)
|
||||
let conv_options = {
|
||||
@ -101,19 +101,19 @@ index 8286dbc5..2dc406e2 100644
|
||||
ks = opthandle.ks;
|
||||
network_map;
|
||||
diff --git a/tests/Makefile.am b/tests/Makefile.am
|
||||
index ddecdfbf..b41fed7f 100644
|
||||
index d5ce6bd3..ffcbf722 100644
|
||||
--- a/tests/Makefile.am
|
||||
+++ b/tests/Makefile.am
|
||||
@@ -77,7 +77,6 @@ TESTS = \
|
||||
test-v2v-floppy.sh \
|
||||
test-v2v-i-disk.sh \
|
||||
test-v2v-i-ova.sh \
|
||||
- test-v2v-block-driver.sh \
|
||||
test-v2v-inspector.sh \
|
||||
test-v2v-mac.sh \
|
||||
test-v2v-machine-readable.sh \
|
||||
@@ -57,7 +57,6 @@ TESTS_ENVIRONMENT = $(top_builddir)/run --test
|
||||
|
||||
TESTS = \
|
||||
test-bad-networks-and-bridges.sh \
|
||||
- test-block-driver.sh \
|
||||
test-cdrom.sh \
|
||||
test-checksum-bad.sh \
|
||||
test-checksum-good-qcow2.sh \
|
||||
diff --git a/v2v/v2v.ml b/v2v/v2v.ml
|
||||
index c18aeaa1..d09c200c 100644
|
||||
index c1eb12ab..40782651 100644
|
||||
--- a/v2v/v2v.ml
|
||||
+++ b/v2v/v2v.ml
|
||||
@@ -48,7 +48,6 @@ let rec main () =
|
||||
@ -124,7 +124,7 @@ index c18aeaa1..d09c200c 100644
|
||||
let input_conn = ref None in
|
||||
let input_format = ref None in
|
||||
let input_password = ref None in
|
||||
@@ -226,8 +225,6 @@ let rec main () =
|
||||
@@ -233,8 +232,6 @@ let rec main () =
|
||||
s_"Set bandwidth dynamically from file";
|
||||
[ S 'b'; L"bridge" ], Getopt.String ("in:out", add_bridge),
|
||||
s_"Map bridge ‘in’ to ‘out’";
|
||||
@ -133,7 +133,7 @@ index c18aeaa1..d09c200c 100644
|
||||
[ L"compressed" ], Getopt.Unit (fun () -> set_output_option_compat "compressed" ""),
|
||||
s_"Compress output file (-of qcow2 only)";
|
||||
[ S 'i' ], Getopt.String ("disk|libvirt|libvirtxml|ova|vmx", set_input_mode),
|
||||
@@ -352,12 +349,6 @@ read the man page virt-v2v(1).
|
||||
@@ -363,12 +360,6 @@ read the man page virt-v2v(1).
|
||||
|
||||
(* Dereference the arguments. *)
|
||||
let args = List.rev !args in
|
||||
@ -146,7 +146,7 @@ index c18aeaa1..d09c200c 100644
|
||||
let customize_ops = get_customize_ops () in
|
||||
let input_conn = !input_conn in
|
||||
let input_mode = !input_mode in
|
||||
@@ -526,7 +517,7 @@ read the man page virt-v2v(1).
|
||||
@@ -541,7 +532,7 @@ read the man page virt-v2v(1).
|
||||
|
||||
(* Get the conversion options. *)
|
||||
let conv_options = {
|
||||
@ -1,24 +0,0 @@
|
||||
From fe167d94ed81b41b025f55cbd6ca97ce404986ce Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Tue, 9 Jul 2024 11:30:09 +0100
|
||||
Subject: [PATCH] RHEL: Add warning about virt-v2v-in-place not being supported
|
||||
|
||||
Fixes: https://issues.redhat.com/browse/RHEL-40903
|
||||
---
|
||||
in-place/in_place.ml | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/in-place/in_place.ml b/in-place/in_place.ml
|
||||
index 2dc406e2..9d24de78 100644
|
||||
--- a/in-place/in_place.ml
|
||||
+++ b/in-place/in_place.ml
|
||||
@@ -206,6 +206,9 @@ read the man page virt-v2v-in-place(1).
|
||||
let opthandle = create_standard_options argspec ~anon_fun ~key_opts:true ~machine_readable:true usage_msg in
|
||||
Getopt.parse opthandle.getopt;
|
||||
|
||||
+ warning "virt-v2v-in-place is NOT SUPPORTED for command line use. \
|
||||
+ It is almost always better to use virt-v2v instead of this tool.";
|
||||
+
|
||||
(* Print the version, easier than asking users to tell us. *)
|
||||
debug "info: %s: %s %s (%s)"
|
||||
prog Config.package_name Config.package_version_full
|
||||
@ -1,4 +1,4 @@
|
||||
From 4a460f0ae97f59d9bff9ff568d45588fe4241b7e Mon Sep 17 00:00:00 2001
|
||||
From 5c9deb0c0f4dc4c7ed23c094b908f203ff017913 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Mon, 8 Jul 2024 09:56:54 +0100
|
||||
Subject: [PATCH] RHEL: Remove -o rhv, -o rhv-upload and -o vdsm modes
|
||||
@ -30,16 +30,16 @@ Fixes: https://issues.redhat.com/browse/RHEL-36712
|
||||
output/rhv-upload-transfer.py | 298 ----------
|
||||
output/rhv-upload-vmcheck.py | 72 ---
|
||||
tests/Makefile.am | 15 -
|
||||
tests/test-v2v-o-rhv-upload-module/imageio.py | 71 ---
|
||||
tests/test-o-rhv-upload-module/imageio.py | 71 ---
|
||||
.../ovirtsdk4/__init__.py | 150 -----
|
||||
.../ovirtsdk4/types.py | 184 ------
|
||||
tests/test-v2v-o-rhv-upload-oo-query.sh | 41 --
|
||||
tests/test-v2v-o-rhv-upload.sh | 74 ---
|
||||
tests/test-v2v-o-rhv.ovf.expected | 113 ----
|
||||
tests/test-v2v-o-rhv.sh | 87 ---
|
||||
tests/test-v2v-o-vdsm-oo-query.sh | 41 --
|
||||
tests/test-v2v-o-vdsm-options.ovf.expected | 113 ----
|
||||
tests/test-v2v-o-vdsm-options.sh | 96 ----
|
||||
tests/test-o-rhv-upload-oo-query.sh | 41 --
|
||||
tests/test-o-rhv-upload.sh | 74 ---
|
||||
tests/test-o-rhv.ovf.expected | 113 ----
|
||||
tests/test-o-rhv.sh | 87 ---
|
||||
tests/test-o-vdsm-oo-query.sh | 41 --
|
||||
tests/test-o-vdsm-options.ovf.expected | 113 ----
|
||||
tests/test-o-vdsm-options.sh | 96 ----
|
||||
v2v/v2v.ml | 31 +-
|
||||
36 files changed, 5 insertions(+), 4226 deletions(-)
|
||||
delete mode 100644 docs/virt-v2v-output-rhv.pod
|
||||
@ -63,19 +63,19 @@ Fixes: https://issues.redhat.com/browse/RHEL-36712
|
||||
delete mode 100644 output/rhv-upload-precheck.py
|
||||
delete mode 100644 output/rhv-upload-transfer.py
|
||||
delete mode 100644 output/rhv-upload-vmcheck.py
|
||||
delete mode 100755 tests/test-v2v-o-rhv-upload-module/imageio.py
|
||||
delete mode 100644 tests/test-v2v-o-rhv-upload-module/ovirtsdk4/__init__.py
|
||||
delete mode 100644 tests/test-v2v-o-rhv-upload-module/ovirtsdk4/types.py
|
||||
delete mode 100755 tests/test-v2v-o-rhv-upload-oo-query.sh
|
||||
delete mode 100755 tests/test-v2v-o-rhv-upload.sh
|
||||
delete mode 100644 tests/test-v2v-o-rhv.ovf.expected
|
||||
delete mode 100755 tests/test-v2v-o-rhv.sh
|
||||
delete mode 100755 tests/test-v2v-o-vdsm-oo-query.sh
|
||||
delete mode 100644 tests/test-v2v-o-vdsm-options.ovf.expected
|
||||
delete mode 100755 tests/test-v2v-o-vdsm-options.sh
|
||||
delete mode 100755 tests/test-o-rhv-upload-module/imageio.py
|
||||
delete mode 100644 tests/test-o-rhv-upload-module/ovirtsdk4/__init__.py
|
||||
delete mode 100644 tests/test-o-rhv-upload-module/ovirtsdk4/types.py
|
||||
delete mode 100755 tests/test-o-rhv-upload-oo-query.sh
|
||||
delete mode 100755 tests/test-o-rhv-upload.sh
|
||||
delete mode 100644 tests/test-o-rhv.ovf.expected
|
||||
delete mode 100755 tests/test-o-rhv.sh
|
||||
delete mode 100755 tests/test-o-vdsm-oo-query.sh
|
||||
delete mode 100644 tests/test-o-vdsm-options.ovf.expected
|
||||
delete mode 100755 tests/test-o-vdsm-options.sh
|
||||
|
||||
diff --git a/docs/Makefile.am b/docs/Makefile.am
|
||||
index 7cb6e09a..4c341f8b 100644
|
||||
index 36a831bf..d7c2cb85 100644
|
||||
--- a/docs/Makefile.am
|
||||
+++ b/docs/Makefile.am
|
||||
@@ -26,7 +26,6 @@ EXTRA_DIST = \
|
||||
@ -122,7 +122,7 @@ index 7cb6e09a..4c341f8b 100644
|
||||
stamp-virt-v2v-release-notes-1.42.pod: virt-v2v-release-notes-1.42.pod
|
||||
diff --git a/docs/virt-v2v-output-rhv.pod b/docs/virt-v2v-output-rhv.pod
|
||||
deleted file mode 100644
|
||||
index 2ce697f4..00000000
|
||||
index e12702fa..00000000
|
||||
--- a/docs/virt-v2v-output-rhv.pod
|
||||
+++ /dev/null
|
||||
@@ -1,232 +0,0 @@
|
||||
@ -357,9 +357,9 @@ index 2ce697f4..00000000
|
||||
-
|
||||
-=head1 COPYRIGHT
|
||||
-
|
||||
-Copyright (C) 2009-2020 Red Hat Inc.
|
||||
-Copyright (C) 2009-2025 Red Hat Inc.
|
||||
diff --git a/docs/virt-v2v.pod b/docs/virt-v2v.pod
|
||||
index eb7da9ca..de92db84 100644
|
||||
index 661c18e9..b5476745 100644
|
||||
--- a/docs/virt-v2v.pod
|
||||
+++ b/docs/virt-v2v.pod
|
||||
@@ -14,7 +14,7 @@ virt-v2v - Convert a guest to use KVM
|
||||
@ -371,7 +371,7 @@ index eb7da9ca..de92db84 100644
|
||||
other targets. It can modify the guest to make it bootable on KVM and
|
||||
install virtio drivers so it will run quickly.
|
||||
|
||||
@@ -54,8 +54,6 @@ L<virt-v2v-input-vmware(1)> — Input from VMware.
|
||||
@@ -61,8 +61,6 @@ L<virt-v2v-input-vmware(1)> — Input from VMware.
|
||||
|
||||
L<virt-v2v-output-local(1)> — Output to local files or local libvirt.
|
||||
|
||||
@ -380,7 +380,7 @@ index eb7da9ca..de92db84 100644
|
||||
L<virt-v2v-output-openstack(1)> — Output to OpenStack.
|
||||
|
||||
L<virt-v2v-release-notes-1.42(1)> — Release notes for 1.42 release.
|
||||
@@ -85,21 +83,6 @@ disks to F</var/lib/libvirt/images>.
|
||||
@@ -92,21 +90,6 @@ disks to F</var/lib/libvirt/images>.
|
||||
|
||||
For more information see L<virt-v2v-input-vmware(1)>.
|
||||
|
||||
@ -402,7 +402,7 @@ index eb7da9ca..de92db84 100644
|
||||
=head2 Convert from ESXi hypervisor over SSH to local libvirt
|
||||
|
||||
You have an ESXi hypervisor called C<esxi.example.com> with SSH access
|
||||
@@ -479,14 +462,6 @@ no metadata is written.
|
||||
@@ -486,14 +469,6 @@ no metadata is written.
|
||||
|
||||
Set the output method to OpenStack. See L<virt-v2v-output-openstack(1)>.
|
||||
|
||||
@ -417,7 +417,7 @@ index eb7da9ca..de92db84 100644
|
||||
=item B<-o> B<qemu>
|
||||
|
||||
Set the output method to I<qemu>.
|
||||
@@ -495,40 +470,6 @@ This is similar to I<-o local>, except that a shell script is written
|
||||
@@ -502,40 +477,6 @@ This is similar to I<-o local>, except that a shell script is written
|
||||
which you can use to boot the guest in qemu. The converted disks and
|
||||
shell script are written to the directory specified by I<-os>.
|
||||
|
||||
@ -458,7 +458,7 @@ index eb7da9ca..de92db84 100644
|
||||
=item B<-oa> B<sparse>
|
||||
|
||||
=item B<-oa> B<preallocated>
|
||||
@@ -591,117 +532,11 @@ For I<-o openstack> (L<virt-v2v-output-openstack(1)>) only, set optional
|
||||
@@ -598,117 +539,11 @@ For I<-o openstack> (L<virt-v2v-output-openstack(1)>) only, set optional
|
||||
OpenStack authentication. For example I<-oo os-username=>NAME is
|
||||
equivalent to C<openstack --os-username=NAME>.
|
||||
|
||||
@ -576,7 +576,7 @@ index eb7da9ca..de92db84 100644
|
||||
=item B<-op> file
|
||||
|
||||
Supply a file containing a password to be used when connecting to the
|
||||
@@ -719,28 +554,8 @@ For I<-o libvirt>, this is a libvirt directory pool
|
||||
@@ -726,28 +561,8 @@ For I<-o libvirt>, this is a libvirt directory pool
|
||||
For I<-o local> and I<-o qemu>, this is a directory name.
|
||||
The directory must exist.
|
||||
|
||||
@ -602,10 +602,10 @@ index eb7da9ca..de92db84 100644
|
||||
-You will get an error if virt-v2v is unable to mount/write to the
|
||||
-Export Storage Domain.
|
||||
-
|
||||
=item B<--print-source>
|
||||
=item B<--parallel> N
|
||||
|
||||
Print information about the source guest and stop. This option is
|
||||
@@ -1302,26 +1117,6 @@ require either root or a special user:
|
||||
Enable parallel copying if the guest has multiple disks. I<N> is the
|
||||
@@ -1356,26 +1171,6 @@ require either root or a special user:
|
||||
|
||||
=over 4
|
||||
|
||||
@ -632,7 +632,7 @@ index eb7da9ca..de92db84 100644
|
||||
=item Writing to libvirt
|
||||
|
||||
When using I<-o libvirt>, you may need to run virt-v2v as root so that
|
||||
@@ -1428,7 +1223,6 @@ virt-v2v binary. Typical output looks like this:
|
||||
@@ -1483,7 +1278,6 @@ virt-v2v binary. Typical output looks like this:
|
||||
virt-v2v
|
||||
libguestfs-rewrite
|
||||
colours-option
|
||||
@ -641,7 +641,7 @@ index eb7da9ca..de92db84 100644
|
||||
[...]
|
||||
output:local
|
||||
diff --git a/output/Makefile.am b/output/Makefile.am
|
||||
index 1e6799c3..09638c25 100644
|
||||
index 69f5393e..981cf589 100644
|
||||
--- a/output/Makefile.am
|
||||
+++ b/output/Makefile.am
|
||||
@@ -17,14 +17,7 @@
|
||||
@ -671,7 +671,7 @@ index 1e6799c3..09638c25 100644
|
||||
- rhv-upload-precheck.py \
|
||||
- rhv-upload-transfer.py \
|
||||
- rhv-upload-vmcheck.py \
|
||||
test-v2v-python-syntax.sh
|
||||
test-python-syntax.sh
|
||||
|
||||
SOURCES_MLI = \
|
||||
@@ -54,16 +40,6 @@ SOURCES_MLI = \
|
||||
@ -739,12 +739,12 @@ index 1e6799c3..09638c25 100644
|
||||
# objects and OCaml objects and link them into the OCaml library.
|
||||
diff --git a/output/output_rhv.ml b/output/output_rhv.ml
|
||||
deleted file mode 100644
|
||||
index 13c2d8dc..00000000
|
||||
index e10b2010..00000000
|
||||
--- a/output/output_rhv.ml
|
||||
+++ /dev/null
|
||||
@@ -1,317 +0,0 @@
|
||||
-(* virt-v2v
|
||||
- * Copyright (C) 2009-2021 Red Hat Inc.
|
||||
- * Copyright (C) 2009-2025 Red Hat Inc.
|
||||
- *
|
||||
- * This program is free software; you can redistribute it and/or modify
|
||||
- * it under the terms of the GNU General Public License as published by
|
||||
@ -1062,12 +1062,12 @@ index 13c2d8dc..00000000
|
||||
-end
|
||||
diff --git a/output/output_rhv.mli b/output/output_rhv.mli
|
||||
deleted file mode 100644
|
||||
index 08f3f2d0..00000000
|
||||
index ceb12c3f..00000000
|
||||
--- a/output/output_rhv.mli
|
||||
+++ /dev/null
|
||||
@@ -1,21 +0,0 @@
|
||||
-(* virt-v2v
|
||||
- * Copyright (C) 2009-2021 Red Hat Inc.
|
||||
- * Copyright (C) 2009-2025 Red Hat Inc.
|
||||
- *
|
||||
- * This program is free software; you can redistribute it and/or modify
|
||||
- * it under the terms of the GNU General Public License as published by
|
||||
@ -1089,12 +1089,12 @@ index 08f3f2d0..00000000
|
||||
-module RHV : Output.OUTPUT
|
||||
diff --git a/output/output_rhv_upload.ml b/output/output_rhv_upload.ml
|
||||
deleted file mode 100644
|
||||
index 63624860..00000000
|
||||
index 8133db2b..00000000
|
||||
--- a/output/output_rhv_upload.ml
|
||||
+++ /dev/null
|
||||
@@ -1,520 +0,0 @@
|
||||
-(* virt-v2v
|
||||
- * Copyright (C) 2009-2021 Red Hat Inc.
|
||||
- * Copyright (C) 2009-2025 Red Hat Inc.
|
||||
- *
|
||||
- * This program is free software; you can redistribute it and/or modify
|
||||
- * it under the terms of the GNU General Public License as published by
|
||||
@ -1615,12 +1615,12 @@ index 63624860..00000000
|
||||
-end
|
||||
diff --git a/output/output_rhv_upload.mli b/output/output_rhv_upload.mli
|
||||
deleted file mode 100644
|
||||
index 35457596..00000000
|
||||
index 7106a3f1..00000000
|
||||
--- a/output/output_rhv_upload.mli
|
||||
+++ /dev/null
|
||||
@@ -1,21 +0,0 @@
|
||||
-(* virt-v2v
|
||||
- * Copyright (C) 2009-2021 Red Hat Inc.
|
||||
- * Copyright (C) 2009-2025 Red Hat Inc.
|
||||
- *
|
||||
- * This program is free software; you can redistribute it and/or modify
|
||||
- * it under the terms of the GNU General Public License as published by
|
||||
@ -1817,12 +1817,12 @@ index c1bafa15..00000000
|
||||
-val code : string
|
||||
diff --git a/output/output_vdsm.ml b/output/output_vdsm.ml
|
||||
deleted file mode 100644
|
||||
index 3052fb9c..00000000
|
||||
index 8ab2e766..00000000
|
||||
--- a/output/output_vdsm.ml
|
||||
+++ /dev/null
|
||||
@@ -1,237 +0,0 @@
|
||||
-(* virt-v2v
|
||||
- * Copyright (C) 2009-2021 Red Hat Inc.
|
||||
- * Copyright (C) 2009-2025 Red Hat Inc.
|
||||
- *
|
||||
- * This program is free software; you can redistribute it and/or modify
|
||||
- * it under the terms of the GNU General Public License as published by
|
||||
@ -2060,12 +2060,12 @@ index 3052fb9c..00000000
|
||||
-end
|
||||
diff --git a/output/output_vdsm.mli b/output/output_vdsm.mli
|
||||
deleted file mode 100644
|
||||
index 2260d7e6..00000000
|
||||
index c598f5df..00000000
|
||||
--- a/output/output_vdsm.mli
|
||||
+++ /dev/null
|
||||
@@ -1,21 +0,0 @@
|
||||
-(* virt-v2v
|
||||
- * Copyright (C) 2009-2021 Red Hat Inc.
|
||||
- * Copyright (C) 2009-2025 Red Hat Inc.
|
||||
- *
|
||||
- * This program is free software; you can redistribute it and/or modify
|
||||
- * it under the terms of the GNU General Public License as published by
|
||||
@ -2087,13 +2087,13 @@ index 2260d7e6..00000000
|
||||
-module VDSM : Output.OUTPUT
|
||||
diff --git a/output/rhv-upload-cancel.py b/output/rhv-upload-cancel.py
|
||||
deleted file mode 100644
|
||||
index b36e1904..00000000
|
||||
index 82122a2a..00000000
|
||||
--- a/output/rhv-upload-cancel.py
|
||||
+++ /dev/null
|
||||
@@ -1,96 +0,0 @@
|
||||
-# -*- python -*-
|
||||
-# oVirt or RHV upload cancel used by ‘virt-v2v -o rhv-upload’
|
||||
-# Copyright (C) 2019-2021 Red Hat Inc.
|
||||
-# Copyright (C) 2019-2025 Red Hat Inc.
|
||||
-#
|
||||
-# This program is free software; you can redistribute it and/or modify
|
||||
-# it under the terms of the GNU General Public License as published by
|
||||
@ -2332,13 +2332,13 @@ index 9af2c167..00000000
|
||||
- " Jobs still running for correlation id %s" % correlation_id)
|
||||
diff --git a/output/rhv-upload-finalize.py b/output/rhv-upload-finalize.py
|
||||
deleted file mode 100644
|
||||
index 12fd39ec..00000000
|
||||
index ee14873e..00000000
|
||||
--- a/output/rhv-upload-finalize.py
|
||||
+++ /dev/null
|
||||
@@ -1,174 +0,0 @@
|
||||
-# -*- python -*-
|
||||
-# oVirt or RHV upload finalize used by ‘virt-v2v -o rhv-upload’
|
||||
-# Copyright (C) 2018-2021 Red Hat Inc.
|
||||
-# Copyright (C) 2018-2025 Red Hat Inc.
|
||||
-#
|
||||
-# This program is free software; you can redistribute it and/or modify
|
||||
-# it under the terms of the GNU General Public License as published by
|
||||
@ -2512,13 +2512,13 @@ index 12fd39ec..00000000
|
||||
-connection.close()
|
||||
diff --git a/output/rhv-upload-plugin.py b/output/rhv-upload-plugin.py
|
||||
deleted file mode 100644
|
||||
index 8bc79a4a..00000000
|
||||
index b7a42005..00000000
|
||||
--- a/output/rhv-upload-plugin.py
|
||||
+++ /dev/null
|
||||
@@ -1,525 +0,0 @@
|
||||
-# -*- python -*-
|
||||
-# oVirt or RHV upload nbdkit plugin used by ‘virt-v2v -o rhv-upload’
|
||||
-# Copyright (C) 2018-2021 Red Hat Inc.
|
||||
-# Copyright (C) 2018-2025 Red Hat Inc.
|
||||
-#
|
||||
-# This program is free software; you can redistribute it and/or modify
|
||||
-# it under the terms of the GNU General Public License as published by
|
||||
@ -3043,13 +3043,13 @@ index 8bc79a4a..00000000
|
||||
- (r.status, r.reason))
|
||||
diff --git a/output/rhv-upload-precheck.py b/output/rhv-upload-precheck.py
|
||||
deleted file mode 100644
|
||||
index 0bbb738d..00000000
|
||||
index 539a7508..00000000
|
||||
--- a/output/rhv-upload-precheck.py
|
||||
+++ /dev/null
|
||||
@@ -1,135 +0,0 @@
|
||||
-# -*- python -*-
|
||||
-# oVirt or RHV pre-upload checks used by ‘virt-v2v -o rhv-upload’
|
||||
-# Copyright (C) 2018-2020 Red Hat Inc.
|
||||
-# Copyright (C) 2018-2025 Red Hat Inc.
|
||||
-#
|
||||
-# This program is free software; you can redistribute it and/or modify
|
||||
-# it under the terms of the GNU General Public License as published by
|
||||
@ -3184,13 +3184,13 @@ index 0bbb738d..00000000
|
||||
-json.dump(results, sys.stdout)
|
||||
diff --git a/output/rhv-upload-transfer.py b/output/rhv-upload-transfer.py
|
||||
deleted file mode 100644
|
||||
index ed96153b..00000000
|
||||
index 322418e2..00000000
|
||||
--- a/output/rhv-upload-transfer.py
|
||||
+++ /dev/null
|
||||
@@ -1,298 +0,0 @@
|
||||
-# -*- python -*-
|
||||
-# oVirt or RHV upload start transfer used by ‘virt-v2v -o rhv-upload’
|
||||
-# Copyright (C) 2018-2021 Red Hat Inc.
|
||||
-# Copyright (C) 2018-2025 Red Hat Inc.
|
||||
-#
|
||||
-# This program is free software; you can redistribute it and/or modify
|
||||
-# it under the terms of the GNU General Public License as published by
|
||||
@ -3488,13 +3488,13 @@ index ed96153b..00000000
|
||||
-json.dump(results, sys.stdout)
|
||||
diff --git a/output/rhv-upload-vmcheck.py b/output/rhv-upload-vmcheck.py
|
||||
deleted file mode 100644
|
||||
index cd500574..00000000
|
||||
index 42cc24e8..00000000
|
||||
--- a/output/rhv-upload-vmcheck.py
|
||||
+++ /dev/null
|
||||
@@ -1,72 +0,0 @@
|
||||
-# -*- python -*-
|
||||
-# oVirt or RHV VM existence check used by ‘virt-v2v -o rhv-upload’
|
||||
-# Copyright (C) 2018-2020 Red Hat Inc.
|
||||
-# Copyright (C) 2018-2025 Red Hat Inc.
|
||||
-#
|
||||
-# This program is free software; you can redistribute it and/or modify
|
||||
-# it under the terms of the GNU General Public License as published by
|
||||
@ -3565,54 +3565,47 @@ index cd500574..00000000
|
||||
-
|
||||
-# Otherwise everything is OK, exit with no error.
|
||||
diff --git a/tests/Makefile.am b/tests/Makefile.am
|
||||
index b41fed7f..2cf57248 100644
|
||||
index ffcbf722..e54569f1 100644
|
||||
--- a/tests/Makefile.am
|
||||
+++ b/tests/Makefile.am
|
||||
@@ -70,8 +70,6 @@ TESTS = \
|
||||
test-v2v-i-ova-two-disks.sh \
|
||||
test-v2v-i-vmx.sh \
|
||||
test-v2v-it-vddk-io-query.sh \
|
||||
- test-v2v-o-rhv-upload-oo-query.sh \
|
||||
- test-v2v-o-vdsm-oo-query.sh \
|
||||
test-v2v-bad-networks-and-bridges.sh \
|
||||
test-v2v-cdrom.sh \
|
||||
test-v2v-floppy.sh \
|
||||
@@ -89,9 +87,6 @@ TESTS = \
|
||||
test-v2v-o-null.sh \
|
||||
test-v2v-o-openstack.sh \
|
||||
test-v2v-o-qemu.sh \
|
||||
- test-v2v-o-rhv.sh \
|
||||
- test-v2v-o-rhv-upload.sh \
|
||||
- test-v2v-o-vdsm-options.sh \
|
||||
test-v2v-oa-option-qcow2.sh \
|
||||
test-v2v-oa-option-raw.sh \
|
||||
test-v2v-of-option.sh \
|
||||
@@ -258,16 +253,6 @@ EXTRA_DIST += \
|
||||
test-v2v-o-null.sh \
|
||||
test-v2v-o-openstack.sh \
|
||||
test-v2v-o-qemu.sh \
|
||||
- test-v2v-o-rhv.ovf.expected \
|
||||
- test-v2v-o-rhv.sh \
|
||||
- test-v2v-o-rhv-upload.sh \
|
||||
- test-v2v-o-rhv-upload-module/imageio.py \
|
||||
- test-v2v-o-rhv-upload-module/ovirtsdk4/__init__.py \
|
||||
- test-v2v-o-rhv-upload-module/ovirtsdk4/types.py \
|
||||
- test-v2v-o-rhv-upload-oo-query.sh \
|
||||
- test-v2v-o-vdsm-oo-query.sh \
|
||||
- test-v2v-o-vdsm-options.ovf.expected \
|
||||
- test-v2v-o-vdsm-options.sh \
|
||||
test-v2v-oa-option-qcow2.sh \
|
||||
test-v2v-oa-option-raw.sh \
|
||||
test-v2v-of-option.sh \
|
||||
diff --git a/tests/test-v2v-o-rhv-upload-module/imageio.py b/tests/test-v2v-o-rhv-upload-module/imageio.py
|
||||
@@ -99,11 +99,6 @@ TESTS = \
|
||||
test-o-null.sh \
|
||||
test-o-openstack.sh \
|
||||
test-o-qemu.sh \
|
||||
- test-o-rhv-upload-oo-query.sh \
|
||||
- test-o-rhv-upload.sh \
|
||||
- test-o-rhv.sh \
|
||||
- test-o-vdsm-oo-query.sh \
|
||||
- test-o-vdsm-options.sh \
|
||||
test-oa-option-qcow2.sh \
|
||||
test-oa-option-raw.sh \
|
||||
test-of-option.sh \
|
||||
@@ -288,16 +283,6 @@ EXTRA_DIST += \
|
||||
test-o-null.sh \
|
||||
test-o-openstack.sh \
|
||||
test-o-qemu.sh \
|
||||
- test-o-rhv-upload-module/imageio.py \
|
||||
- test-o-rhv-upload-module/ovirtsdk4/__init__.py \
|
||||
- test-o-rhv-upload-module/ovirtsdk4/types.py \
|
||||
- test-o-rhv-upload-oo-query.sh \
|
||||
- test-o-rhv-upload.sh \
|
||||
- test-o-rhv.ovf.expected \
|
||||
- test-o-rhv.sh \
|
||||
- test-o-vdsm-oo-query.sh \
|
||||
- test-o-vdsm-options.ovf.expected \
|
||||
- test-o-vdsm-options.sh \
|
||||
test-oa-option-qcow2.sh \
|
||||
test-oa-option-raw.sh \
|
||||
test-of-option.sh \
|
||||
diff --git a/tests/test-o-rhv-upload-module/imageio.py b/tests/test-o-rhv-upload-module/imageio.py
|
||||
deleted file mode 100755
|
||||
index b9a491d7..00000000
|
||||
--- a/tests/test-v2v-o-rhv-upload-module/imageio.py
|
||||
index 70ea2ef4..00000000
|
||||
--- a/tests/test-o-rhv-upload-module/imageio.py
|
||||
+++ /dev/null
|
||||
@@ -1,71 +0,0 @@
|
||||
-#!/usr/bin/env python3
|
||||
-# -*- python -*-
|
||||
-# Copyright (C) 2018-2021 Red Hat Inc.
|
||||
-# Copyright (C) 2018-2025 Red Hat Inc.
|
||||
-#
|
||||
-# This program is free software; you can redistribute it and/or modify
|
||||
-# it under the terms of the GNU General Public License as published by
|
||||
@ -3629,7 +3622,7 @@ index b9a491d7..00000000
|
||||
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
-
|
||||
-# Fake imageio web server used as a test harness.
|
||||
-# See v2v/test-v2v-o-rhv-upload.sh
|
||||
-# See v2v/test-o-rhv-upload.sh
|
||||
-
|
||||
-import sys
|
||||
-import threading
|
||||
@ -3681,10 +3674,10 @@ index b9a491d7..00000000
|
||||
-sys.stdout.flush()
|
||||
-
|
||||
-httpd.serve_forever()
|
||||
diff --git a/tests/test-v2v-o-rhv-upload-module/ovirtsdk4/__init__.py b/tests/test-v2v-o-rhv-upload-module/ovirtsdk4/__init__.py
|
||||
diff --git a/tests/test-o-rhv-upload-module/ovirtsdk4/__init__.py b/tests/test-o-rhv-upload-module/ovirtsdk4/__init__.py
|
||||
deleted file mode 100644
|
||||
index e33d0714..00000000
|
||||
--- a/tests/test-v2v-o-rhv-upload-module/ovirtsdk4/__init__.py
|
||||
index fefc9821..00000000
|
||||
--- a/tests/test-o-rhv-upload-module/ovirtsdk4/__init__.py
|
||||
+++ /dev/null
|
||||
@@ -1,150 +0,0 @@
|
||||
-# -*- python -*-
|
||||
@ -3705,7 +3698,7 @@ index e33d0714..00000000
|
||||
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
-
|
||||
-# Fake ovirtsdk4 module used as a test harness.
|
||||
-# See v2v/test-v2v-o-rhv-upload.sh
|
||||
-# See v2v/test-o-rhv-upload.sh
|
||||
-
|
||||
-class Error(Exception):
|
||||
- pass
|
||||
@ -3837,10 +3830,10 @@ index e33d0714..00000000
|
||||
-
|
||||
- def list(self, search=None):
|
||||
- return []
|
||||
diff --git a/tests/test-v2v-o-rhv-upload-module/ovirtsdk4/types.py b/tests/test-v2v-o-rhv-upload-module/ovirtsdk4/types.py
|
||||
diff --git a/tests/test-o-rhv-upload-module/ovirtsdk4/types.py b/tests/test-o-rhv-upload-module/ovirtsdk4/types.py
|
||||
deleted file mode 100644
|
||||
index 38d89573..00000000
|
||||
--- a/tests/test-v2v-o-rhv-upload-module/ovirtsdk4/types.py
|
||||
index 397432f1..00000000
|
||||
--- a/tests/test-o-rhv-upload-module/ovirtsdk4/types.py
|
||||
+++ /dev/null
|
||||
@@ -1,184 +0,0 @@
|
||||
-# -*- python -*-
|
||||
@ -3861,7 +3854,7 @@ index 38d89573..00000000
|
||||
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
-
|
||||
-# Fake ovirtsdk4 module used as a test harness.
|
||||
-# See v2v/test-v2v-o-rhv-upload.sh
|
||||
-# See v2v/test-o-rhv-upload.sh
|
||||
-
|
||||
-import os
|
||||
-from enum import Enum
|
||||
@ -4027,10 +4020,10 @@ index 38d89573..00000000
|
||||
- name = "DC"
|
||||
- storage_domains = [StorageDomain()]
|
||||
- clusters = [Cluster()]
|
||||
diff --git a/tests/test-v2v-o-rhv-upload-oo-query.sh b/tests/test-v2v-o-rhv-upload-oo-query.sh
|
||||
diff --git a/tests/test-o-rhv-upload-oo-query.sh b/tests/test-o-rhv-upload-oo-query.sh
|
||||
deleted file mode 100755
|
||||
index 5ef56b90..00000000
|
||||
--- a/tests/test-v2v-o-rhv-upload-oo-query.sh
|
||||
index 5dda6e04..00000000
|
||||
--- a/tests/test-o-rhv-upload-oo-query.sh
|
||||
+++ /dev/null
|
||||
@@ -1,41 +0,0 @@
|
||||
-#!/bin/bash -
|
||||
@ -4062,9 +4055,9 @@ index 5ef56b90..00000000
|
||||
-skip_if_skipped
|
||||
-
|
||||
-export VIRT_TOOLS_DATA_DIR="$srcdir/../test-data/fake-virt-tools"
|
||||
-export VIRTIO_WIN="$srcdir/../test-data/fake-virtio-win"
|
||||
-export VIRTIO_WIN="$srcdir/../test-data/fake-virtio-win/drivers"
|
||||
-
|
||||
-f=test-v2v-o-rhv-upload-oo-query.actual
|
||||
-f=test-o-rhv-upload-oo-query.actual
|
||||
-rm -f $f
|
||||
-
|
||||
-$VG virt-v2v --debug-gc \
|
||||
@ -4074,10 +4067,10 @@ index 5ef56b90..00000000
|
||||
-grep -- "-oo rhv-verifypeer" $f
|
||||
-
|
||||
-rm $f
|
||||
diff --git a/tests/test-v2v-o-rhv-upload.sh b/tests/test-v2v-o-rhv-upload.sh
|
||||
diff --git a/tests/test-o-rhv-upload.sh b/tests/test-o-rhv-upload.sh
|
||||
deleted file mode 100755
|
||||
index 15d5d028..00000000
|
||||
--- a/tests/test-v2v-o-rhv-upload.sh
|
||||
index 718f6ce8..00000000
|
||||
--- a/tests/test-o-rhv-upload.sh
|
||||
+++ /dev/null
|
||||
@@ -1,74 +0,0 @@
|
||||
-#!/bin/bash -
|
||||
@ -4101,7 +4094,7 @@ index 15d5d028..00000000
|
||||
-# Test -o rhv-upload.
|
||||
-#
|
||||
-# These uses a test harness (see
|
||||
-# tests/test-v2v-o-rhv-upload-module/ovirtsdk4) to fake responses from
|
||||
-# tests/test-o-rhv-upload-module/ovirtsdk4) to fake responses from
|
||||
-# oVirt.
|
||||
-
|
||||
-set -e
|
||||
@ -4113,21 +4106,21 @@ index 15d5d028..00000000
|
||||
-
|
||||
-skip_if_skipped
|
||||
-requires python3 --version
|
||||
-requires nbdkit $VIRT_V2V_NBDKIT_PYTHON_PLUGIN --version
|
||||
-requires test -f ../test-data/phony-guests/windows.img
|
||||
-requires nbdkit python --version
|
||||
-requires test -s ../test-data/phony-guests/windows.img
|
||||
-
|
||||
-libvirt_uri="test://$abs_top_builddir/test-data/phony-guests/guests.xml"
|
||||
-f=../test-data/phony-guests/windows.img
|
||||
-
|
||||
-export VIRT_TOOLS_DATA_DIR="$srcdir/../test-data/fake-virt-tools"
|
||||
-export VIRTIO_WIN="$srcdir/../test-data/fake-virtio-win"
|
||||
-export PYTHONPATH=$srcdir/test-v2v-o-rhv-upload-module:$PYTHONPATH
|
||||
-export VIRTIO_WIN="$srcdir/../test-data/fake-virtio-win/drivers"
|
||||
-export PYTHONPATH=$srcdir/test-o-rhv-upload-module:$PYTHONPATH
|
||||
-
|
||||
-# Run the imageio process and get the port number.
|
||||
-log=test-v2v-o-rhv-upload.webserver.log
|
||||
-log=test-o-rhv-upload.webserver.log
|
||||
-rm -f $log
|
||||
-cleanup_fn rm -f $log
|
||||
-$srcdir/test-v2v-o-rhv-upload-module/imageio.py >$log 2>&1 &
|
||||
-$srcdir/test-o-rhv-upload-module/imageio.py >$log 2>&1 &
|
||||
-pid=$!
|
||||
-cleanup_fn kill $pid
|
||||
-export IMAGEIO_PORT=
|
||||
@ -4154,10 +4147,10 @@ index 15d5d028..00000000
|
||||
- -oo rhv-cafile=/dev/null \
|
||||
- -op /dev/null \
|
||||
- -os Storage
|
||||
diff --git a/tests/test-v2v-o-rhv.ovf.expected b/tests/test-v2v-o-rhv.ovf.expected
|
||||
diff --git a/tests/test-o-rhv.ovf.expected b/tests/test-o-rhv.ovf.expected
|
||||
deleted file mode 100644
|
||||
index 4f437d88..00000000
|
||||
--- a/tests/test-v2v-o-rhv.ovf.expected
|
||||
--- a/tests/test-o-rhv.ovf.expected
|
||||
+++ /dev/null
|
||||
@@ -1,113 +0,0 @@
|
||||
-<?xml version='1.0' encoding='utf-8'?>
|
||||
@ -4273,10 +4266,10 @@ index 4f437d88..00000000
|
||||
- </Section>
|
||||
- </Content>
|
||||
-</ovf:Envelope>
|
||||
diff --git a/tests/test-v2v-o-rhv.sh b/tests/test-v2v-o-rhv.sh
|
||||
diff --git a/tests/test-o-rhv.sh b/tests/test-o-rhv.sh
|
||||
deleted file mode 100755
|
||||
index e6ec7c61..00000000
|
||||
--- a/tests/test-v2v-o-rhv.sh
|
||||
index 173d762c..00000000
|
||||
--- a/tests/test-o-rhv.sh
|
||||
+++ /dev/null
|
||||
@@ -1,87 +0,0 @@
|
||||
-#!/bin/bash -
|
||||
@ -4306,15 +4299,15 @@ index e6ec7c61..00000000
|
||||
-set -x
|
||||
-
|
||||
-skip_if_skipped
|
||||
-requires test -f ../test-data/phony-guests/windows.img
|
||||
-requires test -s ../test-data/phony-guests/windows.img
|
||||
-
|
||||
-libvirt_uri="test://$abs_top_builddir/test-data/phony-guests/guests.xml"
|
||||
-f=../test-data/phony-guests/windows.img
|
||||
-
|
||||
-export VIRT_TOOLS_DATA_DIR="$srcdir/../test-data/fake-virt-tools"
|
||||
-export VIRTIO_WIN="$srcdir/../test-data/fake-virtio-win"
|
||||
-export VIRTIO_WIN="$srcdir/../test-data/fake-virtio-win/drivers"
|
||||
-
|
||||
-d=test-v2v-o-rhv.d
|
||||
-d=test-o-rhv.d
|
||||
-rm -rf $d
|
||||
-cleanup_fn rm -r $d
|
||||
-mkdir $d
|
||||
@ -4365,11 +4358,11 @@ index e6ec7c61..00000000
|
||||
- -e 's/\<ovf:vm_snapshot_id='"'$RE_UUID'/ovf:vm_snapshot_id='#UUID#'/g" \
|
||||
- "$OVF"
|
||||
-
|
||||
-diff -u "$srcdir/test-v2v-o-rhv.ovf.expected" "$OVF"
|
||||
diff --git a/tests/test-v2v-o-vdsm-oo-query.sh b/tests/test-v2v-o-vdsm-oo-query.sh
|
||||
-diff -u "$srcdir/test-o-rhv.ovf.expected" "$OVF"
|
||||
diff --git a/tests/test-o-vdsm-oo-query.sh b/tests/test-o-vdsm-oo-query.sh
|
||||
deleted file mode 100755
|
||||
index 7d4cae4e..00000000
|
||||
--- a/tests/test-v2v-o-vdsm-oo-query.sh
|
||||
index e940044d..00000000
|
||||
--- a/tests/test-o-vdsm-oo-query.sh
|
||||
+++ /dev/null
|
||||
@@ -1,41 +0,0 @@
|
||||
-#!/bin/bash -
|
||||
@ -4401,9 +4394,9 @@ index 7d4cae4e..00000000
|
||||
-skip_if_skipped
|
||||
-
|
||||
-export VIRT_TOOLS_DATA_DIR="$srcdir/../test-data/fake-virt-tools"
|
||||
-export VIRTIO_WIN="$srcdir/../test-data/fake-virtio-win"
|
||||
-export VIRTIO_WIN="$srcdir/../test-data/fake-virtio-win/drivers"
|
||||
-
|
||||
-f=test-v2v-o-vdsm-oo-query.actual
|
||||
-f=test-o-vdsm-oo-query.actual
|
||||
-rm -f $f
|
||||
-
|
||||
-$VG virt-v2v --debug-gc \
|
||||
@ -4413,10 +4406,10 @@ index 7d4cae4e..00000000
|
||||
-grep -- "-oo vdsm-image-uuid" $f
|
||||
-
|
||||
-rm $f
|
||||
diff --git a/tests/test-v2v-o-vdsm-options.ovf.expected b/tests/test-v2v-o-vdsm-options.ovf.expected
|
||||
diff --git a/tests/test-o-vdsm-options.ovf.expected b/tests/test-o-vdsm-options.ovf.expected
|
||||
deleted file mode 100644
|
||||
index 9f71a44e..00000000
|
||||
--- a/tests/test-v2v-o-vdsm-options.ovf.expected
|
||||
--- a/tests/test-o-vdsm-options.ovf.expected
|
||||
+++ /dev/null
|
||||
@@ -1,113 +0,0 @@
|
||||
-<?xml version='1.0' encoding='utf-8'?>
|
||||
@ -4532,15 +4525,15 @@ index 9f71a44e..00000000
|
||||
- </VirtualHardwareSection>
|
||||
- </VirtualSystem>
|
||||
-</ovf:Envelope>
|
||||
diff --git a/tests/test-v2v-o-vdsm-options.sh b/tests/test-v2v-o-vdsm-options.sh
|
||||
diff --git a/tests/test-o-vdsm-options.sh b/tests/test-o-vdsm-options.sh
|
||||
deleted file mode 100755
|
||||
index e8f8c538..00000000
|
||||
--- a/tests/test-v2v-o-vdsm-options.sh
|
||||
index a8c5b208..00000000
|
||||
--- a/tests/test-o-vdsm-options.sh
|
||||
+++ /dev/null
|
||||
@@ -1,96 +0,0 @@
|
||||
-#!/bin/bash -
|
||||
-# libguestfs virt-v2v test script
|
||||
-# Copyright (C) 2014-2020 Red Hat Inc.
|
||||
-# Copyright (C) 2014-2025 Red Hat Inc.
|
||||
-#
|
||||
-# This program is free software; you can redistribute it and/or modify
|
||||
-# it under the terms of the GNU General Public License as published by
|
||||
@ -4566,15 +4559,15 @@ index e8f8c538..00000000
|
||||
-set -x
|
||||
-
|
||||
-skip_if_skipped
|
||||
-requires test -f ../test-data/phony-guests/windows.img
|
||||
-requires test -s ../test-data/phony-guests/windows.img
|
||||
-
|
||||
-libvirt_uri="test://$abs_top_builddir/test-data/phony-guests/guests.xml"
|
||||
-f=../test-data/phony-guests/windows.img
|
||||
-
|
||||
-export VIRT_TOOLS_DATA_DIR="$srcdir/../test-data/fake-virt-tools"
|
||||
-export VIRTIO_WIN="$srcdir/../test-data/fake-virtio-win"
|
||||
-export VIRTIO_WIN="$srcdir/../test-data/fake-virtio-win/drivers"
|
||||
-
|
||||
-d=test-v2v-o-vdsm-options.d
|
||||
-d=test-o-vdsm-options.d
|
||||
-rm -rf $d
|
||||
-cleanup_fn rm -r $d
|
||||
-mkdir $d
|
||||
@ -4632,13 +4625,13 @@ index e8f8c538..00000000
|
||||
- -e 's/\<ovf:vm_snapshot_id='"'$RE_UUID'/ovf:vm_snapshot_id='#UUID#'/g" \
|
||||
- "$OVF"
|
||||
-
|
||||
-diff -u "$srcdir/test-v2v-o-vdsm-options.ovf.expected" \
|
||||
-diff -u "$srcdir/test-o-vdsm-options.ovf.expected" \
|
||||
- "$OVF"
|
||||
diff --git a/v2v/v2v.ml b/v2v/v2v.ml
|
||||
index d09c200c..8be1e5cb 100644
|
||||
index 40782651..2e23642a 100644
|
||||
--- a/v2v/v2v.ml
|
||||
+++ b/v2v/v2v.ml
|
||||
@@ -201,11 +201,7 @@ let rec main () =
|
||||
@@ -202,11 +202,7 @@ let rec main () =
|
||||
| "disk" | "local" -> output_mode := `Disk
|
||||
| "null" -> output_mode := `Null
|
||||
| "openstack" | "osp" | "rhosp" -> output_mode := `Openstack
|
||||
@ -4650,7 +4643,7 @@ index d09c200c..8be1e5cb 100644
|
||||
| s ->
|
||||
error (f_"unknown -o option: %s") s
|
||||
in
|
||||
@@ -245,7 +241,7 @@ let rec main () =
|
||||
@@ -254,7 +250,7 @@ let rec main () =
|
||||
s_"Map network ‘in’ to ‘out’";
|
||||
[ L"no-trim" ], Getopt.String ("-", no_trim_warning),
|
||||
s_"Ignored for backwards compatibility";
|
||||
@ -4659,7 +4652,7 @@ index d09c200c..8be1e5cb 100644
|
||||
s_"Set output mode (default: libvirt)";
|
||||
[ M"oa" ], Getopt.String ("sparse|preallocated", set_output_alloc),
|
||||
s_"Set output allocation mode";
|
||||
@@ -283,18 +279,6 @@ let rec main () =
|
||||
@@ -294,18 +290,6 @@ let rec main () =
|
||||
s_"Same as ‘-io vddk-thumbprint=thumbprint’";
|
||||
[ L"vddk-transports" ], Getopt.String ("transports", set_input_option_compat "vddk-transports"),
|
||||
s_"Same as ‘-io vddk-transports=transports’";
|
||||
@ -4678,7 +4671,7 @@ index d09c200c..8be1e5cb 100644
|
||||
[ L"vmtype" ], Getopt.String ("-", vmtype_warning),
|
||||
s_"Ignored for backwards compatibility";
|
||||
] in
|
||||
@@ -314,9 +298,6 @@ let rec main () =
|
||||
@@ -325,9 +309,6 @@ let rec main () =
|
||||
|
||||
virt-v2v -ic vpx://vcenter.example.com/Datacenter/esxi -os imported esx_guest
|
||||
|
||||
@ -4688,7 +4681,7 @@ index d09c200c..8be1e5cb 100644
|
||||
virt-v2v -i libvirtxml guest-domain.xml -o local -os /var/tmp
|
||||
|
||||
virt-v2v -i disk disk.img -o local -os /var/tmp
|
||||
@@ -380,7 +361,6 @@ read the man page virt-v2v(1).
|
||||
@@ -394,7 +375,6 @@ read the man page virt-v2v(1).
|
||||
pr "vcenter-https\n";
|
||||
pr "vddk\n";
|
||||
pr "colours-option\n";
|
||||
@ -4696,7 +4689,7 @@ index d09c200c..8be1e5cb 100644
|
||||
pr "io/oo\n";
|
||||
pr "mac-option\n";
|
||||
pr "bandwidth-option\n";
|
||||
@@ -397,9 +377,6 @@ read the man page virt-v2v(1).
|
||||
@@ -412,9 +392,6 @@ read the man page virt-v2v(1).
|
||||
pr "output:null\n";
|
||||
pr "output:openstack\n";
|
||||
pr "output:qemu\n";
|
||||
@ -4706,7 +4699,7 @@ index d09c200c..8be1e5cb 100644
|
||||
pr "convert:linux\n";
|
||||
pr "convert:windows\n";
|
||||
List.iter (pr "ovf:%s\n") Create_ovf.ovf_flavours;
|
||||
@@ -484,10 +461,7 @@ read the man page virt-v2v(1).
|
||||
@@ -499,10 +476,7 @@ read the man page virt-v2v(1).
|
||||
| `Null -> (module Output_null.Null)
|
||||
| `QEmu -> (module Output_qemu.QEMU)
|
||||
| `Kubevirt -> (module Output_kubevirt.Kubevirt)
|
||||
@ -4718,7 +4711,7 @@ index d09c200c..8be1e5cb 100644
|
||||
|
||||
let output_options = {
|
||||
Output.output_alloc = output_alloc;
|
||||
@@ -512,7 +486,6 @@ read the man page virt-v2v(1).
|
||||
@@ -527,7 +501,6 @@ read the man page virt-v2v(1).
|
||||
*)
|
||||
let remove_serial_console =
|
||||
match output_mode with
|
||||
@ -0,0 +1,40 @@
|
||||
From 7ac8099864720bbca1001a2abbdbfe7296ebd7fe Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Tue, 9 Jul 2024 11:30:09 +0100
|
||||
Subject: [PATCH] RHEL: Add warning about virt-v2v-in-place not being supported
|
||||
|
||||
Fixes: https://issues.redhat.com/browse/RHEL-40903
|
||||
---
|
||||
docs/virt-v2v-in-place.pod | 4 ++++
|
||||
in-place/in_place.ml | 3 +++
|
||||
2 files changed, 7 insertions(+)
|
||||
|
||||
diff --git a/docs/virt-v2v-in-place.pod b/docs/virt-v2v-in-place.pod
|
||||
index 3e73bfc1..bd959fe4 100644
|
||||
--- a/docs/virt-v2v-in-place.pod
|
||||
+++ b/docs/virt-v2v-in-place.pod
|
||||
@@ -16,6 +16,10 @@ virt-v2v-in-place - Convert a guest to use KVM in-place
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
+B<virt-v2v-in-place is NOT SUPPORTED for command line use in Red Hat
|
||||
+Enterprise Linux>. It is almost always better to use L<virt-v2v(1)>
|
||||
+instead of this tool.
|
||||
+
|
||||
Virt-v2v-in-place converts a single guest from a foreign hypervisor to
|
||||
run on KVM. It does this conversion in place, modifying the original
|
||||
disk.
|
||||
diff --git a/in-place/in_place.ml b/in-place/in_place.ml
|
||||
index caf34a0b..fe436b37 100644
|
||||
--- a/in-place/in_place.ml
|
||||
+++ b/in-place/in_place.ml
|
||||
@@ -221,6 +221,9 @@ read the man page virt-v2v-in-place(1).
|
||||
let opthandle = create_standard_options argspec ~anon_fun ~key_opts:true ~machine_readable:true usage_msg in
|
||||
Getopt.parse opthandle.getopt;
|
||||
|
||||
+ warning "virt-v2v-in-place is NOT SUPPORTED for command line use. \
|
||||
+ It is almost always better to use virt-v2v instead of this tool.";
|
||||
+
|
||||
(* Print the version, easier than asking users to tell us. *)
|
||||
debug "info: %s: %s %s (%s)"
|
||||
prog Config.package_name Config.package_version_full
|
||||
@ -1,33 +0,0 @@
|
||||
From d903b78c675ca51a6d62fb83bc5b94a64861b0d9 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Wed, 30 Oct 2024 15:39:31 +0000
|
||||
Subject: [PATCH] in-place: Add a warning about checking the exit code
|
||||
|
||||
(cherry picked from commit 8b768fd9b17412ee8893447dc0f1e75bc612df58)
|
||||
(cherry picked from commit a794e7936064812540f0bb8b37827fa562a6fba4)
|
||||
---
|
||||
docs/virt-v2v-in-place.pod | 11 +++++++++++
|
||||
1 file changed, 11 insertions(+)
|
||||
|
||||
diff --git a/docs/virt-v2v-in-place.pod b/docs/virt-v2v-in-place.pod
|
||||
index b7384210..4057dae5 100644
|
||||
--- a/docs/virt-v2v-in-place.pod
|
||||
+++ b/docs/virt-v2v-in-place.pod
|
||||
@@ -35,6 +35,17 @@ If the guest has been copied to local libvirt then:
|
||||
|
||||
virt-v2v-in-place -i libvirt guest
|
||||
|
||||
+=head2 Exit code
|
||||
+
|
||||
+If virt-v2v-in-place fails it will return a non-zero (error) exit
|
||||
+code. In this case, the disk image will be in an B<unknown, possibly
|
||||
+corrupted state>.
|
||||
+
|
||||
+If the image contains important information you should ensure you have
|
||||
+a backup before trying a virt-v2v-in-place conversion. And you should
|
||||
+check the exit code is zero before using the disk image after a
|
||||
+conversion.
|
||||
+
|
||||
=head1 EXAMPLES
|
||||
|
||||
=head1 OPTIONS
|
||||
@ -1,31 +0,0 @@
|
||||
From 837646d510e74d77ad80d4859aa03012682ce01b Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Fri, 15 Nov 2024 14:00:07 +0000
|
||||
Subject: [PATCH] -i libvirt: Trim whitespace around name
|
||||
|
||||
In -i libvirt / -i libvirtxml we didn't trim whitespace
|
||||
around the name, so:
|
||||
|
||||
<name> foo </name>
|
||||
|
||||
would set the input name to the literal string " foo ".
|
||||
|
||||
(cherry picked from commit 9cb76069040543ce25003ac8c620aff3724964fc)
|
||||
(cherry picked from commit 669acaf0f56ffdb85a1d72fb37ff2958600003cc)
|
||||
---
|
||||
input/parse_libvirt_xml.ml | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/input/parse_libvirt_xml.ml b/input/parse_libvirt_xml.ml
|
||||
index 4d0fcdf3..8009a05a 100644
|
||||
--- a/input/parse_libvirt_xml.ml
|
||||
+++ b/input/parse_libvirt_xml.ml
|
||||
@@ -78,7 +78,7 @@ let parse_libvirt_xml ?conn xml =
|
||||
match xpath_string "/domain/name/text()" with
|
||||
| None | Some "" ->
|
||||
error (f_"in the libvirt XML metadata, <name> is missing or empty")
|
||||
- | Some s -> s in
|
||||
+ | Some s -> String.trim s in
|
||||
let genid =
|
||||
match xpath_string "/domain/genid/text()" with
|
||||
| None | Some "" -> None
|
||||
@ -1,963 +0,0 @@
|
||||
From 49e77856e1e127eabe14ac07ee9c33ce6b8c067b Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Fri, 15 Nov 2024 11:49:26 +0000
|
||||
Subject: [PATCH] -o qemu: Replace hard-coded UEFI paths
|
||||
|
||||
Update the qemu shell script to simply find the UEFI paths as
|
||||
required.
|
||||
|
||||
Remove lib/uefi.ml:find_uefi_firmware as this function is no longer
|
||||
needed.
|
||||
|
||||
Remove common/mlv2v/ everywhere. This contained a list of UEFI code
|
||||
and NVRAM files which is no longer used.
|
||||
|
||||
Update common submodule. This pulls in:
|
||||
|
||||
Richard W.M. Jones (5):
|
||||
mlcustomize/customize_run.ml: Move 'in' to new line
|
||||
mlstdutils/guestfs_config: Define host_os
|
||||
mlcustomize, mltools: Check guest OS is compatible before allowing --run
|
||||
Remove mlv2v/ subdirectory
|
||||
qemuopts: Add ability to add raw, unquoted output to qemu scripts
|
||||
qemuopts: Fix missing break statement
|
||||
|
||||
(cherry picked from commit 69b4e83935b03e10c5da9b93f987eb8ddd2cde31)
|
||||
(cherry picked from commit faf29e12e7928345ca0178923f468fee34d067e8)
|
||||
---
|
||||
Makefile.am | 1 -
|
||||
common | 2 +-
|
||||
configure.ac | 1 -
|
||||
convert/Makefile.am | 2 -
|
||||
in-place/Makefile.am | 4 +-
|
||||
input/Makefile.am | 2 -
|
||||
inspector/Makefile.am | 4 +-
|
||||
lib/Makefile.am | 1 -
|
||||
lib/utils.ml | 20 -------
|
||||
lib/utils.mli | 4 --
|
||||
ocaml-dep.sh.in | 1 -
|
||||
output/Makefile.am | 2 -
|
||||
output/output_qemu.ml | 121 +++++++++++++++++++++++-------------------
|
||||
output/qemuopts-c.c | 12 +++++
|
||||
output/qemuopts.ml | 1 +
|
||||
output/qemuopts.mli | 4 ++
|
||||
po/POTFILES-ml | 1 -
|
||||
v2v/Makefile.am | 5 +-
|
||||
18 files changed, 87 insertions(+), 101 deletions(-)
|
||||
|
||||
diff --git a/Makefile.am b/Makefile.am
|
||||
index 51370188..4cc87324 100644
|
||||
--- a/Makefile.am
|
||||
+++ b/Makefile.am
|
||||
@@ -37,7 +37,6 @@ SUBDIRS += common/mlxml
|
||||
SUBDIRS += common/mltools
|
||||
SUBDIRS += common/mlcustomize
|
||||
SUBDIRS += common/mldrivers
|
||||
-SUBDIRS += common/mlv2v
|
||||
SUBDIRS += lib
|
||||
SUBDIRS += input
|
||||
SUBDIRS += output
|
||||
Submodule common 2d42128e..faee2645:
|
||||
diff --git a/common/.gitignore b/common/.gitignore
|
||||
index 49915e31..44f49eb6 100644
|
||||
--- a/common/.gitignore
|
||||
+++ b/common/.gitignore
|
||||
@@ -58,7 +58,6 @@ Makefile.in
|
||||
/mlutils/.depend
|
||||
/mlutils/c_utils_unit_tests
|
||||
/mlutils/oUnit-*
|
||||
-/mlv2v/.depend
|
||||
/mlvisit/.depend
|
||||
/mlvisit/visit_tests
|
||||
/mlxml/.depend
|
||||
diff --git a/common/mlcustomize/customize_run.ml b/common/mlcustomize/customize_run.ml
|
||||
index 1d7c13ea..5ec5ed11 100644
|
||||
--- a/common/mlcustomize/customize_run.ml
|
||||
+++ b/common/mlcustomize/customize_run.ml
|
||||
@@ -44,21 +44,13 @@ let run (g : G.guestfs) root (ops : ops) =
|
||||
let debug_logfile () =
|
||||
try g#download logfile "/dev/stderr"
|
||||
with exn ->
|
||||
- warning (f_"log file %s: %s (ignored)") logfile (Printexc.to_string exn) in
|
||||
+ warning (f_"log file %s: %s (ignored)") logfile (Printexc.to_string exn)
|
||||
+ in
|
||||
|
||||
(* Useful wrapper for scripts. *)
|
||||
let do_run ~display ?(warn_failed_no_network = false) cmd =
|
||||
- let incompatible_fn () =
|
||||
- let guest_arch = g#inspect_get_arch root in
|
||||
- error (f_"host cpu (%s) and guest arch (%s) are not compatible, \
|
||||
- so you cannot use command line options that involve \
|
||||
- running commands in the guest. Use --firstboot scripts \
|
||||
- instead.")
|
||||
- Guestfs_config.host_cpu guest_arch
|
||||
- in
|
||||
-
|
||||
try
|
||||
- run_in_guest_command g root ~logfile ~incompatible_fn cmd
|
||||
+ run_in_guest_command g root ~logfile cmd
|
||||
with
|
||||
G.Error msg ->
|
||||
debug_logfile ();
|
||||
diff --git a/common/mlstdutils/guestfs_config.ml.in b/common/mlstdutils/guestfs_config.ml.in
|
||||
index 0ab95bd9..84929581 100644
|
||||
--- a/common/mlstdutils/guestfs_config.ml.in
|
||||
+++ b/common/mlstdutils/guestfs_config.ml.in
|
||||
@@ -22,4 +22,5 @@ let package_version = "@PACKAGE_VERSION@"
|
||||
let package_version_full = "@PACKAGE_VERSION_FULL@"
|
||||
let prefix = "@prefix@"
|
||||
let datadir = prefix ^ "/share"
|
||||
+let host_os = "@host_os@"
|
||||
let host_cpu = "@host_cpu@"
|
||||
diff --git a/common/mlstdutils/guestfs_config.mli b/common/mlstdutils/guestfs_config.mli
|
||||
index 78df3040..70161c01 100644
|
||||
--- a/common/mlstdutils/guestfs_config.mli
|
||||
+++ b/common/mlstdutils/guestfs_config.mli
|
||||
@@ -31,5 +31,8 @@ val prefix : string
|
||||
val datadir : string
|
||||
(** The configure value [@datadir@] *)
|
||||
|
||||
+val host_os : string
|
||||
+(** The configure value [@host_os@] *)
|
||||
+
|
||||
val host_cpu : string
|
||||
(** The configure value [@host_cpu@] *)
|
||||
diff --git a/common/mltools/tools_utils.ml b/common/mltools/tools_utils.ml
|
||||
index 23f16c51..1ff72ff3 100644
|
||||
--- a/common/mltools/tools_utils.ml
|
||||
+++ b/common/mltools/tools_utils.ml
|
||||
@@ -737,11 +737,21 @@ let run_in_guest_command g root ?logfile ?incompatible_fn cmd =
|
||||
(* Is the host_cpu compatible with the guest arch? ie. Can we
|
||||
* run commands in this guest?
|
||||
*)
|
||||
+ let guest_os = g#inspect_get_type root in
|
||||
+ let guest_os_compatible =
|
||||
+ String.is_prefix Guestfs_config.host_os "linux" &&
|
||||
+ guest_os = "linux" in
|
||||
let guest_arch = g#inspect_get_arch root in
|
||||
let guest_arch_compatible = guest_arch_compatible guest_arch in
|
||||
- if not guest_arch_compatible then (
|
||||
+ if not guest_os_compatible || not guest_arch_compatible then (
|
||||
match incompatible_fn with
|
||||
- | None -> ()
|
||||
+ | None ->
|
||||
+ error (f_"host (%s/%s) and guest (%s/%s) are not compatible, \
|
||||
+ so you cannot use command line options that involve \
|
||||
+ running commands in the guest. Use --firstboot scripts \
|
||||
+ instead.")
|
||||
+ Guestfs_config.host_os Guestfs_config.host_cpu
|
||||
+ guest_os guest_arch
|
||||
| Some fn -> fn ()
|
||||
)
|
||||
else (
|
||||
diff --git a/common/mltools/tools_utils.mli b/common/mltools/tools_utils.mli
|
||||
index 193ba7b6..4d627676 100644
|
||||
--- a/common/mltools/tools_utils.mli
|
||||
+++ b/common/mltools/tools_utils.mli
|
||||
@@ -233,9 +233,15 @@ val with_timeout : string -> int -> ?sleep:int -> (unit -> 'a option) -> 'a
|
||||
val run_in_guest_command : Guestfs.guestfs -> string -> ?logfile:string -> ?incompatible_fn:(unit -> unit) -> string -> unit
|
||||
(** [run_in_guest_command g root ?incompatible_archs_fn cmd]
|
||||
runs a command in the guest, which is already mounted for the
|
||||
- specified [root]. The command is run directly in case the
|
||||
- architecture of the host and the guest are compatible, optionally
|
||||
- calling [?incompatible_fn] in case they are not.
|
||||
+ specified [root].
|
||||
+
|
||||
+ The command is run directly in the case that the host and guest
|
||||
+ are compatible.
|
||||
+
|
||||
+ If they are not compatible, the command is not run and an error
|
||||
+ is printed. However you can override the error by setting
|
||||
+ [?incompatible_fn], which is called so you can do something else
|
||||
+ (like install a firstboot script).
|
||||
|
||||
[?logfile] is an optional file in the guest to where redirect
|
||||
stdout and stderr of the command. *)
|
||||
diff --git a/common/mlv2v/Makefile.am b/common/mlv2v/Makefile.am
|
||||
deleted file mode 100644
|
||||
index 945f9813..00000000
|
||||
--- a/common/mlv2v/Makefile.am
|
||||
+++ /dev/null
|
||||
@@ -1,91 +0,0 @@
|
||||
-# libguestfs OCaml virt-v2v generated code
|
||||
-# Copyright (C) 2011-2019 Red Hat Inc.
|
||||
-#
|
||||
-# This program is free software; you can redistribute it and/or modify
|
||||
-# it under the terms of the GNU General Public License as published by
|
||||
-# the Free Software Foundation; either version 2 of the License, or
|
||||
-# (at your option) any later version.
|
||||
-#
|
||||
-# This program is distributed in the hope that it will be useful,
|
||||
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
-# GNU General Public License for more details.
|
||||
-#
|
||||
-# You should have received a copy of the GNU General Public License
|
||||
-# along with this program; if not, write to the Free Software
|
||||
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
-
|
||||
-include $(top_srcdir)/subdir-rules.mk
|
||||
-
|
||||
-EXTRA_DIST = \
|
||||
- $(generator_built) \
|
||||
- $(SOURCES_MLI) \
|
||||
- $(SOURCES_ML) \
|
||||
- $(SOURCES_C)
|
||||
-
|
||||
-generator_built = \
|
||||
- uefi.mli \
|
||||
- uefi.ml
|
||||
-
|
||||
-SOURCES_MLI = \
|
||||
- uefi.mli
|
||||
-
|
||||
-SOURCES_ML = \
|
||||
- uefi.ml
|
||||
-
|
||||
-SOURCES_C = \
|
||||
- dummy.c
|
||||
-
|
||||
-# We pretend that we're building a C library. automake handles the
|
||||
-# compilation of the C sources for us. At the end we take the C
|
||||
-# objects and OCaml objects and link them into the OCaml library.
|
||||
-# This C library is never used.
|
||||
-
|
||||
-noinst_LIBRARIES = libmlv2v.a
|
||||
-
|
||||
-if !HAVE_OCAMLOPT
|
||||
-MLV2V_CMA = mlv2v.cma
|
||||
-else
|
||||
-MLV2V_CMA = mlv2v.cmxa
|
||||
-endif
|
||||
-
|
||||
-noinst_DATA = $(MLV2V_CMA)
|
||||
-
|
||||
-libmlv2v_a_SOURCES = $(SOURCES_C)
|
||||
-libmlv2v_a_CPPFLAGS = \
|
||||
- -DCAML_NAME_SPACE \
|
||||
- -I. \
|
||||
- -I$(top_builddir) \
|
||||
- -I$(shell $(OCAMLC) -where)
|
||||
-libmlv2v_a_CFLAGS = \
|
||||
- $(WARN_CFLAGS) $(WERROR_CFLAGS) \
|
||||
- -fPIC
|
||||
-
|
||||
-BOBJECTS = $(SOURCES_ML:.ml=.cmo)
|
||||
-XOBJECTS = $(BOBJECTS:.cmo=.cmx)
|
||||
-
|
||||
-OCAMLPACKAGES = \
|
||||
- -package str,unix \
|
||||
- -I $(builddir)
|
||||
-OCAMLPACKAGES_TESTS = $(MLV2V_CMA)
|
||||
-
|
||||
-OCAMLFLAGS = $(OCAML_FLAGS) $(OCAML_WARN_ERROR) -ccopt '$(CFLAGS)'
|
||||
-
|
||||
-if !HAVE_OCAMLOPT
|
||||
-OBJECTS = $(BOBJECTS)
|
||||
-else
|
||||
-OBJECTS = $(XOBJECTS)
|
||||
-endif
|
||||
-
|
||||
-libmlv2v_a_DEPENDENCIES = $(OBJECTS)
|
||||
-
|
||||
-$(MLV2V_CMA): $(OBJECTS) libmlv2v.a
|
||||
- $(OCAMLFIND) mklib $(OCAMLPACKAGES) \
|
||||
- $(OBJECTS) $(libmlv2v_a_OBJECTS) -o mlv2v
|
||||
-
|
||||
-# OCaml dependencies.
|
||||
-.depend: $(srcdir)/*.mli $(srcdir)/*.ml
|
||||
- $(top_builddir)/ocaml-dep.sh $^
|
||||
--include .depend
|
||||
-
|
||||
-.PHONY: docs
|
||||
diff --git a/common/mlv2v/dummy.c b/common/mlv2v/dummy.c
|
||||
deleted file mode 100644
|
||||
index ebab6198..00000000
|
||||
--- a/common/mlv2v/dummy.c
|
||||
+++ /dev/null
|
||||
@@ -1,2 +0,0 @@
|
||||
-/* Dummy source, to be used for OCaml-based tools with no C sources. */
|
||||
-enum { foo = 1 };
|
||||
diff --git a/common/mlv2v/uefi.ml b/common/mlv2v/uefi.ml
|
||||
deleted file mode 100644
|
||||
index 7a2610f2..00000000
|
||||
--- a/common/mlv2v/uefi.ml
|
||||
+++ /dev/null
|
||||
@@ -1,71 +0,0 @@
|
||||
-(* libguestfs generated file
|
||||
- * WARNING: THIS FILE IS GENERATED
|
||||
- * from the code in the generator/ subdirectory.
|
||||
- * ANY CHANGES YOU MAKE TO THIS FILE WILL BE LOST.
|
||||
- *
|
||||
- * Copyright (C) 2009-2023 Red Hat Inc.
|
||||
- *
|
||||
- * This program is free software; you can redistribute it and/or modify
|
||||
- * it under the terms of the GNU General Public License as published by
|
||||
- * the Free Software Foundation; either version 2 of the License, or
|
||||
- * (at your option) any later version.
|
||||
- *
|
||||
- * This program is distributed in the hope that it will be useful,
|
||||
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
- * GNU General Public License for more details.
|
||||
- *
|
||||
- * You should have received a copy of the GNU General Public License along
|
||||
- * with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
- *)
|
||||
-
|
||||
-type uefi_firmware = {
|
||||
- code : string;
|
||||
- code_debug : string option;
|
||||
- vars : string;
|
||||
- flags : uefi_flags;
|
||||
-}
|
||||
-and uefi_flags = uefi_flag list
|
||||
-and uefi_flag = UEFI_FLAG_SECURE_BOOT_REQUIRED
|
||||
-
|
||||
-let uefi_aarch64_firmware = [
|
||||
- { code = "/usr/share/AAVMF/AAVMF_CODE.fd";
|
||||
- code_debug = Some "/usr/share/AAVMF/AAVMF_CODE.verbose.fd";
|
||||
- vars = "/usr/share/AAVMF/AAVMF_VARS.fd";
|
||||
- flags = [];
|
||||
- };
|
||||
- { code = "/usr/share/edk2/aarch64/QEMU_EFI-pflash.raw";
|
||||
- code_debug = None;
|
||||
- vars = "/usr/share/edk2/aarch64/vars-template-pflash.raw";
|
||||
- flags = [];
|
||||
- };
|
||||
-]
|
||||
-
|
||||
-let uefi_x86_64_firmware = [
|
||||
- { code = "/usr/share/OVMF/OVMF_CODE.fd";
|
||||
- code_debug = None;
|
||||
- vars = "/usr/share/OVMF/OVMF_VARS.fd";
|
||||
- flags = [];
|
||||
- };
|
||||
- { code = "/usr/share/OVMF/OVMF_CODE.secboot.fd";
|
||||
- code_debug = None;
|
||||
- vars = "/usr/share/OVMF/OVMF_VARS.fd";
|
||||
- flags = [UEFI_FLAG_SECURE_BOOT_REQUIRED];
|
||||
- };
|
||||
- { code = "/usr/share/edk2/ovmf/OVMF_CODE.fd";
|
||||
- code_debug = None;
|
||||
- vars = "/usr/share/edk2/ovmf/OVMF_VARS.fd";
|
||||
- flags = [];
|
||||
- };
|
||||
- { code = "/usr/share/edk2/ovmf/OVMF_CODE.secboot.fd";
|
||||
- code_debug = None;
|
||||
- vars = "/usr/share/edk2/ovmf/OVMF_VARS.fd";
|
||||
- flags = [UEFI_FLAG_SECURE_BOOT_REQUIRED];
|
||||
- };
|
||||
- { code = "/usr/share/qemu/ovmf-x86_64-code.bin";
|
||||
- code_debug = None;
|
||||
- vars = "/usr/share/qemu/ovmf-x86_64-vars.bin";
|
||||
- flags = [];
|
||||
- };
|
||||
-]
|
||||
diff --git a/common/mlv2v/uefi.mli b/common/mlv2v/uefi.mli
|
||||
deleted file mode 100644
|
||||
index 33789979..00000000
|
||||
--- a/common/mlv2v/uefi.mli
|
||||
+++ /dev/null
|
||||
@@ -1,35 +0,0 @@
|
||||
-(* libguestfs generated file
|
||||
- * WARNING: THIS FILE IS GENERATED
|
||||
- * from the code in the generator/ subdirectory.
|
||||
- * ANY CHANGES YOU MAKE TO THIS FILE WILL BE LOST.
|
||||
- *
|
||||
- * Copyright (C) 2009-2023 Red Hat Inc.
|
||||
- *
|
||||
- * This program is free software; you can redistribute it and/or modify
|
||||
- * it under the terms of the GNU General Public License as published by
|
||||
- * the Free Software Foundation; either version 2 of the License, or
|
||||
- * (at your option) any later version.
|
||||
- *
|
||||
- * This program is distributed in the hope that it will be useful,
|
||||
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
- * GNU General Public License for more details.
|
||||
- *
|
||||
- * You should have received a copy of the GNU General Public License along
|
||||
- * with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
- *)
|
||||
-
|
||||
-(** UEFI paths. *)
|
||||
-
|
||||
-type uefi_firmware = {
|
||||
- code : string; (** code file *)
|
||||
- code_debug : string option; (** code debug file *)
|
||||
- vars : string; (** vars template file *)
|
||||
- flags : uefi_flags; (** flags *)
|
||||
-}
|
||||
-and uefi_flags = uefi_flag list
|
||||
-and uefi_flag = UEFI_FLAG_SECURE_BOOT_REQUIRED
|
||||
-
|
||||
-val uefi_aarch64_firmware : uefi_firmware list
|
||||
-val uefi_x86_64_firmware : uefi_firmware list
|
||||
diff --git a/common/qemuopts/qemuopts.c b/common/qemuopts/qemuopts.c
|
||||
index b12fe38f..7dd9136d 100644
|
||||
--- a/common/qemuopts/qemuopts.c
|
||||
+++ b/common/qemuopts/qemuopts.c
|
||||
@@ -76,13 +76,14 @@ enum qopt_type {
|
||||
QOPT_FLAG,
|
||||
QOPT_ARG,
|
||||
QOPT_ARG_NOQUOTE,
|
||||
+ QOPT_RAW,
|
||||
QOPT_ARG_LIST,
|
||||
};
|
||||
|
||||
struct qopt {
|
||||
enum qopt_type type;
|
||||
char *flag; /* eg. "-m" */
|
||||
- char *value; /* Value, for QOPT_ARG, QOPT_ARG_NOQUOTE. */
|
||||
+ char *value; /* Value, for QOPT_ARG, QOPT_ARG_NOQUOTE, QOPT_RAW */
|
||||
char **values; /* List of values, for QOPT_ARG_LIST. */
|
||||
};
|
||||
|
||||
@@ -353,6 +354,27 @@ qemuopts_add_arg_noquote (struct qemuopts *qopts, const char *flag,
|
||||
return 0;
|
||||
}
|
||||
|
||||
+int
|
||||
+qemuopts_add_raw (struct qemuopts *qopts, const char *str)
|
||||
+{
|
||||
+ struct qopt *qopt;
|
||||
+ char *value_copy;
|
||||
+
|
||||
+ value_copy = strdup (str);
|
||||
+ if (value_copy == NULL)
|
||||
+ return -1;
|
||||
+
|
||||
+ if ((qopt = extend_options (qopts)) == NULL) {
|
||||
+ free (value_copy);
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ qopt->type = QOPT_RAW;
|
||||
+ qopt->value = value_copy;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
/**
|
||||
* Start an argument that takes a comma-separated list of fields.
|
||||
*
|
||||
@@ -724,6 +746,12 @@ qemuopts_to_channel (struct qemuopts *qopts, FILE *fp)
|
||||
shell_and_comma_quote (qopts->options[i].values[j], fp);
|
||||
}
|
||||
break;
|
||||
+
|
||||
+ case QOPT_RAW:
|
||||
+ fprintf (fp, "%s%s",
|
||||
+ nl, qopts->options[i].value);
|
||||
+ break;
|
||||
+
|
||||
}
|
||||
}
|
||||
fputc ('\n', fp);
|
||||
@@ -769,6 +797,12 @@ qemuopts_to_argv (struct qemuopts *qopts)
|
||||
case QOPT_ARG:
|
||||
case QOPT_ARG_LIST:
|
||||
n += 2;
|
||||
+ break;
|
||||
+
|
||||
+ /* Raw is incompatible with using argv. */
|
||||
+ case QOPT_RAW:
|
||||
+ errno = EINVAL;
|
||||
+ return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -845,6 +879,10 @@ qemuopts_to_argv (struct qemuopts *qopts)
|
||||
}
|
||||
ret[n][len] = '\0';
|
||||
n++;
|
||||
+ break;
|
||||
+
|
||||
+ case QOPT_RAW:
|
||||
+ abort ();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -924,7 +962,8 @@ qemuopts_to_config_channel (struct qemuopts *qopts, FILE *fp)
|
||||
return -1;
|
||||
|
||||
case QOPT_ARG_NOQUOTE:
|
||||
- /* arg_noquote is incompatible with this function. */
|
||||
+ case QOPT_RAW:
|
||||
+ /* arg_noquote and raw are incompatible with this function. */
|
||||
errno = EINVAL;
|
||||
return -1;
|
||||
|
||||
@@ -960,6 +999,7 @@ qemuopts_to_config_channel (struct qemuopts *qopts, FILE *fp)
|
||||
case QOPT_FLAG:
|
||||
case QOPT_ARG_NOQUOTE:
|
||||
case QOPT_ARG:
|
||||
+ case QOPT_RAW:
|
||||
abort ();
|
||||
|
||||
case QOPT_ARG_LIST:
|
||||
diff --git a/common/qemuopts/qemuopts.h b/common/qemuopts/qemuopts.h
|
||||
index 08efcd9a..29f81475 100644
|
||||
--- a/common/qemuopts/qemuopts.h
|
||||
+++ b/common/qemuopts/qemuopts.h
|
||||
@@ -31,6 +31,7 @@ extern int qemuopts_add_flag (struct qemuopts *qopts, const char *flag);
|
||||
extern int qemuopts_add_arg (struct qemuopts *qopts, const char *flag, const char *value);
|
||||
extern int qemuopts_add_arg_format (struct qemuopts *qopts, const char *flag, const char *fs, ...) __attribute__((format (printf,3,4)));
|
||||
extern int qemuopts_add_arg_noquote (struct qemuopts *qopts, const char *flag, const char *value);
|
||||
+extern int qemuopts_add_raw (struct qemuopts *qopts, const char *str);
|
||||
extern int qemuopts_start_arg_list (struct qemuopts *qopts, const char *flag);
|
||||
extern int qemuopts_append_arg_list (struct qemuopts *qopts, const char *value);
|
||||
extern int qemuopts_append_arg_list_format (struct qemuopts *qopts, const char *fs, ...) __attribute__((format (printf,2,3)));
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 0c8473bd..8d6a506b 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -137,7 +137,6 @@ AC_CONFIG_FILES([Makefile
|
||||
common/mlstdutils/guestfs_config.ml
|
||||
common/mltools/Makefile
|
||||
common/mlutils/Makefile
|
||||
- common/mlv2v/Makefile
|
||||
common/mlxml/Makefile
|
||||
common/qemuopts/Makefile
|
||||
common/utils/Makefile
|
||||
diff --git a/convert/Makefile.am b/convert/Makefile.am
|
||||
index 2d34fe7c..2809c555 100644
|
||||
--- a/convert/Makefile.am
|
||||
+++ b/convert/Makefile.am
|
||||
@@ -83,7 +83,6 @@ OCAMLPACKAGES = \
|
||||
-I $(top_builddir)/common/mlpcre \
|
||||
-I $(top_builddir)/common/mltools \
|
||||
-I $(top_builddir)/common/mldrivers \
|
||||
- -I $(top_builddir)/common/mlv2v \
|
||||
-I $(top_builddir)/common/mlxml
|
||||
if HAVE_OCAML_PKG_GETTEXT
|
||||
OCAMLPACKAGES += -package gettext-stub
|
||||
@@ -113,7 +112,6 @@ OCAMLLINKFLAGS = \
|
||||
mltools.$(MLARCHIVE) \
|
||||
mlcustomize.$(MLARCHIVE) \
|
||||
mldrivers.$(MLARCHIVE) \
|
||||
- mlv2v.$(MLARCHIVE) \
|
||||
mlv2vlib.$(MLARCHIVE) \
|
||||
$(LINK_CUSTOM_OCAMLC_ONLY)
|
||||
|
||||
diff --git a/in-place/Makefile.am b/in-place/Makefile.am
|
||||
index 2217ff40..2fecb3a7 100644
|
||||
--- a/in-place/Makefile.am
|
||||
+++ b/in-place/Makefile.am
|
||||
@@ -64,8 +64,7 @@ OCAMLPACKAGES = \
|
||||
-I $(top_builddir)/common/mlxml \
|
||||
-I $(top_builddir)/common/mltools \
|
||||
-I $(top_builddir)/common/mlcustomize \
|
||||
- -I $(top_builddir)/common/mldrivers \
|
||||
- -I $(top_builddir)/common/mlv2v
|
||||
+ -I $(top_builddir)/common/mldrivers
|
||||
if HAVE_OCAML_PKG_GETTEXT
|
||||
OCAMLPACKAGES += -package gettext-stub
|
||||
endif
|
||||
@@ -101,7 +100,6 @@ OCAMLLINKFLAGS = \
|
||||
mllibvirt.$(MLARCHIVE) \
|
||||
mlcustomize.$(MLARCHIVE) \
|
||||
mldrivers.$(MLARCHIVE) \
|
||||
- mlv2v.$(MLARCHIVE) \
|
||||
mlv2vlib.$(MLARCHIVE) \
|
||||
mlconvert.$(MLARCHIVE) \
|
||||
mlinput.$(MLARCHIVE) \
|
||||
diff --git a/input/Makefile.am b/input/Makefile.am
|
||||
index 2f4ceb0c..0b97074a 100644
|
||||
--- a/input/Makefile.am
|
||||
+++ b/input/Makefile.am
|
||||
@@ -102,7 +102,6 @@ OCAMLPACKAGES = \
|
||||
-I $(top_builddir)/common/mlgettext \
|
||||
-I $(top_builddir)/common/mlpcre \
|
||||
-I $(top_builddir)/common/mltools \
|
||||
- -I $(top_builddir)/common/mlv2v \
|
||||
-I $(top_builddir)/common/mlxml
|
||||
if HAVE_OCAML_PKG_GETTEXT
|
||||
OCAMLPACKAGES += -package gettext-stub
|
||||
@@ -130,7 +129,6 @@ OCAMLLINKFLAGS = \
|
||||
mlxml.$(MLARCHIVE) \
|
||||
mltools.$(MLARCHIVE) \
|
||||
mllibvirt.$(MLARCHIVE) \
|
||||
- mlv2v.$(MLARCHIVE) \
|
||||
mlv2vlib.$(MLARCHIVE) \
|
||||
$(LINK_CUSTOM_OCAMLC_ONLY)
|
||||
|
||||
diff --git a/inspector/Makefile.am b/inspector/Makefile.am
|
||||
index 51ac71f9..172b2dc0 100644
|
||||
--- a/inspector/Makefile.am
|
||||
+++ b/inspector/Makefile.am
|
||||
@@ -64,8 +64,7 @@ OCAMLPACKAGES = \
|
||||
-I $(top_builddir)/common/mlxml \
|
||||
-I $(top_builddir)/common/mltools \
|
||||
-I $(top_builddir)/common/mlcustomize \
|
||||
- -I $(top_builddir)/common/mldrivers \
|
||||
- -I $(top_builddir)/common/mlv2v
|
||||
+ -I $(top_builddir)/common/mldrivers
|
||||
if HAVE_OCAML_PKG_GETTEXT
|
||||
OCAMLPACKAGES += -package gettext-stub
|
||||
endif
|
||||
@@ -101,7 +100,6 @@ OCAMLLINKFLAGS = \
|
||||
mllibvirt.$(MLARCHIVE) \
|
||||
mlcustomize.$(MLARCHIVE) \
|
||||
mldrivers.$(MLARCHIVE) \
|
||||
- mlv2v.$(MLARCHIVE) \
|
||||
mlv2vlib.$(MLARCHIVE) \
|
||||
mlconvert.$(MLARCHIVE) \
|
||||
mlinput.$(MLARCHIVE) \
|
||||
diff --git a/lib/Makefile.am b/lib/Makefile.am
|
||||
index a8776019..5cec771c 100644
|
||||
--- a/lib/Makefile.am
|
||||
+++ b/lib/Makefile.am
|
||||
@@ -87,7 +87,6 @@ OCAMLPACKAGES = \
|
||||
-I $(top_builddir)/common/mlstdutils \
|
||||
-I $(top_builddir)/common/mltools \
|
||||
-I $(top_builddir)/common/mlutils \
|
||||
- -I $(top_builddir)/common/mlv2v \
|
||||
-I $(top_builddir)/common/mlxml
|
||||
OCAMLPACKAGES_TESTS = $(MLV2VLIB_CMA)
|
||||
|
||||
diff --git a/lib/utils.ml b/lib/utils.ml
|
||||
index 4c9b7415..c4cfd89b 100644
|
||||
--- a/lib/utils.ml
|
||||
+++ b/lib/utils.ml
|
||||
@@ -69,26 +69,6 @@ let qemu_supports_sound_card = function
|
||||
| Types.USBAudio
|
||||
-> false
|
||||
|
||||
-(* Find the UEFI firmware. *)
|
||||
-let find_uefi_firmware guest_arch =
|
||||
- let files =
|
||||
- (* The lists of firmware are actually defined in common/utils/uefi.c. *)
|
||||
- match guest_arch with
|
||||
- | "x86_64" -> Uefi.uefi_x86_64_firmware
|
||||
- | "aarch64" -> Uefi.uefi_aarch64_firmware
|
||||
- | arch ->
|
||||
- error (f_"don’t know how to convert UEFI guests for architecture %s")
|
||||
- guest_arch in
|
||||
- let rec loop = function
|
||||
- | [] ->
|
||||
- error (f_"cannot find firmware for UEFI guests.\n\nYou probably \
|
||||
- need to install OVMF (x86-64), or AAVMF (aarch64)")
|
||||
- | ({ Uefi.code; vars = vars_template } as ret) :: rest ->
|
||||
- if Sys.file_exists code && Sys.file_exists vars_template then ret
|
||||
- else loop rest
|
||||
- in
|
||||
- loop files
|
||||
-
|
||||
let compare_app2_versions app1 app2 =
|
||||
let i = compare app1.Guestfs.app2_epoch app2.Guestfs.app2_epoch in
|
||||
if i <> 0 then i
|
||||
diff --git a/lib/utils.mli b/lib/utils.mli
|
||||
index 46d05306..afe61a4e 100644
|
||||
--- a/lib/utils.mli
|
||||
+++ b/lib/utils.mli
|
||||
@@ -36,10 +36,6 @@ val kvm_arch : string -> string
|
||||
val qemu_supports_sound_card : Types.source_sound_model -> bool
|
||||
(** Does qemu support the given sound card? *)
|
||||
|
||||
-val find_uefi_firmware : string -> Uefi.uefi_firmware
|
||||
-(** Find the UEFI firmware for the guest architecture.
|
||||
- This cannot return an error, it calls [error] and fails instead. *)
|
||||
-
|
||||
val compare_app2_versions : Guestfs.application2 -> Guestfs.application2 -> int
|
||||
(** Compare two app versions. *)
|
||||
|
||||
diff --git a/ocaml-dep.sh.in b/ocaml-dep.sh.in
|
||||
index 7f3130e5..565f880f 100755
|
||||
--- a/ocaml-dep.sh.in
|
||||
+++ b/ocaml-dep.sh.in
|
||||
@@ -41,7 +41,6 @@ common/mlprogress
|
||||
common/mlstdutils
|
||||
common/mltools
|
||||
common/mlutils
|
||||
-common/mlv2v
|
||||
common/mlvisit
|
||||
common/mlxml
|
||||
lib
|
||||
diff --git a/output/Makefile.am b/output/Makefile.am
|
||||
index 09638c25..e71891eb 100644
|
||||
--- a/output/Makefile.am
|
||||
+++ b/output/Makefile.am
|
||||
@@ -107,7 +107,6 @@ OCAMLPACKAGES = \
|
||||
-I $(top_builddir)/common/mlgettext \
|
||||
-I $(top_builddir)/common/mlpcre \
|
||||
-I $(top_builddir)/common/mltools \
|
||||
- -I $(top_builddir)/common/mlv2v \
|
||||
-I $(top_builddir)/common/mlxml
|
||||
if HAVE_OCAML_PKG_GETTEXT
|
||||
OCAMLPACKAGES += -package gettext-stub
|
||||
@@ -138,7 +137,6 @@ OCAMLLINKFLAGS = \
|
||||
mlxml.$(MLARCHIVE) \
|
||||
mltools.$(MLARCHIVE) \
|
||||
mllibvirt.$(MLARCHIVE) \
|
||||
- mlv2v.$(MLARCHIVE) \
|
||||
mlv2vlib.$(MLARCHIVE) \
|
||||
$(LINK_CUSTOM_OCAMLC_ONLY)
|
||||
|
||||
diff --git a/output/output_qemu.ml b/output/output_qemu.ml
|
||||
index b6f24565..fd0182d6 100644
|
||||
--- a/output/output_qemu.ml
|
||||
+++ b/output/output_qemu.ml
|
||||
@@ -105,30 +105,56 @@ module QEMU = struct
|
||||
|
||||
let { guestcaps; target_buses; target_firmware } = target_meta in
|
||||
|
||||
+ (* Start the shell script. Write it to a temporary file
|
||||
+ * which we rename at the end.
|
||||
+ *)
|
||||
let file = output_storage // output_name ^ ".sh" in
|
||||
+ let tmpfile = file ^ ".tmp" in
|
||||
+ On_exit.unlink tmpfile;
|
||||
|
||||
- let uefi_firmware =
|
||||
- match target_firmware with
|
||||
- | TargetBIOS -> None
|
||||
- | TargetUEFI -> Some (find_uefi_firmware guestcaps.gcaps_arch) in
|
||||
- let machine, secure_boot_required =
|
||||
- match guestcaps.gcaps_machine, uefi_firmware with
|
||||
- | _, Some { Uefi.flags }
|
||||
- when List.mem Uefi.UEFI_FLAG_SECURE_BOOT_REQUIRED flags ->
|
||||
- (* Force machine type to Q35 because PC does not support
|
||||
- * secure boot. We must remove this when we get the
|
||||
- * correct machine type from libosinfo in future. XXX
|
||||
- *)
|
||||
- Q35, true
|
||||
- | machine, _ ->
|
||||
- machine, false in
|
||||
- let smm = secure_boot_required in
|
||||
+ let chan = open_out tmpfile in
|
||||
+ let fpf fs = fprintf chan fs in
|
||||
+ fpf "#!/bin/sh -\n";
|
||||
+ fpf "\n";
|
||||
|
||||
- let machine_str =
|
||||
- match machine with
|
||||
- | I440FX -> "pc"
|
||||
- | Q35 -> "q35"
|
||||
- | Virt -> "virt" in
|
||||
+ (* Allow the user to override our choice of machine type. *)
|
||||
+ let () =
|
||||
+ let machine_str =
|
||||
+ match guestcaps.gcaps_machine with
|
||||
+ | I440FX -> "pc"
|
||||
+ | Q35 -> "q35"
|
||||
+ | Virt -> "virt" in
|
||||
+ fpf "machine=%s\n" machine_str;
|
||||
+ fpf "\n" in
|
||||
+
|
||||
+ (* If the firmware is UEFI, locate the OVMF files. *)
|
||||
+ (match target_firmware with
|
||||
+ | TargetBIOS -> ()
|
||||
+ | TargetUEFI ->
|
||||
+ let prefix =
|
||||
+ match guestcaps.gcaps_arch with
|
||||
+ | "x86_64" ->
|
||||
+ fpf "uefi_dir=/usr/share/OVMF\n"; "OVMF"
|
||||
+ | "aarch64" ->
|
||||
+ fpf "uefi_dir=/usr/share/AAVMF\n"; "AAVMF"
|
||||
+ | arch ->
|
||||
+ error (f_"don’t know how to convert UEFI guests \
|
||||
+ for architecture %s")
|
||||
+ arch in
|
||||
+ fpf "uefi_code=\"$( \
|
||||
+ find $uefi_dir -name '%s_CODE*.fd' -print -quit )\"\n"
|
||||
+ prefix;
|
||||
+ fpf "uefi_vars_template=\"$( \
|
||||
+ find $uefi_dir -name '%s_VARS.fd' -print -quit )\"\n"
|
||||
+ prefix;
|
||||
+ fpf "\n";
|
||||
+ fpf "# Make a copy of the UEFI variables template\n";
|
||||
+ fpf "uefi_vars=\"$(mktemp)\"\n";
|
||||
+ fpf "cp \"$uefi_vars_template\" \"$uefi_vars\"\n";
|
||||
+ fpf "\n";
|
||||
+ fpf "# You may need to set this 'on' to use secure boot\n";
|
||||
+ fpf "smm=off\n";
|
||||
+ );
|
||||
|
||||
(* Construct the command line. Note that the [Qemuopts]
|
||||
* module deals with shell and qemu comma quoting.
|
||||
@@ -152,20 +178,17 @@ module QEMU = struct
|
||||
|
||||
if not guestcaps.gcaps_rtc_utc then arg "-rtc" "base=localtime";
|
||||
|
||||
- arg_list "-machine" (machine_str ::
|
||||
- (if smm then ["smm=on"] else []) @
|
||||
- ["accel=kvm:tcg"]);
|
||||
+ arg_noquote "-machine" "$machine${smm:+,smm=$smm},accel=kvm:tcg";
|
||||
|
||||
- (match uefi_firmware with
|
||||
- | None -> ()
|
||||
- | Some { Uefi.code } ->
|
||||
- if secure_boot_required then
|
||||
- arg_list "-global"
|
||||
- ["driver=cfi.pflash01"; "property=secure"; "value=on"];
|
||||
- arg_list "-drive"
|
||||
- ["if=pflash"; "format=raw"; "file=" ^ code; "readonly=on"];
|
||||
- arg_noquote "-drive" "if=pflash,format=raw,file=\"$uefi_vars\"";
|
||||
- );
|
||||
+ fpf "if [ \"$uefi_code\" != \"\" ]; then\n";
|
||||
+ fpf " uefi_args=\"\\\n";
|
||||
+ fpf " -global driver=cfi.pflash01,property=secure,value=$smm \\\n";
|
||||
+ fpf " -drive if=pflash,format=raw,file=$uefi_code,readonly=on \\\n";
|
||||
+ fpf " -drive if=pflash,format=raw,file=$uefi_vars \\\n";
|
||||
+ fpf " \"\n";
|
||||
+ fpf "fi\n";
|
||||
+ fpf "\n";
|
||||
+ Qemuopts.raw cmd "$uefi_args";
|
||||
|
||||
arg "-m" (Int64.to_string (source.s_memory /^ 1024L /^ 1024L));
|
||||
|
||||
@@ -209,7 +232,7 @@ module QEMU = struct
|
||||
Array.exists floppy_filter target_buses.target_floppy_bus in
|
||||
|
||||
if ide_ctrl_needed then (
|
||||
- match machine with
|
||||
+ match guestcaps.gcaps_machine with
|
||||
| I440FX -> ()
|
||||
(* The PC machine has a built-in controller of type "piix3-ide"
|
||||
* providing buses "ide.0" and "ide.1", with each bus fitting two
|
||||
@@ -232,7 +255,7 @@ module QEMU = struct
|
||||
arg_list "-device" [ "virtio-scsi-pci"; "id=scsi0" ];
|
||||
|
||||
if floppy_ctrl_needed then (
|
||||
- match machine with
|
||||
+ match guestcaps.gcaps_machine with
|
||||
| I440FX -> ()
|
||||
(* The PC machine has a built-in controller of type "isa-fdc"
|
||||
* providing bus "floppy-bus.0", fitting two devices.
|
||||
@@ -283,7 +306,7 @@ module QEMU = struct
|
||||
*)
|
||||
let backend_name = sprintf "drive-ide-%d" frontend_ctr
|
||||
and ide_bus, ide_unit =
|
||||
- match machine with
|
||||
+ match guestcaps.gcaps_machine with
|
||||
| I440FX -> frontend_ctr / 2, frontend_ctr mod 2
|
||||
| Q35 -> frontend_ctr, 0
|
||||
| Virt -> 0, 0 (* should never happen, see warning above *) in
|
||||
@@ -450,25 +473,13 @@ module QEMU = struct
|
||||
if inspect.i_type = "linux" then
|
||||
arg "-serial" "stdio";
|
||||
|
||||
- (* Write the qemu script. *)
|
||||
- with_open_out file (
|
||||
- fun chan ->
|
||||
- let fpf fs = fprintf chan fs in
|
||||
- fpf "#!/bin/sh -\n";
|
||||
- fpf "\n";
|
||||
-
|
||||
- (match uefi_firmware with
|
||||
- | None -> ()
|
||||
- | Some { Uefi.vars = vars_template } ->
|
||||
- fpf "# Make a copy of the UEFI variables template\n";
|
||||
- fpf "uefi_vars=\"$(mktemp)\"\n";
|
||||
- fpf "cp %s \"$uefi_vars\"\n" (quote vars_template);
|
||||
- fpf "\n"
|
||||
- );
|
||||
-
|
||||
- Qemuopts.to_chan cmd chan
|
||||
- );
|
||||
+ (* Write the qemu command. *)
|
||||
+ Qemuopts.to_chan cmd chan;
|
||||
|
||||
+ (* Finish off by renaming the temporary file to the final file
|
||||
+ * and making it executable.
|
||||
+ *)
|
||||
+ Unix.rename tmpfile file;
|
||||
Unix.chmod file 0o755;
|
||||
|
||||
(* If -oo qemu-boot option was specified then we should boot the guest. *)
|
||||
diff --git a/output/qemuopts-c.c b/output/qemuopts-c.c
|
||||
index 03c40206..1d080737 100644
|
||||
--- a/output/qemuopts-c.c
|
||||
+++ b/output/qemuopts-c.c
|
||||
@@ -176,6 +176,18 @@ guestfs_int_qemuopts_arg_list (value qoptsv, value flagv, value valuesv)
|
||||
CAMLreturn (Val_unit);
|
||||
}
|
||||
|
||||
+value
|
||||
+guestfs_int_qemuopts_raw (value qoptsv, value strv)
|
||||
+{
|
||||
+ CAMLparam2 (qoptsv, strv);
|
||||
+ struct qemuopts *qopts = Qopts_val (qoptsv);
|
||||
+
|
||||
+ if (qemuopts_add_raw (qopts, String_val (strv)) == -1)
|
||||
+ unix_error (errno, (char *) "qemuopts_add_raw", strv);
|
||||
+
|
||||
+ CAMLreturn (Val_unit);
|
||||
+}
|
||||
+
|
||||
value
|
||||
guestfs_int_qemuopts_to_script (value qoptsv, value strv)
|
||||
{
|
||||
diff --git a/output/qemuopts.ml b/output/qemuopts.ml
|
||||
index 1ba57dba..bc4e33d7 100644
|
||||
--- a/output/qemuopts.ml
|
||||
+++ b/output/qemuopts.ml
|
||||
@@ -25,6 +25,7 @@ external flag : t -> string -> unit = "guestfs_int_qemuopts_flag"
|
||||
external arg : t -> string -> string -> unit = "guestfs_int_qemuopts_arg"
|
||||
external arg_noquote : t -> string -> string -> unit = "guestfs_int_qemuopts_arg_noquote"
|
||||
external arg_list : t -> string -> string list -> unit = "guestfs_int_qemuopts_arg_list"
|
||||
+external raw : t -> string -> unit = "guestfs_int_qemuopts_raw"
|
||||
external to_script : t -> string -> unit = "guestfs_int_qemuopts_to_script"
|
||||
|
||||
external _to_chan : t -> Unix.file_descr -> unit = "guestfs_int_qemuopts_to_chan"
|
||||
diff --git a/output/qemuopts.mli b/output/qemuopts.mli
|
||||
index 5c39a32f..bd65405f 100644
|
||||
--- a/output/qemuopts.mli
|
||||
+++ b/output/qemuopts.mli
|
||||
@@ -53,6 +53,10 @@ val arg_list : t -> string -> string list -> unit
|
||||
|
||||
This does both qemu comma-quoting and shell-quoting as required. *)
|
||||
|
||||
+val raw : t -> string -> unit
|
||||
+(** [raw "stuff"] adds [stuff] to the command line completely
|
||||
+ unquoted. Use with care. *)
|
||||
+
|
||||
val to_script : t -> string -> unit
|
||||
(** [to_script t "./file.sh"] writes the resulting command line to
|
||||
a file. The file begins with [#!/bin/sh] and is chmod 0755. *)
|
||||
diff --git a/po/POTFILES-ml b/po/POTFILES-ml
|
||||
index e88a18b0..7f1d1cdb 100644
|
||||
--- a/po/POTFILES-ml
|
||||
+++ b/po/POTFILES-ml
|
||||
@@ -42,7 +42,6 @@ common/mltools/urandom.ml
|
||||
common/mltools/xpath_helpers.ml
|
||||
common/mlutils/c_utils.ml
|
||||
common/mlutils/unix_utils.ml
|
||||
-common/mlv2v/uefi.ml
|
||||
common/mlxml/xml.ml
|
||||
in-place/in_place.ml
|
||||
input/OVA.ml
|
||||
diff --git a/v2v/Makefile.am b/v2v/Makefile.am
|
||||
index d609ab02..9378eb89 100644
|
||||
--- a/v2v/Makefile.am
|
||||
+++ b/v2v/Makefile.am
|
||||
@@ -67,8 +67,7 @@ OCAMLPACKAGES = \
|
||||
-I $(top_builddir)/common/mlxml \
|
||||
-I $(top_builddir)/common/mltools \
|
||||
-I $(top_builddir)/common/mlcustomize \
|
||||
- -I $(top_builddir)/common/mldrivers \
|
||||
- -I $(top_builddir)/common/mlv2v
|
||||
+ -I $(top_builddir)/common/mldrivers
|
||||
if HAVE_OCAML_PKG_GETTEXT
|
||||
OCAMLPACKAGES += -package gettext-stub
|
||||
endif
|
||||
@@ -104,7 +103,6 @@ OCAMLLINKFLAGS = \
|
||||
mllibvirt.$(MLARCHIVE) \
|
||||
mlcustomize.$(MLARCHIVE) \
|
||||
mldrivers.$(MLARCHIVE) \
|
||||
- mlv2v.$(MLARCHIVE) \
|
||||
mlv2vlib.$(MLARCHIVE) \
|
||||
mlconvert.$(MLARCHIVE) \
|
||||
mlinput.$(MLARCHIVE) \
|
||||
@@ -164,7 +162,6 @@ v2v_unit_tests_DEPENDENCIES = \
|
||||
../common/mltools/mltools.$(MLARCHIVE) \
|
||||
../common/mlcustomize/mlcustomize.$(MLARCHIVE) \
|
||||
../common/mldrivers/mldrivers.$(MLARCHIVE) \
|
||||
- ../common/mlv2v/mlv2v.$(MLARCHIVE) \
|
||||
$(top_srcdir)/ocaml-link.sh
|
||||
v2v_unit_tests_LINK = \
|
||||
$(top_srcdir)/ocaml-link.sh -cclib '$(OCAMLCLIBS)' -- \
|
||||
@ -1,33 +0,0 @@
|
||||
From 6da3da6a74890e055a5f29d123632358c4fbd462 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Fri, 15 Nov 2024 14:04:48 +0000
|
||||
Subject: [PATCH] -o qemu: Add set -e, -x at the top of the output script
|
||||
|
||||
This adds:
|
||||
|
||||
set -e
|
||||
#set -x
|
||||
|
||||
The second command is commented so that users can enable it if they
|
||||
want to see the output.
|
||||
|
||||
(cherry picked from commit e09aaad7e787803ff5e383fa6b5276c888b42ef5)
|
||||
(cherry picked from commit f43d92473d3da0a5f6a2da6e44ca8416ad824d8f)
|
||||
---
|
||||
output/output_qemu.ml | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/output/output_qemu.ml b/output/output_qemu.ml
|
||||
index fd0182d6..b0c2ff01 100644
|
||||
--- a/output/output_qemu.ml
|
||||
+++ b/output/output_qemu.ml
|
||||
@@ -116,6 +116,9 @@ module QEMU = struct
|
||||
let fpf fs = fprintf chan fs in
|
||||
fpf "#!/bin/sh -\n";
|
||||
fpf "\n";
|
||||
+ fpf "set -e\n";
|
||||
+ fpf "#set -x\n";
|
||||
+ fpf "\n";
|
||||
|
||||
(* Allow the user to override our choice of machine type. *)
|
||||
let () =
|
||||
@ -1,277 +0,0 @@
|
||||
From de71ce60bff586dad2d554d3de344dd7d2d13c86 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Mon, 2 Dec 2024 15:22:43 +0000
|
||||
Subject: [PATCH] v2v: Implement --parallel=N for parallel disk copies
|
||||
|
||||
When set, run up to N copies of nbdcopy in parallel. This only
|
||||
applies for guests with multiple disks.
|
||||
|
||||
The default, as for all older versions of virt-v2v, is to copy disks
|
||||
one at a time.
|
||||
|
||||
(cherry picked from commit fd1148f79581b148525eb12154aef7603ccf0baa)
|
||||
(cherry picked from commit 037a603c2d5cf9d2d5f8157116dbf14945277dc2)
|
||||
---
|
||||
docs/virt-v2v.pod | 13 +++++++
|
||||
lib/utils.ml | 6 ++++
|
||||
lib/utils.mli | 4 +++
|
||||
tests/Makefile.am | 2 ++
|
||||
tests/test-v2v-i-disk-parallel.sh | 54 +++++++++++++++++++++++++++++
|
||||
v2v/v2v.ml | 56 +++++++++++++++++++++++++------
|
||||
6 files changed, 125 insertions(+), 10 deletions(-)
|
||||
create mode 100755 tests/test-v2v-i-disk-parallel.sh
|
||||
|
||||
diff --git a/docs/virt-v2v.pod b/docs/virt-v2v.pod
|
||||
index de92db84..f0857ebf 100644
|
||||
--- a/docs/virt-v2v.pod
|
||||
+++ b/docs/virt-v2v.pod
|
||||
@@ -556,6 +556,19 @@ The directory must exist.
|
||||
|
||||
For I<-o openstack>, this is the optional Cinder volume type.
|
||||
|
||||
+=item B<--parallel> N
|
||||
+
|
||||
+Enable parallel copying if the guest has multiple disks. I<N> is the
|
||||
+maximum number of parallel L<nbdcopy(1)> instances to run.
|
||||
+
|
||||
+The default is to run at most one instance of nbdcopy
|
||||
+(ie. I<--parallel=1>). All versions of virt-v2v E<le> 2.7.2 also did
|
||||
+disk copies one at a time.
|
||||
+
|
||||
+Within each guest disk, nbdcopy tries to copy in parallel if the
|
||||
+underlying endpoints support that. This is not affected by this
|
||||
+command line option. See the L<nbdcopy(1)> manual page for details.
|
||||
+
|
||||
=item B<--print-source>
|
||||
|
||||
Print information about the source guest and stop. This option is
|
||||
diff --git a/lib/utils.ml b/lib/utils.ml
|
||||
index c4cfd89b..f2da9e80 100644
|
||||
--- a/lib/utils.ml
|
||||
+++ b/lib/utils.ml
|
||||
@@ -29,6 +29,12 @@ let large_tmpdir =
|
||||
try Sys.getenv "VIRT_V2V_TMPDIR"
|
||||
with Not_found -> (open_guestfs ())#get_cachedir ()
|
||||
|
||||
+let string_of_process_status = function
|
||||
+ | Unix.WEXITED 0 -> s_"success"
|
||||
+ | WEXITED i -> sprintf (f_"exited with non-zero error code %d") i
|
||||
+ | WSIGNALED i -> sprintf (f_"signalled by signal %d") i
|
||||
+ | WSTOPPED i -> sprintf (f_"stopped by signal %d") i
|
||||
+
|
||||
(* Is SELinux enabled and enforcing on the host? *)
|
||||
let have_selinux =
|
||||
0 = Sys.command "getenforce 2>/dev/null | grep -isq Enforcing"
|
||||
diff --git a/lib/utils.mli b/lib/utils.mli
|
||||
index afe61a4e..e7ee13d1 100644
|
||||
--- a/lib/utils.mli
|
||||
+++ b/lib/utils.mli
|
||||
@@ -23,6 +23,10 @@ val large_tmpdir : string
|
||||
such as overlays in this directory. Small temporary files can
|
||||
use the default behaviour eg. of {!Filename.temp_file} *)
|
||||
|
||||
+val string_of_process_status : Unix.process_status -> string
|
||||
+(** Convert a process status (such as returned by {!Unix.wait}) into
|
||||
+ a printable string. *)
|
||||
+
|
||||
val have_selinux : bool
|
||||
(** True if SELinux is enabled and enforcing on the host. *)
|
||||
|
||||
diff --git a/tests/Makefile.am b/tests/Makefile.am
|
||||
index 2cf57248..0035262e 100644
|
||||
--- a/tests/Makefile.am
|
||||
+++ b/tests/Makefile.am
|
||||
@@ -74,6 +74,7 @@ TESTS = \
|
||||
test-v2v-cdrom.sh \
|
||||
test-v2v-floppy.sh \
|
||||
test-v2v-i-disk.sh \
|
||||
+ test-v2v-i-disk-parallel.sh \
|
||||
test-v2v-i-ova.sh \
|
||||
test-v2v-inspector.sh \
|
||||
test-v2v-mac.sh \
|
||||
@@ -185,6 +186,7 @@ EXTRA_DIST += \
|
||||
test-v2v-floppy.expected \
|
||||
test-v2v-floppy.sh \
|
||||
test-v2v-i-disk.sh \
|
||||
+ test-v2v-i-disk-parallel.sh \
|
||||
test-v2v-i-ova-as-root.ovf \
|
||||
test-v2v-i-ova-as-root.sh \
|
||||
test-v2v-i-ova-bad-sha1.sh \
|
||||
diff --git a/tests/test-v2v-i-disk-parallel.sh b/tests/test-v2v-i-disk-parallel.sh
|
||||
new file mode 100755
|
||||
index 00000000..a6470fdd
|
||||
--- /dev/null
|
||||
+++ b/tests/test-v2v-i-disk-parallel.sh
|
||||
@@ -0,0 +1,54 @@
|
||||
+#!/bin/bash -
|
||||
+# libguestfs virt-v2v test script
|
||||
+# Copyright (C) 2014-2024 Red Hat Inc.
|
||||
+#
|
||||
+# This program is free software; you can redistribute it and/or modify
|
||||
+# it under the terms of the GNU General Public License as published by
|
||||
+# the Free Software Foundation; either version 2 of the License, or
|
||||
+# (at your option) any later version.
|
||||
+#
|
||||
+# This program is distributed in the hope that it will be useful,
|
||||
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+# GNU General Public License for more details.
|
||||
+#
|
||||
+# You should have received a copy of the GNU General Public License
|
||||
+# along with this program; if not, write to the Free Software
|
||||
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
+
|
||||
+# Test --parallel option.
|
||||
+
|
||||
+set -e
|
||||
+
|
||||
+source ./functions.sh
|
||||
+set -e
|
||||
+set -x
|
||||
+
|
||||
+skip_if_skipped
|
||||
+windows=../test-data/phony-guests/windows.img
|
||||
+requires test -f $windows
|
||||
+
|
||||
+export VIRT_TOOLS_DATA_DIR="$srcdir/../test-data/fake-virt-tools"
|
||||
+
|
||||
+d=test-v2v-i-disk-parallel.d
|
||||
+rm -rf $d
|
||||
+cleanup_fn rm -rf $d
|
||||
+mkdir $d
|
||||
+
|
||||
+truncate -s $((100*1024*1024)) $d/disk-2.img $d/disk-3.img $d/disk-4.img
|
||||
+
|
||||
+$VG virt-v2v --debug-gc \
|
||||
+ --parallel=2 \
|
||||
+ -i disk \
|
||||
+ $windows \
|
||||
+ $d/disk-2.img \
|
||||
+ $d/disk-3.img \
|
||||
+ $d/disk-4.img \
|
||||
+ -o local -os $d
|
||||
+
|
||||
+# Test the libvirt XML metadata and output disks were created.
|
||||
+test -f $d/windows.xml
|
||||
+test -f $d/windows-sda
|
||||
+test -f $d/windows-sdb
|
||||
+test -f $d/windows-sdc
|
||||
+test -f $d/windows-sdd
|
||||
diff --git a/v2v/v2v.ml b/v2v/v2v.ml
|
||||
index 8be1e5cb..b7dbce3a 100644
|
||||
--- a/v2v/v2v.ml
|
||||
+++ b/v2v/v2v.ml
|
||||
@@ -79,6 +79,7 @@ let rec main () =
|
||||
)
|
||||
in
|
||||
|
||||
+ let parallel = ref 1 in
|
||||
let network_map = Networks.create () in
|
||||
let static_ips = ref [] in
|
||||
let rec add_network str =
|
||||
@@ -259,6 +260,8 @@ let rec main () =
|
||||
s_"Set output storage location";
|
||||
[ L"password-file" ], Getopt.String ("filename", set_string_option_once "-ip" input_password),
|
||||
s_"Same as ‘-ip filename’";
|
||||
+ [ L"parallel" ], Getopt.Set_int ("N", parallel),
|
||||
+ s_"Run up to N instances of nbdcopy in parallel";
|
||||
[ L"print-source" ], Getopt.Set print_source,
|
||||
s_"Print source and stop";
|
||||
[ L"root" ], Getopt.String ("ask|... ", set_root_choice),
|
||||
@@ -346,6 +349,7 @@ read the man page virt-v2v(1).
|
||||
| `Preallocated -> Types.Preallocated in
|
||||
let output_mode = !output_mode in
|
||||
let output_name = !output_name in
|
||||
+ let parallel = !parallel in
|
||||
let print_source = !print_source in
|
||||
let root_choice = !root_choice in
|
||||
let static_ips = !static_ips in
|
||||
@@ -365,6 +369,7 @@ read the man page virt-v2v(1).
|
||||
pr "mac-option\n";
|
||||
pr "bandwidth-option\n";
|
||||
pr "mac-ip-option\n";
|
||||
+ pr "parallel-option\n";
|
||||
pr "customize-ops\n";
|
||||
pr "input:disk\n";
|
||||
pr "input:libvirt\n";
|
||||
@@ -551,12 +556,15 @@ read the man page virt-v2v(1).
|
||||
else
|
||||
List.rev acc
|
||||
in
|
||||
- let disks = loop [] 0 in
|
||||
- let nr_disks = List.length disks in
|
||||
+ let disks = ref (loop [] 0) in
|
||||
+ let nr_disks = List.length !disks in
|
||||
|
||||
(* Copy the disks. *)
|
||||
- List.iter (
|
||||
- fun (i, input_socket, output_socket) ->
|
||||
+ let nbdcopy_pids = ref [] in
|
||||
+ let rec copy_loop () =
|
||||
+ if List.length !nbdcopy_pids < parallel && !disks <> [] then (
|
||||
+ (* Schedule another nbdcopy process. *)
|
||||
+ let i, input_socket, output_socket = List.pop_front disks in
|
||||
message (f_"Copying disk %d/%d") (i+1) nr_disks;
|
||||
|
||||
let request_size = Output_module.request_size
|
||||
@@ -576,8 +584,33 @@ read the man page virt-v2v(1).
|
||||
flush Stdlib.stderr
|
||||
);
|
||||
|
||||
- nbdcopy ?request_size output_alloc input_uri output_uri
|
||||
- ) disks;
|
||||
+ let pid = nbdcopy ?request_size output_alloc input_uri output_uri in
|
||||
+ List.push_front pid nbdcopy_pids;
|
||||
+
|
||||
+ copy_loop ();
|
||||
+ )
|
||||
+ else if !nbdcopy_pids <> [] then (
|
||||
+ (* Wait for one nbdcopy instance to exit. *)
|
||||
+ let pid, status = wait () in
|
||||
+ (* If this internal error turns up in real world scenarios then
|
||||
+ * we may need to change the [wait] above so it only waits on
|
||||
+ * the nbdcopy PIDs.
|
||||
+ *)
|
||||
+ if not (List.mem pid !nbdcopy_pids) then
|
||||
+ error (f_"internal error: wait returned unexpected \
|
||||
+ process ID %d status \"%s\"")
|
||||
+ pid (string_of_process_status status);
|
||||
+ nbdcopy_pids := List.filter ((<>) pid) !nbdcopy_pids;
|
||||
+ (match status with
|
||||
+ | WEXITED 0 -> copy_loop ()
|
||||
+ | WEXITED _ | WSIGNALED _ | WSTOPPED _ ->
|
||||
+ error "nbdcopy %s" (string_of_process_status status)
|
||||
+ );
|
||||
+ )
|
||||
+ in
|
||||
+ copy_loop ();
|
||||
+ assert (!disks == []);
|
||||
+ assert (!nbdcopy_pids == []);
|
||||
|
||||
(* End of copying phase. *)
|
||||
unlink (v2vdir // "copy");
|
||||
@@ -615,6 +648,7 @@ and check_host_free_space () =
|
||||
\"Minimum free space check in the host\".")
|
||||
large_tmpdir (human_size free_space)
|
||||
|
||||
+(* Start nbdcopy as a background process, returning the PID. *)
|
||||
and nbdcopy ?request_size output_alloc input_uri output_uri =
|
||||
(* XXX It's possible that some output modes know whether
|
||||
* --target-is-zero which would be a useful optimization.
|
||||
@@ -642,10 +676,12 @@ and nbdcopy ?request_size output_alloc input_uri output_uri =
|
||||
if not (quiet ()) then List.push_back cmd "--progress";
|
||||
if output_alloc = Types.Preallocated then List.push_back cmd "--allocated";
|
||||
|
||||
- let cmd = !cmd in
|
||||
-
|
||||
- if run_command cmd <> 0 then
|
||||
- error (f_"nbdcopy command failed, see earlier error messages")
|
||||
+ let args = Array.of_list !cmd in
|
||||
+ match fork () with
|
||||
+ | 0 ->
|
||||
+ (* Child process (nbdcopy). *)
|
||||
+ execvp "nbdcopy" args
|
||||
+ | pid -> pid
|
||||
|
||||
(* Run nbdinfo on a URI and collect the information. However don't
|
||||
* fail if nbdinfo is not installed since this is just used for debugging.
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,244 +0,0 @@
|
||||
From a661b06677d7fdd63b6e7315b759ded900f3a540 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Thu, 5 Dec 2024 15:19:15 +0000
|
||||
Subject: [PATCH] tests: Sort the tests into alphabetical order
|
||||
|
||||
The list of tests had grown organically over a very long time.
|
||||
|
||||
Also rename the "odd one out" rhbz* to test-rhbz*.
|
||||
|
||||
(cherry picked from commit d80c05a27098c6affaca4363372cae2354d9bc4f)
|
||||
(cherry picked from commit a9d2eb43fdd5f1d115cc5b048a4b252a533d72cd)
|
||||
---
|
||||
.gitignore | 2 +-
|
||||
configure.ac | 2 +-
|
||||
tests/Makefile.am | 58 +++++++++----------
|
||||
tests/rhbz1232192.xml | 26 +++++++++
|
||||
tests/{rhbz1232192.sh => test-rhbz1232192.sh} | 2 +-
|
||||
...1232192.xml.in => test-rhbz1232192.xml.in} | 0
|
||||
6 files changed, 58 insertions(+), 32 deletions(-)
|
||||
create mode 100644 tests/rhbz1232192.xml
|
||||
rename tests/{rhbz1232192.sh => test-rhbz1232192.sh} (95%)
|
||||
rename tests/{rhbz1232192.xml.in => test-rhbz1232192.xml.in} (100%)
|
||||
|
||||
diff --git a/.gitignore b/.gitignore
|
||||
index b8abc3f8..9dcd4611 100644
|
||||
--- a/.gitignore
|
||||
+++ b/.gitignore
|
||||
@@ -121,13 +121,13 @@ Makefile.in
|
||||
/test-data/phony-guests/windows-system
|
||||
/tests/functions.sh
|
||||
/tests/libvirt-is-version
|
||||
-/tests/rhbz1232192.xml
|
||||
/tests/test-cdrom.xml
|
||||
/tests/test-conversion-of-*.sh
|
||||
/tests/test-floppy.xml
|
||||
/tests/test-mac.xml
|
||||
/tests/test-networks-and-bridges.xml
|
||||
/tests/test-print-source.xml
|
||||
+/tests/test-rhbz1232192.xml
|
||||
/tests/test-sound.xml
|
||||
/tests/windows.vmdk
|
||||
/v2v/.depend
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 300b421e..623c634d 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -163,12 +163,12 @@ AC_CONFIG_FILES([Makefile
|
||||
test-data/phony-guests/guests.xml
|
||||
tests/functions.sh
|
||||
tests/Makefile
|
||||
- tests/rhbz1232192.xml
|
||||
tests/test-cdrom.xml
|
||||
tests/test-floppy.xml
|
||||
tests/test-mac.xml
|
||||
tests/test-networks-and-bridges.xml
|
||||
tests/test-print-source.xml
|
||||
+ tests/test-rhbz1232192.xml
|
||||
tests/test-sound.xml
|
||||
v2v/Makefile])
|
||||
|
||||
diff --git a/tests/Makefile.am b/tests/Makefile.am
|
||||
index c466b59a..fac18bbe 100644
|
||||
--- a/tests/Makefile.am
|
||||
+++ b/tests/Makefile.am
|
||||
@@ -56,6 +56,17 @@ libvirt_is_version_CFLAGS = \
|
||||
TESTS_ENVIRONMENT = $(top_builddir)/run --test
|
||||
|
||||
TESTS = \
|
||||
+ test-bad-networks-and-bridges.sh \
|
||||
+ test-cdrom.sh \
|
||||
+ test-customize.sh \
|
||||
+ test-fedora-btrfs-conversion.sh \
|
||||
+ test-fedora-conversion.sh \
|
||||
+ test-fedora-luks-on-lvm-conversion.sh \
|
||||
+ test-fedora-lvm-on-luks-conversion.sh \
|
||||
+ test-fedora-md-conversion.sh \
|
||||
+ test-floppy.sh \
|
||||
+ test-i-disk-parallel.sh \
|
||||
+ test-i-disk.sh \
|
||||
test-i-ova-bad-sha1.sh \
|
||||
test-i-ova-bad-sha256.sh \
|
||||
test-i-ova-directory.sh \
|
||||
@@ -68,16 +79,11 @@ TESTS = \
|
||||
test-i-ova-subfolders.sh \
|
||||
test-i-ova-tar.sh \
|
||||
test-i-ova-two-disks.sh \
|
||||
- test-i-vmx.sh \
|
||||
- test-it-vddk-io-query.sh \
|
||||
- test-bad-networks-and-bridges.sh \
|
||||
- test-cdrom.sh \
|
||||
- test-floppy.sh \
|
||||
- test-i-disk.sh \
|
||||
- test-i-disk-parallel.sh \
|
||||
test-i-ova.sh \
|
||||
+ test-i-vmx.sh \
|
||||
test-in-place.sh \
|
||||
test-inspector.sh \
|
||||
+ test-it-vddk-io-query.sh \
|
||||
test-mac.sh \
|
||||
test-machine-readable.sh \
|
||||
test-networks-and-bridges.sh \
|
||||
@@ -94,16 +100,10 @@ TESTS = \
|
||||
test-of-option.sh \
|
||||
test-on-option.sh \
|
||||
test-print-source.sh \
|
||||
+ test-rhbz1232192.sh \
|
||||
test-sound.sh \
|
||||
test-virtio-win-iso.sh \
|
||||
- test-fedora-conversion.sh \
|
||||
- test-fedora-btrfs-conversion.sh \
|
||||
- test-fedora-luks-on-lvm-conversion.sh \
|
||||
- test-fedora-lvm-on-luks-conversion.sh \
|
||||
- test-fedora-md-conversion.sh \
|
||||
test-windows-conversion.sh \
|
||||
- test-customize.sh \
|
||||
- rhbz1232192.sh \
|
||||
$(SLOW_TESTS) \
|
||||
$(ROOT_TESTS)
|
||||
|
||||
@@ -179,16 +179,17 @@ EXTRA_DIST += \
|
||||
test-bad-networks-and-bridges.sh \
|
||||
test-cdrom.expected \
|
||||
test-cdrom.sh \
|
||||
+ test-conversion-of.sh \
|
||||
test-customize.sh \
|
||||
- test-fedora-conversion.sh \
|
||||
test-fedora-btrfs-conversion.sh \
|
||||
+ test-fedora-conversion.sh \
|
||||
test-fedora-luks-on-lvm-conversion.sh \
|
||||
test-fedora-lvm-on-luks-conversion.sh \
|
||||
test-fedora-md-conversion.sh \
|
||||
test-floppy.expected \
|
||||
test-floppy.sh \
|
||||
- test-i-disk.sh \
|
||||
test-i-disk-parallel.sh \
|
||||
+ test-i-disk.sh \
|
||||
test-i-ova-as-root.ovf \
|
||||
test-i-ova-as-root.sh \
|
||||
test-i-ova-bad-sha1.sh \
|
||||
@@ -223,33 +224,33 @@ EXTRA_DIST += \
|
||||
test-i-ova.ovf \
|
||||
test-i-ova.sh \
|
||||
test-i-ova.xml \
|
||||
- test-i-vmx.sh \
|
||||
test-i-vmx-1.expected \
|
||||
- test-i-vmx-2.expected \
|
||||
- test-i-vmx-3.expected \
|
||||
- test-i-vmx-4.expected \
|
||||
- test-i-vmx-5.expected \
|
||||
- test-i-vmx-6.expected \
|
||||
- test-i-vmx-7.expected \
|
||||
test-i-vmx-1.vmx \
|
||||
+ test-i-vmx-2.expected \
|
||||
test-i-vmx-2.vmx \
|
||||
+ test-i-vmx-3.expected \
|
||||
test-i-vmx-3.vmx \
|
||||
+ test-i-vmx-4.expected \
|
||||
test-i-vmx-4.vmx \
|
||||
+ test-i-vmx-5.expected \
|
||||
test-i-vmx-5.vmx \
|
||||
+ test-i-vmx-6.expected \
|
||||
test-i-vmx-6.vmx \
|
||||
+ test-i-vmx-7.expected \
|
||||
test-i-vmx-7.vmx \
|
||||
+ test-i-vmx.sh \
|
||||
test-in-place.sh \
|
||||
test-inspector.sh \
|
||||
test-it-vddk-io-query.sh \
|
||||
- test-machine-readable.sh \
|
||||
test-mac-expected.xml \
|
||||
test-mac.sh \
|
||||
- test-networks-and-bridges.sh \
|
||||
+ test-machine-readable.sh \
|
||||
test-networks-and-bridges-expected.xml \
|
||||
+ test-networks-and-bridges.sh \
|
||||
test-o-glance.sh \
|
||||
test-o-kubevirt-fedora.sh \
|
||||
- test-o-kubevirt-windows.sh \
|
||||
test-o-kubevirt-fedora.yaml.expected \
|
||||
+ test-o-kubevirt-windows.sh \
|
||||
test-o-kubevirt-windows.yaml.expected \
|
||||
test-o-libvirt.sh \
|
||||
test-o-local-qcow2-compressed.sh \
|
||||
@@ -262,9 +263,8 @@ EXTRA_DIST += \
|
||||
test-on-option.sh \
|
||||
test-print-source.expected \
|
||||
test-print-source.sh \
|
||||
- test-conversion-of.sh \
|
||||
+ test-rhbz1232192.sh \
|
||||
test-sound.sh \
|
||||
test-trim.sh \
|
||||
test-virtio-win-iso.sh \
|
||||
- test-windows-conversion.sh \
|
||||
- rhbz1232192.sh
|
||||
+ test-windows-conversion.sh
|
||||
diff --git a/tests/rhbz1232192.xml b/tests/rhbz1232192.xml
|
||||
new file mode 100644
|
||||
index 00000000..cf0d7a45
|
||||
--- /dev/null
|
||||
+++ b/tests/rhbz1232192.xml
|
||||
@@ -0,0 +1,26 @@
|
||||
+<domain type='kvm'>
|
||||
+ <name>rhbz1232192</name>
|
||||
+ <memory>1048576</memory>
|
||||
+ <vcpu>2</vcpu>
|
||||
+ <os>
|
||||
+ <type>hvm</type>
|
||||
+ <boot dev='hd'/>
|
||||
+ </os>
|
||||
+ <features>
|
||||
+ <acpi/>
|
||||
+ <apic/>
|
||||
+ <pae/>
|
||||
+ </features>
|
||||
+ <devices>
|
||||
+ <disk type='file' device='disk'>
|
||||
+ <driver name='qemu' type='raw'/>
|
||||
+ <source file='/home/rjones/d/virt-v2v-rhel-9.6/test-data/phony-guests/windows.img'/>
|
||||
+ <target dev='hda' bus='ide'/>
|
||||
+ </disk>
|
||||
+ <disk type='file' device='disk'>
|
||||
+ <driver name='qemu' type='raw'/>
|
||||
+ <source file='/home/rjones/d/virt-v2v-rhel-9.6/test-data/phony-guests/blank-disk.img'/>
|
||||
+ <target dev='hdb' bus='ide'/>
|
||||
+ </disk>
|
||||
+ </devices>
|
||||
+</domain>
|
||||
diff --git a/tests/rhbz1232192.sh b/tests/test-rhbz1232192.sh
|
||||
similarity index 95%
|
||||
rename from tests/rhbz1232192.sh
|
||||
rename to tests/test-rhbz1232192.sh
|
||||
index d2180439..21eb2dbd 100755
|
||||
--- a/tests/rhbz1232192.sh
|
||||
+++ b/tests/test-rhbz1232192.sh
|
||||
@@ -32,4 +32,4 @@ requires test -f ../test-data/phony-guests/blank-disk.img
|
||||
|
||||
export VIRT_TOOLS_DATA_DIR="$srcdir/../test-data/fake-virt-tools"
|
||||
|
||||
-virt-v2v -i libvirtxml rhbz1232192.xml -o null
|
||||
+virt-v2v -i libvirtxml test-rhbz1232192.xml -o null
|
||||
diff --git a/tests/rhbz1232192.xml.in b/tests/test-rhbz1232192.xml.in
|
||||
similarity index 100%
|
||||
rename from tests/rhbz1232192.xml.in
|
||||
rename to tests/test-rhbz1232192.xml.in
|
||||
@ -1,27 +0,0 @@
|
||||
From f0e33d92b0fac09ea21fd74f85ec15728982ebed Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Thu, 5 Dec 2024 13:35:24 +0000
|
||||
Subject: [PATCH] docs: Embolden whole "-O -"
|
||||
|
||||
Since this is typed literally make sure the whole string is
|
||||
emboldened, according to our usual style.
|
||||
|
||||
(cherry picked from commit 3b81441fdb9e43eae3619c247e0d945d143fc92f)
|
||||
(cherry picked from commit 66a6afb741d32f998633b121c2fb9813e5195820)
|
||||
---
|
||||
docs/virt-v2v-inspector.pod | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/docs/virt-v2v-inspector.pod b/docs/virt-v2v-inspector.pod
|
||||
index 6b2ba2a9..8201fcf9 100644
|
||||
--- a/docs/virt-v2v-inspector.pod
|
||||
+++ b/docs/virt-v2v-inspector.pod
|
||||
@@ -138,7 +138,7 @@ Display help.
|
||||
|
||||
Write the output to a file called F<output.xml>.
|
||||
|
||||
-=item B<-O> -
|
||||
+=item B<-O ->
|
||||
|
||||
Write the output to stdout. This is also the default if the I<-O>
|
||||
option is omitted.
|
||||
@ -1,27 +0,0 @@
|
||||
From ee644bada89eb1a00284e8ae3169488aba01b06c Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Thu, 5 Dec 2024 17:17:25 +0000
|
||||
Subject: [PATCH] in-place: Fix name of program in the --help output
|
||||
|
||||
(cherry picked from commit 00bd17ceb1ce0ff1f837b7621596d3b1e16ccc65)
|
||||
(cherry picked from commit 900641084045a53f9c59e099e7d49dbb43bda3eb)
|
||||
---
|
||||
in-place/in_place.ml | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/in-place/in_place.ml b/in-place/in_place.ml
|
||||
index 9d24de78..42075139 100644
|
||||
--- a/in-place/in_place.ml
|
||||
+++ b/in-place/in_place.ml
|
||||
@@ -194,9 +194,9 @@ let rec main () =
|
||||
Note this program modifies the guest in-place with no backup.
|
||||
Normally you should use virt-v2v.
|
||||
|
||||
-virt-v2v -i libvirtxml guest-domain.xml
|
||||
+virt-v2v-in-place -i libvirtxml guest-domain.xml
|
||||
|
||||
-virt-v2v -i disk disk.img
|
||||
+virt-v2v-in-place -i disk disk.img
|
||||
|
||||
A short summary of the options is given below. For detailed help please
|
||||
read the man page virt-v2v-in-place(1).
|
||||
@ -1,29 +0,0 @@
|
||||
From 73bf9cb9a51f3112e8a80c57586442efcf53cfc1 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Thu, 5 Dec 2024 17:27:38 +0000
|
||||
Subject: [PATCH] inspector: Reorder -O option in alphabetical order
|
||||
|
||||
Updates: commit 0805ea93796b8b57e7c9f0bc04f83ea76a9820a5
|
||||
(cherry picked from commit 8efb3ac06467f32901fa0447176311ff71aa53f9)
|
||||
(cherry picked from commit 908f4148d8479c0f5e74ec21471adc57696eed55)
|
||||
---
|
||||
inspector/inspector.ml | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/inspector/inspector.ml b/inspector/inspector.ml
|
||||
index d7cbf449..3e039891 100644
|
||||
--- a/inspector/inspector.ml
|
||||
+++ b/inspector/inspector.ml
|
||||
@@ -178,10 +178,10 @@ let rec main () =
|
||||
s_"Map NIC to network or bridge or assign static IP";
|
||||
[ S 'n'; L"network" ], Getopt.String ("in:out", add_network),
|
||||
s_"Map network ‘in’ to ‘out’";
|
||||
- [ L"root" ], Getopt.String ("ask|... ", set_root_choice),
|
||||
- s_"How to choose root filesystem";
|
||||
[ S 'O' ], Getopt.String ("output.xml", set_output_file_option),
|
||||
s_"Set the output filename";
|
||||
+ [ L"root" ], Getopt.String ("ask|... ", set_root_choice),
|
||||
+ s_"How to choose root filesystem";
|
||||
] in
|
||||
|
||||
(* Append virt-customize options. *)
|
||||
@ -1,25 +0,0 @@
|
||||
From c38b6503fb7d2c39d6053b61cbe1a8cf0d85dcb1 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Sat, 7 Dec 2024 11:13:09 +0000
|
||||
Subject: [PATCH] v2v: Ensure --parallel >= 1
|
||||
|
||||
Fixes: commit fd1148f79581b148525eb12154aef7603ccf0baa
|
||||
(cherry picked from commit 755ce5dc08929ef4ef9dc0b0290d380574cb1235)
|
||||
(cherry picked from commit b242c331e0e3a3d04369aaefe7e910c978491368)
|
||||
---
|
||||
v2v/v2v.ml | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/v2v/v2v.ml b/v2v/v2v.ml
|
||||
index b7dbce3a..b8430997 100644
|
||||
--- a/v2v/v2v.ml
|
||||
+++ b/v2v/v2v.ml
|
||||
@@ -350,6 +350,8 @@ read the man page virt-v2v(1).
|
||||
let output_mode = !output_mode in
|
||||
let output_name = !output_name in
|
||||
let parallel = !parallel in
|
||||
+ if parallel < 1 then
|
||||
+ error (f_"--parallel parameter must be >= 1");
|
||||
let print_source = !print_source in
|
||||
let root_choice = !root_choice in
|
||||
let static_ips = !static_ips in
|
||||
@ -1,404 +0,0 @@
|
||||
From d185e68293d6a39583f0539af760377a8a478eb4 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Thu, 5 Dec 2024 13:26:43 +0000
|
||||
Subject: [PATCH] inspector: Move the code that creates XML output to a
|
||||
separate file
|
||||
|
||||
Simple code motion, so that we can reuse this code in
|
||||
virt-v2v-in-place.
|
||||
|
||||
(cherry picked from commit 3d2d65a04ae75716c084063b572ff916fa83fd1b)
|
||||
(cherry picked from commit 479f2cc10e74304e2d6202ad13dd99bdc9a6923d)
|
||||
---
|
||||
inspector/Makefile.am | 2 +
|
||||
inspector/create_inspector_xml.ml | 167 +++++++++++++++++++++++++++++
|
||||
inspector/create_inspector_xml.mli | 22 ++++
|
||||
inspector/inspector.ml | 144 +------------------------
|
||||
4 files changed, 193 insertions(+), 142 deletions(-)
|
||||
create mode 100644 inspector/create_inspector_xml.ml
|
||||
create mode 100644 inspector/create_inspector_xml.mli
|
||||
|
||||
diff --git a/inspector/Makefile.am b/inspector/Makefile.am
|
||||
index 172b2dc0..15f8cc34 100644
|
||||
--- a/inspector/Makefile.am
|
||||
+++ b/inspector/Makefile.am
|
||||
@@ -23,9 +23,11 @@ EXTRA_DIST = \
|
||||
$(SOURCES_C)
|
||||
|
||||
SOURCES_MLI = \
|
||||
+ create_inspector_xml.mli \
|
||||
inspector.mli
|
||||
|
||||
SOURCES_ML = \
|
||||
+ create_inspector_xml.ml \
|
||||
inspector.ml
|
||||
|
||||
SOURCES_C = \
|
||||
diff --git a/inspector/create_inspector_xml.ml b/inspector/create_inspector_xml.ml
|
||||
new file mode 100644
|
||||
index 00000000..a3281d46
|
||||
--- /dev/null
|
||||
+++ b/inspector/create_inspector_xml.ml
|
||||
@@ -0,0 +1,167 @@
|
||||
+(* virt-v2v-inspector
|
||||
+ * Copyright (C) 2009-2022 Red Hat Inc.
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License as published by
|
||||
+ * the Free Software Foundation; either version 2 of the License, or
|
||||
+ * (at your option) any later version.
|
||||
+ *
|
||||
+ * This program is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ * GNU General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU General Public License along
|
||||
+ * with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
+ *)
|
||||
+
|
||||
+open Printf
|
||||
+
|
||||
+open Std_utils
|
||||
+open Tools_utils
|
||||
+
|
||||
+open Types
|
||||
+open Utils
|
||||
+open DOM
|
||||
+
|
||||
+(* This is where we construct the final XML document based on
|
||||
+ * these inputs:
|
||||
+ * - Global configuration like the version of v2v etc.
|
||||
+ * - The NBD input sockets: v2vdir // "in0", "in1", etc
|
||||
+ * - The inspection data (Types.inspect)
|
||||
+ *)
|
||||
+let rec create_inspector_xml v2vdir inspect target_meta =
|
||||
+ let body = ref [] in
|
||||
+
|
||||
+ (* Record the version of virt-v2v etc, mainly for debugging. *)
|
||||
+ List.push_back_list body [
|
||||
+ Comment generated_by;
|
||||
+ e "program" [] [PCData "virt-v2v-inspector"];
|
||||
+ e "package" [] [PCData Config.package_name];
|
||||
+ e "version" [] [PCData Config.package_version];
|
||||
+ ];
|
||||
+
|
||||
+ (* The disks. *)
|
||||
+ let disks = ref [] in
|
||||
+
|
||||
+ List.iter (
|
||||
+ fun (i, virtual_size) ->
|
||||
+ let elems = ref [] in
|
||||
+ List.push_back elems (e "virtual-size" []
|
||||
+ [PCData (Int64.to_string virtual_size)]);
|
||||
+ (match get_input_disk_allocated v2vdir i with
|
||||
+ | None -> ()
|
||||
+ | Some real_size ->
|
||||
+ List.push_back elems (e "allocated" [ "estimated", "true" ]
|
||||
+ [PCData (Int64.to_string real_size)])
|
||||
+ );
|
||||
+
|
||||
+ List.push_back disks (e "disk" [ "index", string_of_int i ] !elems)
|
||||
+ ) (get_disks v2vdir);
|
||||
+ List.push_back body (e "disks" [] !disks);
|
||||
+
|
||||
+ (* The <firmware> field is outside the <operatingsystem> element,
|
||||
+ * since firmware is not part of the OS, and also because this is
|
||||
+ * consistent with virt-drivers output.
|
||||
+ *)
|
||||
+ List.push_back body
|
||||
+ (e "firmware"
|
||||
+ ["type",
|
||||
+ string_of_target_firmware target_meta.target_firmware]
|
||||
+ []);
|
||||
+
|
||||
+ (* The inspection data. *)
|
||||
+ (* NB: Keep these field names compatible with virt-inspector! *)
|
||||
+ let os = ref [] in
|
||||
+ List.push_back os (e "name" [] [PCData inspect.i_type]);
|
||||
+ List.push_back os (e "distro" [] [PCData inspect.i_distro]);
|
||||
+ List.push_back os (e "osinfo" [] [PCData inspect.i_osinfo]);
|
||||
+ List.push_back os (e "arch" [] [PCData inspect.i_arch]);
|
||||
+ List.push_back os (e "major_version" []
|
||||
+ [PCData (string_of_int inspect.i_major_version)]);
|
||||
+ List.push_back os (e "minor_version" []
|
||||
+ [PCData (string_of_int inspect.i_minor_version)]);
|
||||
+ if inspect.i_package_format <> "" then
|
||||
+ List.push_back os (e "package_format" []
|
||||
+ [PCData inspect.i_package_format]);
|
||||
+ if inspect.i_package_management <> "" then
|
||||
+ List.push_back os (e "package_management" []
|
||||
+ [PCData inspect.i_package_management]);
|
||||
+ if inspect.i_product_name <> "" then
|
||||
+ List.push_back os (e "product_name" [] [PCData inspect.i_product_name]);
|
||||
+ if inspect.i_product_variant <> "" then
|
||||
+ List.push_back os (e "product_variant" []
|
||||
+ [PCData inspect.i_product_variant]);
|
||||
+
|
||||
+ if inspect.i_windows_systemroot <> "" then
|
||||
+ List.push_back os (e "windows_systemroot" []
|
||||
+ [PCData inspect.i_windows_systemroot]);
|
||||
+ if inspect.i_windows_software_hive <> "" then
|
||||
+ List.push_back os (e "windows_software_hive" []
|
||||
+ [PCData inspect.i_windows_software_hive]);
|
||||
+ if inspect.i_windows_systemroot <> "" then
|
||||
+ List.push_back os (e "windows_system_hive" []
|
||||
+ [PCData inspect.i_windows_system_hive]);
|
||||
+ if inspect.i_windows_current_control_set <> "" then
|
||||
+ List.push_back os (e "windows_current_control_set" []
|
||||
+ [PCData inspect.i_windows_current_control_set]);
|
||||
+
|
||||
+ List.push_back os (e "root" [] [PCData inspect.i_root]);
|
||||
+ let mps = ref [] in
|
||||
+ List.iter (
|
||||
+ fun (fs, dev) ->
|
||||
+ List.push_back mps (e "mountpoint" [ "dev", dev ] [PCData fs])
|
||||
+ ) inspect.i_mountpoints;
|
||||
+ List.push_back os (e "mountpoints" [] !mps);
|
||||
+
|
||||
+ List.push_back body (e "operatingsystem" [] !os);
|
||||
+
|
||||
+ (* Construct the final document. *)
|
||||
+ (doc "v2v-inspection" [] !body : DOM.doc)
|
||||
+
|
||||
+
|
||||
+(* This is a copy of {!Output.get_disks}. *)
|
||||
+and get_disks dir =
|
||||
+ let rec loop acc i =
|
||||
+ let socket = sprintf "%s/in%d" dir i in
|
||||
+ if Sys.file_exists socket then (
|
||||
+ let size = Utils.with_nbd_connect_unix ~socket NBD.get_size in
|
||||
+ loop ((i, size) :: acc) (i+1)
|
||||
+ )
|
||||
+ else
|
||||
+ List.rev acc
|
||||
+ in
|
||||
+ loop [] 0
|
||||
+
|
||||
+(* This is like {!Utils.get_disk_allocated} but works on the input disks. *)
|
||||
+and get_input_disk_allocated dir i =
|
||||
+ let socket = sprintf "%s/in%d" dir i
|
||||
+ and alloc_ctx = "base:allocation" in
|
||||
+ with_nbd_connect_unix ~socket ~meta_contexts:[alloc_ctx]
|
||||
+ (fun nbd ->
|
||||
+ if NBD.can_meta_context nbd alloc_ctx then (
|
||||
+ (* Get the list of extents, using a 2GiB chunk size as hint. *)
|
||||
+ let size = NBD.get_size nbd
|
||||
+ and allocated = ref 0_L
|
||||
+ and fetch_offset = ref 0_L in
|
||||
+ while !fetch_offset < size do
|
||||
+ let remaining = size -^ !fetch_offset in
|
||||
+ let fetch_size = min 0x8000_0000_L remaining in
|
||||
+ NBD.block_status nbd fetch_size !fetch_offset
|
||||
+ (fun ctx offset entries err ->
|
||||
+ assert (ctx = alloc_ctx);
|
||||
+ for i = 0 to Array.length entries / 2 - 1 do
|
||||
+ let len = entries.(i * 2)
|
||||
+ and typ = entries.(i * 2 + 1) in
|
||||
+ assert (len > 0_L);
|
||||
+ if typ &^ 1_L = 0_L then
|
||||
+ allocated := !allocated +^ len;
|
||||
+ fetch_offset := !fetch_offset +^ len
|
||||
+ done;
|
||||
+ 0
|
||||
+ )
|
||||
+ done;
|
||||
+ Some !allocated
|
||||
+ ) else None
|
||||
+ )
|
||||
diff --git a/inspector/create_inspector_xml.mli b/inspector/create_inspector_xml.mli
|
||||
new file mode 100644
|
||||
index 00000000..4f09269c
|
||||
--- /dev/null
|
||||
+++ b/inspector/create_inspector_xml.mli
|
||||
@@ -0,0 +1,22 @@
|
||||
+(* virt-v2v-in-place
|
||||
+ * Copyright (C) 2009-2024 Red Hat Inc.
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License as published by
|
||||
+ * the Free Software Foundation; either version 2 of the License, or
|
||||
+ * (at your option) any later version.
|
||||
+ *
|
||||
+ * This program is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ * GNU General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU General Public License along
|
||||
+ * with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
+ *)
|
||||
+
|
||||
+val create_inspector_xml : string -> Types.inspect -> Types.target_meta ->
|
||||
+ DOM.doc
|
||||
+(** Create the XML output of virt-v2v-inspector which contains the
|
||||
+ post-conversion metadata. *)
|
||||
diff --git a/inspector/inspector.ml b/inspector/inspector.ml
|
||||
index 3e039891..f881baf5 100644
|
||||
--- a/inspector/inspector.ml
|
||||
+++ b/inspector/inspector.ml
|
||||
@@ -27,7 +27,7 @@ open Getopt.OptionName
|
||||
|
||||
open Types
|
||||
open Utils
|
||||
-open DOM
|
||||
+open Create_inspector_xml
|
||||
|
||||
(* Matches --mac command line parameters. *)
|
||||
let mac_re = PCRE.compile "^([[:xdigit:]]{2}:[[:xdigit:]]{2}:[[:xdigit:]]{2}:[[:xdigit:]]{2}:[[:xdigit:]]{2}:[[:xdigit:]]{2}):(network|bridge|ip):(.*)$"
|
||||
@@ -364,7 +364,7 @@ read the man page virt-v2v-inspector(1).
|
||||
);
|
||||
|
||||
(* Dump out the information. *)
|
||||
- let doc = inspector_xml v2vdir inspect target_meta in
|
||||
+ let doc = create_inspector_xml v2vdir inspect target_meta in
|
||||
let chan =
|
||||
match output_file with
|
||||
| None -> Stdlib.stdout
|
||||
@@ -400,144 +400,4 @@ and check_host_free_space () =
|
||||
\"Minimum free space check in the host\".")
|
||||
large_tmpdir (human_size free_space)
|
||||
|
||||
-(* This is a copy of {!Output.get_disks}. *)
|
||||
-and get_disks dir =
|
||||
- let rec loop acc i =
|
||||
- let socket = sprintf "%s/in%d" dir i in
|
||||
- if Sys.file_exists socket then (
|
||||
- let size = Utils.with_nbd_connect_unix ~socket NBD.get_size in
|
||||
- loop ((i, size) :: acc) (i+1)
|
||||
- )
|
||||
- else
|
||||
- List.rev acc
|
||||
- in
|
||||
- loop [] 0
|
||||
-
|
||||
-(* This is like {!Utils.get_disk_allocated} but works on the input disks. *)
|
||||
-and get_input_disk_allocated dir i =
|
||||
- let socket = sprintf "%s/in%d" dir i
|
||||
- and alloc_ctx = "base:allocation" in
|
||||
- with_nbd_connect_unix ~socket ~meta_contexts:[alloc_ctx]
|
||||
- (fun nbd ->
|
||||
- if NBD.can_meta_context nbd alloc_ctx then (
|
||||
- (* Get the list of extents, using a 2GiB chunk size as hint. *)
|
||||
- let size = NBD.get_size nbd
|
||||
- and allocated = ref 0_L
|
||||
- and fetch_offset = ref 0_L in
|
||||
- while !fetch_offset < size do
|
||||
- let remaining = size -^ !fetch_offset in
|
||||
- let fetch_size = min 0x8000_0000_L remaining in
|
||||
- NBD.block_status nbd fetch_size !fetch_offset
|
||||
- (fun ctx offset entries err ->
|
||||
- assert (ctx = alloc_ctx);
|
||||
- for i = 0 to Array.length entries / 2 - 1 do
|
||||
- let len = entries.(i * 2)
|
||||
- and typ = entries.(i * 2 + 1) in
|
||||
- assert (len > 0_L);
|
||||
- if typ &^ 1_L = 0_L then
|
||||
- allocated := !allocated +^ len;
|
||||
- fetch_offset := !fetch_offset +^ len
|
||||
- done;
|
||||
- 0
|
||||
- )
|
||||
- done;
|
||||
- Some !allocated
|
||||
- ) else None
|
||||
- )
|
||||
-
|
||||
-(* This is where we construct the final XML document based on
|
||||
- * these inputs:
|
||||
- * - Global configuration like the version of v2v etc.
|
||||
- * - The NBD input sockets: v2vdir // "in0", "in1", etc
|
||||
- * - The inspection data (Types.inspect)
|
||||
- *)
|
||||
-and inspector_xml v2vdir inspect target_meta =
|
||||
- let body = ref [] in
|
||||
-
|
||||
- (* Record the version of virt-v2v etc, mainly for debugging. *)
|
||||
- List.push_back_list body [
|
||||
- Comment generated_by;
|
||||
- e "program" [] [PCData "virt-v2v-inspector"];
|
||||
- e "package" [] [PCData Config.package_name];
|
||||
- e "version" [] [PCData Config.package_version];
|
||||
- ];
|
||||
-
|
||||
- (* The disks. *)
|
||||
- let disks = ref [] in
|
||||
-
|
||||
- List.iter (
|
||||
- fun (i, virtual_size) ->
|
||||
- let elems = ref [] in
|
||||
- List.push_back elems (e "virtual-size" []
|
||||
- [PCData (Int64.to_string virtual_size)]);
|
||||
- (match get_input_disk_allocated v2vdir i with
|
||||
- | None -> ()
|
||||
- | Some real_size ->
|
||||
- List.push_back elems (e "allocated" [ "estimated", "true" ]
|
||||
- [PCData (Int64.to_string real_size)])
|
||||
- );
|
||||
-
|
||||
- List.push_back disks (e "disk" [ "index", string_of_int i ] !elems)
|
||||
- ) (get_disks v2vdir);
|
||||
- List.push_back body (e "disks" [] !disks);
|
||||
-
|
||||
- (* The <firmware> field is outside the <operatingsystem> element,
|
||||
- * since firmware is not part of the OS, and also because this is
|
||||
- * consistent with virt-drivers output.
|
||||
- *)
|
||||
- List.push_back body
|
||||
- (e "firmware"
|
||||
- ["type",
|
||||
- string_of_target_firmware target_meta.target_firmware]
|
||||
- []);
|
||||
-
|
||||
- (* The inspection data. *)
|
||||
- (* NB: Keep these field names compatible with virt-inspector! *)
|
||||
- let os = ref [] in
|
||||
- List.push_back os (e "name" [] [PCData inspect.i_type]);
|
||||
- List.push_back os (e "distro" [] [PCData inspect.i_distro]);
|
||||
- List.push_back os (e "osinfo" [] [PCData inspect.i_osinfo]);
|
||||
- List.push_back os (e "arch" [] [PCData inspect.i_arch]);
|
||||
- List.push_back os (e "major_version" []
|
||||
- [PCData (string_of_int inspect.i_major_version)]);
|
||||
- List.push_back os (e "minor_version" []
|
||||
- [PCData (string_of_int inspect.i_minor_version)]);
|
||||
- if inspect.i_package_format <> "" then
|
||||
- List.push_back os (e "package_format" []
|
||||
- [PCData inspect.i_package_format]);
|
||||
- if inspect.i_package_management <> "" then
|
||||
- List.push_back os (e "package_management" []
|
||||
- [PCData inspect.i_package_management]);
|
||||
- if inspect.i_product_name <> "" then
|
||||
- List.push_back os (e "product_name" [] [PCData inspect.i_product_name]);
|
||||
- if inspect.i_product_variant <> "" then
|
||||
- List.push_back os (e "product_variant" []
|
||||
- [PCData inspect.i_product_variant]);
|
||||
-
|
||||
- if inspect.i_windows_systemroot <> "" then
|
||||
- List.push_back os (e "windows_systemroot" []
|
||||
- [PCData inspect.i_windows_systemroot]);
|
||||
- if inspect.i_windows_software_hive <> "" then
|
||||
- List.push_back os (e "windows_software_hive" []
|
||||
- [PCData inspect.i_windows_software_hive]);
|
||||
- if inspect.i_windows_systemroot <> "" then
|
||||
- List.push_back os (e "windows_system_hive" []
|
||||
- [PCData inspect.i_windows_system_hive]);
|
||||
- if inspect.i_windows_current_control_set <> "" then
|
||||
- List.push_back os (e "windows_current_control_set" []
|
||||
- [PCData inspect.i_windows_current_control_set]);
|
||||
-
|
||||
- List.push_back os (e "root" [] [PCData inspect.i_root]);
|
||||
- let mps = ref [] in
|
||||
- List.iter (
|
||||
- fun (fs, dev) ->
|
||||
- List.push_back mps (e "mountpoint" [ "dev", dev ] [PCData fs])
|
||||
- ) inspect.i_mountpoints;
|
||||
- List.push_back os (e "mountpoints" [] !mps);
|
||||
-
|
||||
- List.push_back body (e "operatingsystem" [] !os);
|
||||
-
|
||||
- (* Construct the final document. *)
|
||||
- (doc "v2v-inspection" [] !body : DOM.doc)
|
||||
-
|
||||
let () = run_main_and_handle_errors main
|
||||
@ -1,34 +0,0 @@
|
||||
From aa556d82d0ab27a552fbf2e884e8ba93cbe6c9dd Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Thu, 5 Dec 2024 15:28:38 +0000
|
||||
Subject: [PATCH] build: Define MLOBJECT (OCaml object file) as either cmo or
|
||||
cmx
|
||||
|
||||
This macro expands to either cmo or cmx depending on whether we are
|
||||
compiling for bytecode or native code.
|
||||
|
||||
This is a natural extension of the existing MLARCHIVE macro.
|
||||
|
||||
(cherry picked from commit 7b43b226eb3af18a5bd58b2664fb064832404a47)
|
||||
(cherry picked from commit e6f1a170002bff5db70aa8a8b6987ef1122d61e1)
|
||||
---
|
||||
subdir-rules.mk | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/subdir-rules.mk b/subdir-rules.mk
|
||||
index e969f357..05221b95 100644
|
||||
--- a/subdir-rules.mk
|
||||
+++ b/subdir-rules.mk
|
||||
@@ -47,10 +47,12 @@ $(top_builddir)/generator/generator:
|
||||
|
||||
if !HAVE_OCAMLOPT
|
||||
MLARCHIVE = cma
|
||||
+MLOBJECT = cmo
|
||||
LINK_CUSTOM_OCAMLC_ONLY = -output-complete-exe
|
||||
BEST = c
|
||||
else
|
||||
MLARCHIVE = cmxa
|
||||
+MLOBJECT = cmx
|
||||
BEST = opt
|
||||
endif
|
||||
|
||||
@ -1,285 +0,0 @@
|
||||
From 286cb463a01696250ede820971b34f9ad8717517 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Thu, 5 Dec 2024 13:36:29 +0000
|
||||
Subject: [PATCH] in-place: Add new -O option to write inspector XML
|
||||
|
||||
When using virt-v2v-in-place there is no easy way to get the
|
||||
post-conversion metadata, such as the operating system and firmware
|
||||
that virt-v2v detected inside the guest.
|
||||
|
||||
This commit adds new, optional '-O output.xml' to write this
|
||||
information out to a file. The format is identical to
|
||||
virt-v2v-inspector (and roughly a superset of virt-inspector).
|
||||
|
||||
Fixes: https://issues.redhat.com/browse/RHEL-58032
|
||||
Thanks: Martin Necas
|
||||
(cherry picked from commit 2f0958e5ac5c3442c2771518c5b73d6ebcd5bd4a)
|
||||
(cherry picked from commit 3dc5eb5c76fd6be2108c5b3907d9d31bbacd00a5)
|
||||
---
|
||||
docs/virt-v2v-in-place.pod | 18 +++++++++
|
||||
in-place/Makefile.am | 2 +
|
||||
in-place/in_place.ml | 39 +++++++++++++-----
|
||||
tests/Makefile.am | 2 +
|
||||
tests/test-in-place-xml.sh | 81 ++++++++++++++++++++++++++++++++++++++
|
||||
5 files changed, 132 insertions(+), 10 deletions(-)
|
||||
create mode 100755 tests/test-in-place-xml.sh
|
||||
|
||||
diff --git a/docs/virt-v2v-in-place.pod b/docs/virt-v2v-in-place.pod
|
||||
index 4057dae5..34e99cf0 100644
|
||||
--- a/docs/virt-v2v-in-place.pod
|
||||
+++ b/docs/virt-v2v-in-place.pod
|
||||
@@ -7,10 +7,12 @@ virt-v2v-in-place - Convert a guest to use KVM in-place
|
||||
virt-v2v-in-place -i disk [other -i* options]
|
||||
[virt-customize options]
|
||||
filename
|
||||
+ [-O output.xml]
|
||||
|
||||
virt-v2v-in-place -i libvirt|libvirtxml [other -i* options]
|
||||
[virt-customize options]
|
||||
guest
|
||||
+ [-O output.xml]
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
@@ -35,6 +37,14 @@ If the guest has been copied to local libvirt then:
|
||||
|
||||
virt-v2v-in-place -i libvirt guest
|
||||
|
||||
+=head2 Output XML
|
||||
+
|
||||
+Optionally use the I<-O> option to write post-conversion metadata
|
||||
+about the guest to an XML file. This is in the same format as
|
||||
+L<virt-v2v-inspector(1)>. This can be used, for example, to find out
|
||||
+what operating system and firmware was found inside the guest during
|
||||
+conversion.
|
||||
+
|
||||
=head2 Exit code
|
||||
|
||||
If virt-v2v-in-place fails it will return a non-zero (error) exit
|
||||
@@ -205,6 +215,14 @@ are mapped to C<out>.
|
||||
|
||||
See L<virt-v2v(1)/Networks and bridges>.
|
||||
|
||||
+=item B<-O> output.xml
|
||||
+
|
||||
+=item B<-O ->
|
||||
+
|
||||
+If this option is present, write post-conversion metadata about the
|
||||
+guest to the named XML file, or to stdout if I<-O -> is used. This is
|
||||
+in the same format as L<virt-v2v-inspector(1)>.
|
||||
+
|
||||
=item B<--print-source>
|
||||
|
||||
Print information about the source guest and stop. This option is
|
||||
diff --git a/in-place/Makefile.am b/in-place/Makefile.am
|
||||
index 2fecb3a7..89e3f5f3 100644
|
||||
--- a/in-place/Makefile.am
|
||||
+++ b/in-place/Makefile.am
|
||||
@@ -57,6 +57,7 @@ OCAMLPACKAGES = \
|
||||
-I $(top_builddir)/lib \
|
||||
-I $(top_builddir)/input \
|
||||
-I $(top_builddir)/convert \
|
||||
+ -I $(top_builddir)/inspector \
|
||||
-I $(top_builddir)/common/mlstdutils \
|
||||
-I $(top_builddir)/common/mlutils \
|
||||
-I $(top_builddir)/common/mlgettext \
|
||||
@@ -103,6 +104,7 @@ OCAMLLINKFLAGS = \
|
||||
mlv2vlib.$(MLARCHIVE) \
|
||||
mlconvert.$(MLARCHIVE) \
|
||||
mlinput.$(MLARCHIVE) \
|
||||
+ create_inspector_xml.$(MLOBJECT) \
|
||||
$(LINK_CUSTOM_OCAMLC_ONLY)
|
||||
|
||||
virt_v2v_in_place_DEPENDENCIES = \
|
||||
diff --git a/in-place/in_place.ml b/in-place/in_place.ml
|
||||
index 42075139..c77533e7 100644
|
||||
--- a/in-place/in_place.ml
|
||||
+++ b/in-place/in_place.ml
|
||||
@@ -28,6 +28,12 @@ open Getopt.OptionName
|
||||
open Types
|
||||
open Utils
|
||||
|
||||
+open Create_inspector_xml
|
||||
+
|
||||
+type output_xml_option =
|
||||
+ | No_output_xml | Output_xml_to_stdout
|
||||
+ | Output_xml_to_file of string
|
||||
+
|
||||
(* Matches --mac command line parameters. *)
|
||||
let mac_re = PCRE.compile "^([[:xdigit:]]{2}:[[:xdigit:]]{2}:[[:xdigit:]]{2}:[[:xdigit:]]{2}:[[:xdigit:]]{2}:[[:xdigit:]]{2}):(network|bridge|ip):(.*)$"
|
||||
let mac_ip_re = PCRE.compile "^([[:xdigit:]]|:|\\.)+$"
|
||||
@@ -61,6 +67,13 @@ let rec main () =
|
||||
in
|
||||
|
||||
let network_map = Networks.create () in
|
||||
+
|
||||
+ let output_xml = ref No_output_xml in
|
||||
+ let set_output_xml_option filename =
|
||||
+ if filename = "-" then output_xml := Output_xml_to_stdout
|
||||
+ else output_xml := Output_xml_to_file filename
|
||||
+ in
|
||||
+
|
||||
let static_ips = ref [] in
|
||||
let rec add_network str =
|
||||
match String.split ":" str with
|
||||
@@ -172,6 +185,8 @@ let rec main () =
|
||||
s_"Map NIC to network or bridge or assign static IP";
|
||||
[ S 'n'; L"network" ], Getopt.String ("in:out", add_network),
|
||||
s_"Map network ‘in’ to ‘out’";
|
||||
+ [ S 'O' ], Getopt.String ("output.xml", set_output_xml_option),
|
||||
+ s_"Set the output filename";
|
||||
[ L"print-source" ], Getopt.Set print_source,
|
||||
s_"Print source and stop";
|
||||
[ L"root" ], Getopt.String ("ask|... ", set_root_choice),
|
||||
@@ -228,6 +243,7 @@ read the man page virt-v2v-in-place(1).
|
||||
let customize_ops = get_customize_ops () in
|
||||
let input_conn = !input_conn in
|
||||
let input_mode = !input_mode in
|
||||
+ let output_xml = !output_xml in
|
||||
let print_source = !print_source in
|
||||
let root_choice = !root_choice in
|
||||
let static_ips = !static_ips in
|
||||
@@ -246,6 +262,7 @@ read the man page virt-v2v-in-place(1).
|
||||
pr "mac-option\n";
|
||||
pr "mac-ip-option\n";
|
||||
pr "customize-ops\n";
|
||||
+ pr "output-xml-option\n";
|
||||
pr "input:disk\n";
|
||||
pr "input:libvirt\n";
|
||||
pr "input:libvirtxml\n";
|
||||
@@ -348,16 +365,18 @@ read the man page virt-v2v-in-place(1).
|
||||
ignore (Sys.command cmd)
|
||||
);
|
||||
|
||||
- (* XXX Should we create target metadata and if so where?
|
||||
- *
|
||||
- * If the input mode is libvirt, there is an argument for
|
||||
- * updating the libvirt XML of the guest. If the input
|
||||
- * mode is disk, maybe we should write <guestname>.xml.
|
||||
- *
|
||||
- * For the moment we just ignore the output from the
|
||||
- * conversion step.
|
||||
- *)
|
||||
- ignore (inspect, target_meta);
|
||||
+ (* Write the post-conversion metadata, if asked. *)
|
||||
+ let chan =
|
||||
+ match output_xml with
|
||||
+ | No_output_xml -> None
|
||||
+ | Output_xml_to_stdout -> Some Stdlib.stdout
|
||||
+ | Output_xml_to_file filename -> Some (open_out filename) in
|
||||
+ Option.iter (
|
||||
+ fun chan ->
|
||||
+ let doc = create_inspector_xml v2vdir inspect target_meta in
|
||||
+ DOM.doc_to_chan chan doc;
|
||||
+ Stdlib.flush chan
|
||||
+ ) chan;
|
||||
|
||||
message (f_"Finishing off");
|
||||
(* As the last thing, write a file indicating success before
|
||||
diff --git a/tests/Makefile.am b/tests/Makefile.am
|
||||
index fac18bbe..209034b8 100644
|
||||
--- a/tests/Makefile.am
|
||||
+++ b/tests/Makefile.am
|
||||
@@ -82,6 +82,7 @@ TESTS = \
|
||||
test-i-ova.sh \
|
||||
test-i-vmx.sh \
|
||||
test-in-place.sh \
|
||||
+ test-in-place-xml.sh \
|
||||
test-inspector.sh \
|
||||
test-it-vddk-io-query.sh \
|
||||
test-mac.sh \
|
||||
@@ -240,6 +241,7 @@ EXTRA_DIST += \
|
||||
test-i-vmx-7.vmx \
|
||||
test-i-vmx.sh \
|
||||
test-in-place.sh \
|
||||
+ test-in-place-xml.sh \
|
||||
test-inspector.sh \
|
||||
test-it-vddk-io-query.sh \
|
||||
test-mac-expected.xml \
|
||||
diff --git a/tests/test-in-place-xml.sh b/tests/test-in-place-xml.sh
|
||||
new file mode 100755
|
||||
index 00000000..e9580006
|
||||
--- /dev/null
|
||||
+++ b/tests/test-in-place-xml.sh
|
||||
@@ -0,0 +1,81 @@
|
||||
+#!/bin/bash -
|
||||
+# libguestfs virt-v2v test script
|
||||
+# Copyright (C) 2014-2024 Red Hat Inc.
|
||||
+# Copyright (C) 2015 Parallels IP Holdings GmbH.
|
||||
+#
|
||||
+# This program is free software; you can redistribute it and/or modify
|
||||
+# it under the terms of the GNU General Public License as published by
|
||||
+# the Free Software Foundation; either version 2 of the License, or
|
||||
+# (at your option) any later version.
|
||||
+#
|
||||
+# This program is distributed in the hope that it will be useful,
|
||||
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+# GNU General Public License for more details.
|
||||
+#
|
||||
+# You should have received a copy of the GNU General Public License
|
||||
+# along with this program; if not, write to the Free Software
|
||||
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
+
|
||||
+# Test virt-v2v-in-place -O option.
|
||||
+
|
||||
+unset CDPATH
|
||||
+export LANG=C
|
||||
+set -e
|
||||
+
|
||||
+source ./functions.sh
|
||||
+set -e
|
||||
+set -x
|
||||
+
|
||||
+skip_if_skipped
|
||||
+requires test -f ../test-data/phony-guests/windows.img
|
||||
+
|
||||
+img_base="$abs_top_builddir/test-data/phony-guests/windows.img"
|
||||
+
|
||||
+export VIRT_TOOLS_DATA_DIR="$srcdir/../test-data/fake-virt-tools"
|
||||
+export VIRTIO_WIN="$srcdir/../test-data/fake-virtio-win"
|
||||
+
|
||||
+d=$PWD/test-v2v-in-place-xml.d
|
||||
+rm -rf $d
|
||||
+cleanup_fn rm -r $d
|
||||
+mkdir $d
|
||||
+
|
||||
+img="$d/test.qcow2"
|
||||
+qemu-img convert -f raw $img_base -O qcow2 $img
|
||||
+
|
||||
+out="$d/out.xml"
|
||||
+
|
||||
+libvirt_xml="$d/test.xml"
|
||||
+rm -f $libvirt_xml
|
||||
+n=windows
|
||||
+cat > $libvirt_xml <<EOF
|
||||
+<node>
|
||||
+ <domain type='test'>
|
||||
+ <name>$n</name>
|
||||
+ <memory>1048576</memory>
|
||||
+ <os>
|
||||
+ <type>hvm</type>
|
||||
+ <boot dev='hd'/>
|
||||
+ </os>
|
||||
+ <devices>
|
||||
+ <disk type='file' device='disk'>
|
||||
+ <driver name='qemu' type='qcow2'/>
|
||||
+ <source file='$img'/>
|
||||
+ <target dev='vda' bus='virtio'/>
|
||||
+ </disk>
|
||||
+ </devices>
|
||||
+ </domain>
|
||||
+</node>
|
||||
+EOF
|
||||
+
|
||||
+$VG virt-v2v-in-place --debug-gc -i libvirt -ic "test://$libvirt_xml" \
|
||||
+ $n -O $out
|
||||
+cat $out
|
||||
+
|
||||
+# Expect certain elements to be present.
|
||||
+grep '^<v2v-inspection' $out
|
||||
+grep '<program>virt-v2v-inspector</program>' $out
|
||||
+grep '<disks>' $out
|
||||
+grep "<disk index='0'>" $out
|
||||
+grep '<distro>windows</distro>' $out
|
||||
+grep '<osinfo>win2k22</osinfo>' $out
|
||||
@ -1,49 +0,0 @@
|
||||
From c79bcda0c1a62a8b1000166126c37b0be08ff65c Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Thu, 2 Jan 2025 11:11:46 +0000
|
||||
Subject: [PATCH] convert: Mention "operating system" in error message
|
||||
|
||||
A member of Red Hat's support team mentioned that the error "source
|
||||
guest" is confusing. Since this refers to the operating system inside
|
||||
the source guest, say that.
|
||||
|
||||
(cherry picked from commit f58b02a64f4238d7e2ddec45082a6f9b2c98a0c8)
|
||||
---
|
||||
convert/inspect_source.ml | 19 ++++++++++---------
|
||||
1 file changed, 10 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/convert/inspect_source.ml b/convert/inspect_source.ml
|
||||
index 78447193..218e517a 100644
|
||||
--- a/convert/inspect_source.ml
|
||||
+++ b/convert/inspect_source.ml
|
||||
@@ -141,11 +141,11 @@ let rec inspect_source root_choice g =
|
||||
and choose_root root_choice g = function
|
||||
| [] ->
|
||||
error (f_"inspection could not detect the source guest \
|
||||
- (or physical machine).\n\nAssuming that you are \
|
||||
- running virt-v2v/virt-p2v on a source which is \
|
||||
- supported (and not, for example, a blank disk), \
|
||||
- then this should not happen.\n\nNo root device \
|
||||
- found in this operating system image.");
|
||||
+ (or physical machine) operating system.\n\n\
|
||||
+ Assuming that you are running virt-v2v/virt-p2v \
|
||||
+ on a source which is supported (and not, for example, \
|
||||
+ a blank disk), then this should not happen.\n\n\
|
||||
+ No root device found in this operating system image.");
|
||||
| [root] -> root (* only one root, so return it *)
|
||||
| roots ->
|
||||
(* If there are multiple roots, use the [--root] option supplied
|
||||
@@ -254,8 +254,9 @@ and sanity_check_inspection inspect =
|
||||
and error_if_unknown fieldname value =
|
||||
if value = "unknown" then
|
||||
error (f_"inspection could not detect the source guest (or \
|
||||
- physical machine).\n\nAssuming that you are running \
|
||||
- virt-v2v/virt-p2v on a source which is supported (and \
|
||||
- not, for example, a blank disk), then this should not \
|
||||
- happen.\n\nInspection field ‘%s’ was ‘unknown’.")
|
||||
+ physical machine) operating system.\n\n\
|
||||
+ Assuming that you are running virt-v2v/virt-p2v \
|
||||
+ on a source which is supported (and not, for example, \
|
||||
+ a blank disk), then this should not happen.\n\n\
|
||||
+ Inspection field ‘%s’ was ‘unknown’.")
|
||||
fieldname
|
||||
@ -1,189 +0,0 @@
|
||||
From 1fb4afcd0573875e04913fdd85f6da76d574439a Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Sun, 9 Feb 2025 17:35:14 +0000
|
||||
Subject: [PATCH] Update common submodule
|
||||
|
||||
Pulls in the following fix:
|
||||
|
||||
commit 38315604596ac747e44e38db79496610efee49f8
|
||||
Author: Richard W.M. Jones <rjones@redhat.com>
|
||||
Date: Thu Feb 6 08:04:38 2025 +0000
|
||||
|
||||
mldrivers/linux_bootloaders.ml: Don't overwrite EFI grub2 wrapper
|
||||
|
||||
Fedora 34+ and RHEL 9.0+ unified BIOS and UEFI grub configuration into
|
||||
a single file. This leaves /boot/efi/EFI/<OS>/grub.cfg as a so-called
|
||||
"wrapper" which just loads the real grub2 configuration at
|
||||
/boot/grub2/grub.cfg.
|
||||
|
||||
Running '/sbin/grub2-mkconfig -o /boot/efi/EFI/<OS>/grub.cfg'
|
||||
overwrites the wrapper instead of the real configuration file.
|
||||
|
||||
RHEL 9.5 added a hard error if you try to do this, which broke
|
||||
virt-v2v. The error message was:
|
||||
|
||||
commandrvf: /sbin/grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
|
||||
Running `grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg' will
|
||||
overwrite the GRUB wrapper. Please run `grub2-mkconfig -o
|
||||
/boot/grub2/grub.cfg' instead to update grub.cfg.
|
||||
|
||||
Try to detect this situation and substitute the real grub
|
||||
configuration file instead.
|
||||
|
||||
Reported-by: Robert Knipp, Fabian Deutsch
|
||||
Thanks: Nijin Ashok, Marta Lewandowska
|
||||
Fixes: https://issues.redhat.com/browse/RHEL-77989
|
||||
Related: https://issues.redhat.com/browse/RHEL-32099
|
||||
Related: https://fedoraproject.org/wiki/Changes/UnifyGrubConfig
|
||||
|
||||
Fixes: https://issues.redhat.com/browse/RHEL-77989
|
||||
Related: https://issues.redhat.com/browse/RHEL-32099
|
||||
(cherry picked from commit 17610d1c9b37424fec55c39fbf83c971a843f45f)
|
||||
---
|
||||
common | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
Submodule common faee2645..2bb8c83c:
|
||||
diff --git a/common/mldrivers/linux_bootloaders.ml b/common/mldrivers/linux_bootloaders.ml
|
||||
index 91c5ab9e..a821a3f3 100644
|
||||
--- a/common/mldrivers/linux_bootloaders.ml
|
||||
+++ b/common/mldrivers/linux_bootloaders.ml
|
||||
@@ -375,8 +375,7 @@ let detect_bootloader (g : G.guestfs) root i_firmware =
|
||||
with G.Error msg ->
|
||||
error (f_"could not find bootloader mount point (%s): %s") mp msg in
|
||||
|
||||
- (*
|
||||
- * Workaround for older UEFI-based Debian which may not have
|
||||
+ (* Workaround for older UEFI-based Debian which may not have
|
||||
* /boot/efi/EFI/debian/grub.cfg.
|
||||
*)
|
||||
let paths =
|
||||
@@ -410,6 +409,28 @@ let detect_bootloader (g : G.guestfs) root i_firmware =
|
||||
in
|
||||
loop paths in
|
||||
|
||||
+ (* If we found a grub2 boot config called /boot/efi/EFI/<OS>/grub.cfg
|
||||
+ * check if it's a "wrapper" that redirects to /boot/grub2/grub.cfg.
|
||||
+ * This is needed for Fedora 34+ and RHEL 9.0+. See:
|
||||
+ * https://issues.redhat.com/browse/RHEL-32099
|
||||
+ * https://issues.redhat.com/browse/RHEL-77989
|
||||
+ * https://github.com/libguestfs/libguestfs-common/pull/6
|
||||
+ *)
|
||||
+ let grub_config =
|
||||
+ match typ with
|
||||
+ | Grub1 -> grub_config
|
||||
+ | Grub2 ->
|
||||
+ let grub2_efi_rex = PCRE.compile "^/boot/efi/EFI/.*/grub.cfg$" in
|
||||
+ let grub2_real = "/boot/grub2/grub.cfg" in
|
||||
+
|
||||
+ if PCRE.matches grub2_efi_rex grub_config &&
|
||||
+ (* does it look like the "wrapper"? *)
|
||||
+ g#grep "configfile \\$prefix/grub\\.cfg" grub_config <> [||] &&
|
||||
+ g#exists grub2_real then
|
||||
+ grub2_real
|
||||
+ else
|
||||
+ grub_config in
|
||||
+
|
||||
let bl =
|
||||
match typ with
|
||||
| Grub1 -> new bootloader_grub1 g root grub_config
|
||||
diff --git a/common/mlpcre/pcre-c.c b/common/mlpcre/pcre-c.c
|
||||
index ad9c6d11..3959fd56 100644
|
||||
--- a/common/mlpcre/pcre-c.c
|
||||
+++ b/common/mlpcre/pcre-c.c
|
||||
@@ -39,19 +39,6 @@
|
||||
|
||||
#pragma GCC diagnostic ignored "-Wmissing-prototypes"
|
||||
|
||||
-/* Replacement if caml_alloc_initialized_string is missing, added
|
||||
- * to OCaml runtime in 2017.
|
||||
- */
|
||||
-#ifndef HAVE_CAML_ALLOC_INITIALIZED_STRING
|
||||
-static inline value
|
||||
-caml_alloc_initialized_string (mlsize_t len, const char *p)
|
||||
-{
|
||||
- value sv = caml_alloc_string (len);
|
||||
- memcpy ((char *) String_val (sv), p, len);
|
||||
- return sv;
|
||||
-}
|
||||
-#endif
|
||||
-
|
||||
/* Data on the most recent match is stored in this thread-local
|
||||
* variable. It is freed either by the next call to PCRE.matches or
|
||||
* by (clean) thread exit.
|
||||
diff --git a/common/mlstdutils/std_utils.ml b/common/mlstdutils/std_utils.ml
|
||||
index 86b21a7c..5be358de 100644
|
||||
--- a/common/mlstdutils/std_utils.ml
|
||||
+++ b/common/mlstdutils/std_utils.ml
|
||||
@@ -392,21 +392,6 @@ module List = struct
|
||||
let push_front_list xs xsp = xsp := xs @ !xsp
|
||||
end
|
||||
|
||||
-module Option = struct
|
||||
- let iter f = function
|
||||
- | None -> ()
|
||||
- | Some x -> f x
|
||||
-
|
||||
- let map f = function
|
||||
- | None -> None
|
||||
- | Some x -> Some (f x)
|
||||
-
|
||||
- let value x ~default =
|
||||
- match x with
|
||||
- | None -> default
|
||||
- | Some x -> x
|
||||
-end
|
||||
-
|
||||
let (//) = Filename.concat
|
||||
let quote = Filename.quote
|
||||
|
||||
diff --git a/common/mlstdutils/std_utils.mli b/common/mlstdutils/std_utils.mli
|
||||
index a39ac5f3..c320b877 100644
|
||||
--- a/common/mlstdutils/std_utils.mli
|
||||
+++ b/common/mlstdutils/std_utils.mli
|
||||
@@ -290,21 +290,6 @@ module List : sig
|
||||
end
|
||||
(** Override the List module from stdlib. *)
|
||||
|
||||
-module Option : sig
|
||||
- val iter : ('a -> unit) -> 'a option -> unit
|
||||
- (** [iter f o] is [f v] if [o] is [Some v] and [()] otherwise *)
|
||||
-
|
||||
- val map : ('a -> 'b) -> 'a option -> 'b option
|
||||
- (** [map f (Some x)] returns [Some (f x)]. [map f None] returns [None]. *)
|
||||
-
|
||||
- val value : 'a option -> default:'a -> 'a
|
||||
- (** [value o ~default] is [v] if [o] is [Some v] and [default] otherwise. *)
|
||||
-end
|
||||
-(** Functions for dealing with option types.
|
||||
-
|
||||
- This module will be removed when we can use baseline OCaml 4.08
|
||||
- since that version introduces a compatible [Option] module. *)
|
||||
-
|
||||
val ( // ) : string -> string -> string
|
||||
(** Concatenate directory and filename. *)
|
||||
|
||||
diff --git a/common/mlxml/xml-c.c b/common/mlxml/xml-c.c
|
||||
index e024bd8a..9259314f 100644
|
||||
--- a/common/mlxml/xml-c.c
|
||||
+++ b/common/mlxml/xml-c.c
|
||||
@@ -41,19 +41,6 @@
|
||||
|
||||
#pragma GCC diagnostic ignored "-Wmissing-prototypes"
|
||||
|
||||
-/* Replacement if caml_alloc_initialized_string is missing, added
|
||||
- * to OCaml runtime in 2017.
|
||||
- */
|
||||
-#ifndef HAVE_CAML_ALLOC_INITIALIZED_STRING
|
||||
-static inline value
|
||||
-caml_alloc_initialized_string (mlsize_t len, const char *p)
|
||||
-{
|
||||
- value sv = caml_alloc_string (len);
|
||||
- memcpy ((char *) String_val (sv), p, len);
|
||||
- return sv;
|
||||
-}
|
||||
-#endif
|
||||
-
|
||||
/* xmlDocPtr type */
|
||||
#define docptr_val(v) (*((xmlDocPtr *)Data_custom_val(v)))
|
||||
|
||||
@ -1,86 +0,0 @@
|
||||
From bbce081a6d6ad76b95a768ef04c62db29fe482de Mon Sep 17 00:00:00 2001
|
||||
From: Cole Robinson <crobinso@redhat.com>
|
||||
Date: Mon, 10 Feb 2025 10:53:00 -0500
|
||||
Subject: [PATCH] convert: Use yum/apt/... for package removals, not rpm/dpkg
|
||||
|
||||
Current package removal implementation uses `rpm -e`, which will
|
||||
fail if anything depends on the package we are trying to remove.
|
||||
Like when `spausedd` is dependent on `open-vm-tools`.
|
||||
|
||||
Reuse the package uninstall logic from virt-customize, which
|
||||
will handle this no problem.
|
||||
|
||||
Just print a warning when package removal goes sideways.
|
||||
|
||||
Fixes: https://issues.redhat.com/browse/RHEL-71522
|
||||
Signed-off-by: Cole Robinson <crobinso@redhat.com>
|
||||
(cherry picked from commit b3268a13beca4da218e7ffe4648a18420296103a)
|
||||
---
|
||||
convert/convert_linux.ml | 26 +++++++++++++++++++++-----
|
||||
1 file changed, 21 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/convert/convert_linux.ml b/convert/convert_linux.ml
|
||||
index 3d0e2b88..cbae5e3d 100644
|
||||
--- a/convert/convert_linux.ml
|
||||
+++ b/convert/convert_linux.ml
|
||||
@@ -131,6 +131,23 @@ let convert (g : G.guestfs) source inspect i_firmware _ keep_serial_console _ =
|
||||
(*----------------------------------------------------------------------*)
|
||||
(* Conversion step. *)
|
||||
|
||||
+ let uninstall_packages pkgs =
|
||||
+ if pkgs <> [] then (
|
||||
+ let cmd =
|
||||
+ try Guest_packages.uninstall_command pkgs inspect.i_package_management
|
||||
+ with
|
||||
+ | Guest_packages.Unknown_package_manager msg
|
||||
+ | Guest_packages.Unimplemented_package_manager msg ->
|
||||
+ error "%s" msg
|
||||
+ in
|
||||
+ (try ignore (g#sh cmd)
|
||||
+ with G.Error msg ->
|
||||
+ warning (f_"could not uninstall packages ‘%s’: %s (ignored)")
|
||||
+ (String.concat " " pkgs) msg
|
||||
+ )
|
||||
+ )
|
||||
+ in
|
||||
+
|
||||
let rec do_convert () =
|
||||
augeas_grub_configuration ();
|
||||
|
||||
@@ -237,7 +254,7 @@ let convert (g : G.guestfs) source inspect i_firmware _ keep_serial_console _ =
|
||||
else
|
||||
None
|
||||
) inspect.i_apps in
|
||||
- Linux.remove g inspect.i_root xenmods;
|
||||
+ uninstall_packages xenmods;
|
||||
|
||||
(* Undo related nastiness if kmod-xenpv was installed. *)
|
||||
if xenmods <> [] then (
|
||||
@@ -310,7 +327,7 @@ let convert (g : G.guestfs) source inspect i_firmware _ keep_serial_console _ =
|
||||
fun { G.app2_name = name } -> name = package_name
|
||||
) inspect.i_apps in
|
||||
if has_guest_additions then
|
||||
- Linux.remove g inspect.i_root [package_name];
|
||||
+ uninstall_packages [package_name];
|
||||
|
||||
(* Guest Additions might have been installed from a tarball. The
|
||||
* above code won't detect this case. Look for the uninstall tool
|
||||
@@ -455,8 +472,7 @@ let convert (g : G.guestfs) source inspect i_firmware _ keep_serial_console _ =
|
||||
)
|
||||
);
|
||||
|
||||
- let remove = !remove in
|
||||
- Linux.remove g inspect.i_root remove;
|
||||
+ uninstall_packages !remove;
|
||||
|
||||
(* VMware Tools may have been installed from a tarball, so the
|
||||
* above code won't remove it. Look for the uninstall tool and run
|
||||
@@ -503,7 +519,7 @@ let convert (g : G.guestfs) source inspect i_firmware _ keep_serial_console _ =
|
||||
let pkgs = List.map (fun { G.app2_name = name } -> name) pkgs in
|
||||
|
||||
if pkgs <> [] then (
|
||||
- Linux.remove g inspect.i_root pkgs;
|
||||
+ uninstall_packages pkgs;
|
||||
|
||||
(* Installing these guest utilities automatically unconfigures
|
||||
* ttys in /etc/inittab if the system uses it. We need to put
|
||||
@ -7,7 +7,7 @@ set -e
|
||||
# ./copy-patches.sh
|
||||
|
||||
project=virt-v2v
|
||||
rhel_version=10.0
|
||||
rhel_version=10.1
|
||||
|
||||
# Check we're in the right directory.
|
||||
if [ ! -f $project.spec ]; then
|
||||
|
||||
4
sources
4
sources
@ -1,2 +1,2 @@
|
||||
SHA512 (virt-v2v-2.7.1.tar.gz) = 11f5528a48208050fda9c64c8aa6dcfd28352e26c96f15059ef66230577e87cae79286dbe035ee5fdf3c43398cba1f94569e11ff3871b26f21e7a6265a4bfa6d
|
||||
SHA512 (virt-v2v-2.7.1.tar.gz.sig) = a73bce78f116f68565e1288c130c0ea4adc4e1d87174f72fc9aeff747c541afd16404d59d12d0431d50b83a9d0dbe5ff12dddbfed97d2e1d431212a895078cad
|
||||
SHA512 (virt-v2v-2.7.10.tar.gz) = dc45a1af2ee19f8952d84e3d4da95993c6cfe45e488df4160e87bae702ef970a0d752a85cdd90a9c6a0a350708f3f16f2658eacb9820810a14da989d4b773926
|
||||
SHA512 (virt-v2v-2.7.10.tar.gz.sig) = 4b3defa5619d8a212a5c0f62a41f2a88256acb115721b36b576ff24d9503c522a7f3bcaa34c16505bda7e1a42959cd40dcc0fb05ee43364647487f629d636e13
|
||||
|
||||
@ -6,8 +6,8 @@
|
||||
|
||||
Name: virt-v2v
|
||||
Epoch: 1
|
||||
Version: 2.7.1
|
||||
Release: 4%{?dist}
|
||||
Version: 2.7.10
|
||||
Release: 1%{?dist}
|
||||
Summary: Convert a virtual machine to run on KVM
|
||||
|
||||
License: GPL-2.0-or-later AND LGPL-2.0-or-later
|
||||
@ -24,40 +24,24 @@ Source2: libguestfs.keyring
|
||||
Source3: copy-patches.sh
|
||||
|
||||
# Patches are maintained in the following repository:
|
||||
# https://github.com/libguestfs/virt-v2v/commits/rhel-10.0
|
||||
# https://github.com/libguestfs/virt-v2v/commits/rhel-10.1
|
||||
|
||||
# Patches.
|
||||
Patch0001: 0001-lib-OVF-Add-preliminary-support-for-Windows-Server-2.patch
|
||||
Patch0002: 0002-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch
|
||||
Patch0003: 0003-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch
|
||||
Patch0004: 0004-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch
|
||||
Patch0005: 0005-RHEL-Fixes-for-libguestfs-winsupport.patch
|
||||
Patch0006: 0006-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch
|
||||
Patch0007: 0007-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch
|
||||
Patch0008: 0008-RHEL-Remove-input-from-Xen.patch
|
||||
Patch0009: 0009-RHEL-Remove-o-glance.patch
|
||||
Patch0010: 0010-RHEL-Remove-the-in-place-option.patch
|
||||
Patch0011: 0011-RHEL-tests-Remove-btrfs-test.patch
|
||||
Patch0012: 0012-RHEL-Remove-block-driver-option.patch
|
||||
Patch0013: 0013-RHEL-Remove-o-rhv-o-rhv-upload-and-o-vdsm-modes.patch
|
||||
Patch0014: 0014-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch
|
||||
Patch0015: 0015-in-place-Add-a-warning-about-checking-the-exit-code.patch
|
||||
Patch0016: 0016-i-libvirt-Trim-whitespace-around-name.patch
|
||||
Patch0017: 0017-o-qemu-Replace-hard-coded-UEFI-paths.patch
|
||||
Patch0018: 0018-o-qemu-Add-set-e-x-at-the-top-of-the-output-script.patch
|
||||
Patch0019: 0019-v2v-Implement-parallel-N-for-parallel-disk-copies.patch
|
||||
Patch0020: 0020-tests-Rename-all-test-v2v-to-test.patch
|
||||
Patch0021: 0021-tests-Sort-the-tests-into-alphabetical-order.patch
|
||||
Patch0022: 0022-docs-Embolden-whole-O.patch
|
||||
Patch0023: 0023-in-place-Fix-name-of-program-in-the-help-output.patch
|
||||
Patch0024: 0024-inspector-Reorder-O-option-in-alphabetical-order.patch
|
||||
Patch0025: 0025-v2v-Ensure-parallel-1.patch
|
||||
Patch0026: 0026-inspector-Move-the-code-that-creates-XML-output-to-a.patch
|
||||
Patch0027: 0027-build-Define-MLOBJECT-OCaml-object-file-as-either-cm.patch
|
||||
Patch0028: 0028-in-place-Add-new-O-option-to-write-inspector-XML.patch
|
||||
Patch0029: 0029-convert-Mention-operating-system-in-error-message.patch
|
||||
Patch0030: 0030-Update-common-submodule.patch
|
||||
Patch0031: 0031-convert-Use-yum-apt-.-for-package-removals-not-rpm-d.patch
|
||||
Patch0001: 0001-v2v-v2v_unit_tests.ml-Remove-use-of-oUnit.patch
|
||||
Patch0002: 0002-build-Remove-use-of-oUnit.patch
|
||||
Patch0003: 0003-v2v-Use-nbdcopy-blkhash-in-verbose-mode.patch
|
||||
Patch0004: 0004-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch
|
||||
Patch0005: 0005-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch
|
||||
Patch0006: 0006-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch
|
||||
Patch0007: 0007-RHEL-Fixes-for-libguestfs-winsupport.patch
|
||||
Patch0008: 0008-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch
|
||||
Patch0009: 0009-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch
|
||||
Patch0010: 0010-RHEL-Remove-input-from-Xen.patch
|
||||
Patch0011: 0011-RHEL-Remove-o-glance.patch
|
||||
Patch0012: 0012-RHEL-tests-Remove-btrfs-test.patch
|
||||
Patch0013: 0013-RHEL-Remove-block-driver-option.patch
|
||||
Patch0014: 0014-RHEL-Remove-o-rhv-o-rhv-upload-and-o-vdsm-modes.patch
|
||||
Patch0015: 0015-RHEL-Add-warning-about-virt-v2v-in-place-not-being-s.patch
|
||||
|
||||
%if !0%{?rhel}
|
||||
# libguestfs hasn't been built on i686 for a while since there is no
|
||||
@ -80,7 +64,7 @@ BuildRequires: autoconf, automake, libtool
|
||||
BuildRequires: make
|
||||
BuildRequires: /usr/bin/pod2man
|
||||
BuildRequires: gcc
|
||||
BuildRequires: ocaml >= 4.04
|
||||
BuildRequires: ocaml >= 4.08
|
||||
|
||||
BuildRequires: libguestfs-devel >= 1:1.49.8-1
|
||||
BuildRequires: augeas-devel
|
||||
@ -92,6 +76,7 @@ BuildRequires: libnbd-devel
|
||||
BuildRequires: libosinfo-devel
|
||||
BuildRequires: libvirt-daemon-kvm
|
||||
BuildRequires: libvirt-devel
|
||||
BuildRequires: libxcrypt-devel
|
||||
BuildRequires: libxml2-devel
|
||||
BuildRequires: pcre2-devel
|
||||
BuildRequires: perl(Sys::Guestfs)
|
||||
@ -105,9 +90,6 @@ BuildRequires: ocaml-libvirt-devel
|
||||
BuildRequires: ocaml-libnbd-devel
|
||||
BuildRequires: ocaml-fileutils-devel
|
||||
BuildRequires: ocaml-gettext-devel
|
||||
%if !0%{?rhel}
|
||||
BuildRequires: ocaml-ounit-devel
|
||||
%endif
|
||||
|
||||
# These are for running our limited test.
|
||||
BuildRequires: glibc-utils
|
||||
@ -157,11 +139,13 @@ Requires: edk2-aarch64
|
||||
%endif
|
||||
|
||||
%if !0%{?rhel}
|
||||
Requires: python3
|
||||
%elif %{?rhel} == 9
|
||||
Requires: /usr/bin/python3
|
||||
%else
|
||||
%if 0%{?rhel} == 9
|
||||
Requires: platform-python
|
||||
# Python is not needed by RHEL 10.
|
||||
%endif
|
||||
%endif
|
||||
Requires: libnbd >= 1.10
|
||||
Requires: %{_bindir}/qemu-nbd
|
||||
Requires: %{_bindir}/nbdcopy
|
||||
@ -343,6 +327,14 @@ done
|
||||
|
||||
|
||||
%changelog
|
||||
* Mon Mar 31 2025 Richard W.M. Jones <rjones@redhat.com> - 1:2.7.10-1
|
||||
- Rebase to virt-v2v 2.7.10
|
||||
related: RHEL-81735
|
||||
- Fix virt-v2v -v --install dnf5 error
|
||||
resolves: RHEL-83288
|
||||
- Print blkhash of converted image in virt-v2v debugging output
|
||||
resolves: RHEL-85514
|
||||
|
||||
* Tue Feb 11 2025 Richard W.M. Jones <rjones@redhat.com> - 1:2.7.1-4
|
||||
- Rebase to virt-v2v 2.7.1
|
||||
resolves: RHEL-56814
|
||||
|
||||
Loading…
Reference in New Issue
Block a user