From fda521266d794d29385398b23c70174db880fc0a Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Mar 01 2022 12:31:08 +0000 Subject: import virt-v2v-1.45.99-1.el9 --- diff --git a/.gitignore b/.gitignore index fd61af7..03f099e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ SOURCES/libguestfs.keyring -SOURCES/virt-v2v-1.45.96.tar.gz +SOURCES/virt-v2v-1.45.99.tar.gz diff --git a/.virt-v2v.metadata b/.virt-v2v.metadata index e7f2c5f..b23fd2f 100644 --- a/.virt-v2v.metadata +++ b/.virt-v2v.metadata @@ -1,2 +1,2 @@ 1bbc40f501a7fef9eef2a39b701a71aee2fea7c4 SOURCES/libguestfs.keyring -cbb9faca2b2ddbda18b67724740b797bc40af25e SOURCES/virt-v2v-1.45.96.tar.gz +23d3b578404a991563d2af88d3118cdbce27a110 SOURCES/virt-v2v-1.45.99.tar.gz diff --git a/SOURCES/0001-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch b/SOURCES/0001-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch new file mode 100644 index 0000000..6ebb95a --- /dev/null +++ b/SOURCES/0001-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch @@ -0,0 +1,33 @@ +From 5b3653332be7b739755f53cca19ce10768585a61 Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Sun, 28 Sep 2014 19:14:43 +0100 +Subject: [PATCH] RHEL: v2v: Select correct qemu binary for -o qemu mode + (RHBZ#1147313). + +RHEL does not have qemu-system-x86_64 (etc), and in addition the +qemu binary is located in /usr/libexec. Encode the path to this +binary directly in the script. + +Note that we don't support people running qemu directly like this. +It's just for quick testing of converted VMs, and to help us with +support cases. +--- + output/output_qemu.ml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/output/output_qemu.ml b/output/output_qemu.ml +index f8d2e171..700de058 100644 +--- a/output/output_qemu.ml ++++ b/output/output_qemu.ml +@@ -137,7 +137,7 @@ module QEMU = struct + * module deals with shell and qemu comma quoting. + *) + let cmd = Qemuopts.create () in +- Qemuopts.set_binary_by_arch cmd (Some guestcaps.gcaps_arch); ++ Qemuopts.set_binary cmd "/usr/libexec/qemu-kvm"; + + let flag = Qemuopts.flag cmd + and arg = Qemuopts.arg cmd +-- +2.31.1 + diff --git a/SOURCES/0001-lib-types-reformat-string_of_guestcaps.patch b/SOURCES/0001-lib-types-reformat-string_of_guestcaps.patch deleted file mode 100644 index c5a00f9..0000000 --- a/SOURCES/0001-lib-types-reformat-string_of_guestcaps.patch +++ /dev/null @@ -1,44 +0,0 @@ -From dc69bb6033bd41b79e6203080059d4f3b0eb8027 Mon Sep 17 00:00:00 2001 -From: Laszlo Ersek -Date: Thu, 6 Jan 2022 15:09:02 +0100 -Subject: [PATCH] lib/types: reformat "string_of_guestcaps" - -The printf format string in "string_of_guestcaps" is hard to read, because -it is not indented properly wrt. the rest of the source code. Indent it -properly without changing its behavior. - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1942325 -Signed-off-by: Laszlo Ersek -Message-Id: <20220106140910.13695-2-lersek@redhat.com> -Acked-by: Richard W.M. Jones ---- - lib/types.ml | 13 +++++++------ - 1 file changed, 7 insertions(+), 6 deletions(-) - -diff --git a/lib/types.ml b/lib/types.ml -index 894391ba..dc3308dc 100644 ---- a/lib/types.ml -+++ b/lib/types.ml -@@ -423,12 +423,13 @@ let string_of_machine = function - - let string_of_guestcaps gcaps = - sprintf "\ --gcaps_block_bus = %s --gcaps_net_bus = %s --gcaps_machine = %s --gcaps_arch = %s --gcaps_acpi = %b --" (string_of_block_type gcaps.gcaps_block_bus) -+ gcaps_block_bus = %s\n\ -+ gcaps_net_bus = %s\n\ -+ gcaps_machine = %s\n\ -+ gcaps_arch = %s\n\ -+ gcaps_acpi = %b\n\ -+ " -+ (string_of_block_type gcaps.gcaps_block_bus) - (string_of_net_type gcaps.gcaps_net_bus) - (string_of_machine gcaps.gcaps_machine) - gcaps.gcaps_arch --- -2.31.1 - diff --git a/SOURCES/0002-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch b/SOURCES/0002-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch new file mode 100644 index 0000000..3e92059 --- /dev/null +++ b/SOURCES/0002-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch @@ -0,0 +1,112 @@ +From b896dab3d8d4226b246e2e90d07235a38b6c8a79 Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Tue, 30 Sep 2014 10:50:27 +0100 +Subject: [PATCH] RHEL: v2v: Disable the --qemu-boot / -oo qemu-boot option + (RHBZ#1147313). + +This cannot work because there is no Gtk or SDL output mode +in RHEL's qemu-kvm. + +In addition you will have to edit the -display option in the +qemu script. +--- + docs/virt-v2v-output-local.pod | 6 ++---- + docs/virt-v2v.pod | 12 ------------ + output/output_qemu.ml | 3 +++ + v2v/v2v.ml | 2 -- + 4 files changed, 5 insertions(+), 18 deletions(-) + +diff --git a/docs/virt-v2v-output-local.pod b/docs/virt-v2v-output-local.pod +index a5f155cb..3a2e6238 100644 +--- a/docs/virt-v2v-output-local.pod ++++ b/docs/virt-v2v-output-local.pod +@@ -9,7 +9,7 @@ or libvirt + + virt-v2v [-i* options] -o local -os DIRECTORY + +- virt-v2v [-i* options] -o qemu -os DIRECTORY [--qemu-boot] ++ virt-v2v [-i* options] -o qemu -os DIRECTORY + + virt-v2v [-i* options] -o json -os DIRECTORY + [-oo json-disks-pattern=PATTERN] +@@ -50,12 +50,10 @@ where C is the guest name. + + =item B<-o qemu -os> C + +-=item B<-o qemu -os> C B<--qemu-boot> +- + This converts the guest to files in C. Unlike I<-o local> + above, a shell script is created which contains the raw qemu command + you would need to boot the guest. However the shell script is not +-run, I you also add the I<--qemu-boot> option. ++run. + + =item B<-o json -os> C + +diff --git a/docs/virt-v2v.pod b/docs/virt-v2v.pod +index f50d27a0..9b1e44a1 100644 +--- a/docs/virt-v2v.pod ++++ b/docs/virt-v2v.pod +@@ -140,11 +140,6 @@ Since F contains the path(s) to the guest disk + image(s) you do not need to specify the name of the disk image on the + command line. + +-To convert a local disk image and immediately boot it in local +-qemu, do: +- +- virt-v2v -i disk disk.img -o qemu -os /var/tmp -oo qemu-boot +- + =head1 OPTIONS + + =over 4 +@@ -509,9 +504,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>. + +-When using this output mode, you can also specify the I<-oo qemu-boot> +-option which boots the guest under qemu immediately. +- + =item B<-o> B + + This is the same as I<-o rhv>. +@@ -765,10 +757,6 @@ Print information about the source guest and stop. This option is + useful when you are setting up network and bridge maps. + See L. + +-=item B<--qemu-boot> +- +-This is the same as I<-oo qemu-boot>. +- + =item B<-q> + + =item B<--quiet> +diff --git a/output/output_qemu.ml b/output/output_qemu.ml +index 700de058..3ad98a58 100644 +--- a/output/output_qemu.ml ++++ b/output/output_qemu.ml +@@ -63,6 +63,9 @@ module QEMU = struct + ) options.output_options; + let qemu_boot = !qemu_boot in + ++ if qemu_boot then ++ error (f_"-o qemu: the -oo qemu-boot option cannot be used in RHEL"); ++ + (* -os must be set to a directory. *) + let output_storage = + match options.output_storage with +diff --git a/v2v/v2v.ml b/v2v/v2v.ml +index 7bd47c1e..a66fa285 100644 +--- a/v2v/v2v.ml ++++ b/v2v/v2v.ml +@@ -277,8 +277,6 @@ let rec main () = + s_"Same as ‘-ip filename’"; + [ L"print-source" ], Getopt.Set print_source, + s_"Print source and stop"; +- [ L"qemu-boot" ], Getopt.Unit (fun () -> set_output_option_compat "qemu-boot" ""), +- s_"Boot in qemu (-o qemu only)"; + [ L"root" ], Getopt.String ("ask|... ", set_root_choice), + s_"How to choose root filesystem"; + [ L"vddk-config" ], Getopt.String ("filename", set_input_option_compat "vddk-config"), +-- +2.31.1 + diff --git a/SOURCES/0002-lib-types-update-string_of_guestcaps.patch b/SOURCES/0002-lib-types-update-string_of_guestcaps.patch deleted file mode 100644 index d5cc9bf..0000000 --- a/SOURCES/0002-lib-types-update-string_of_guestcaps.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 08786886302cceb7ee73cfa6c01325f690a3c094 Mon Sep 17 00:00:00 2001 -From: Laszlo Ersek -Date: Thu, 6 Jan 2022 15:09:03 +0100 -Subject: [PATCH] lib/types: update "string_of_guestcaps" - -The "string_of_guestcaps" function is out of date; the following commits -did not update it, when they introduced new fields to the "guestcaps" -record type: - -- d295d6e510a4 ("v2v: Extend guestcaps to record drivers for virtio-rng, - balloon and pvpanic.", 2017-04-06) - -- 05f780c16f01 ("v2v: support configuration of viosock driver", - 2021-02-26) - -Print those fields now. - -Fixes: d295d6e510a4fb251d545c52c0a9d6dccabe6f78 -Fixes: 05f780c16f0135c657615520c2245b42de1efc3e -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1942325 -Signed-off-by: Laszlo Ersek -Message-Id: <20220106140910.13695-3-lersek@redhat.com> -Acked-by: Richard W.M. Jones ---- - lib/types.ml | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/lib/types.ml b/lib/types.ml -index dc3308dc..52db1f9e 100644 ---- a/lib/types.ml -+++ b/lib/types.ml -@@ -425,12 +425,20 @@ let string_of_guestcaps gcaps = - sprintf "\ - gcaps_block_bus = %s\n\ - gcaps_net_bus = %s\n\ -+ gcaps_virtio_rng = %b\n\ -+ gcaps_virtio_balloon = %b\n\ -+ gcaps_isa_pvpanic = %b\n\ -+ gcaps_virtio_socket = %b\n\ - gcaps_machine = %s\n\ - gcaps_arch = %s\n\ - gcaps_acpi = %b\n\ - " - (string_of_block_type gcaps.gcaps_block_bus) - (string_of_net_type gcaps.gcaps_net_bus) -+ gcaps.gcaps_virtio_rng -+ gcaps.gcaps_virtio_balloon -+ gcaps.gcaps_isa_pvpanic -+ gcaps.gcaps_virtio_socket - (string_of_machine gcaps.gcaps_machine) - gcaps.gcaps_arch - gcaps.gcaps_acpi --- -2.31.1 - diff --git a/SOURCES/0003-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch b/SOURCES/0003-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch new file mode 100644 index 0000000..03d0f3b --- /dev/null +++ b/SOURCES/0003-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch @@ -0,0 +1,34 @@ +From 3745743d97bc432854750afd6d04d6391f19bf2f Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Fri, 24 Apr 2015 09:45:41 -0400 +Subject: [PATCH] RHEL: Fix list of supported sound cards to match RHEL qemu + (RHBZ#1176493). + +--- + lib/utils.ml | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/lib/utils.ml b/lib/utils.ml +index 4c8998c2..7b16dd8b 100644 +--- a/lib/utils.ml ++++ b/lib/utils.ml +@@ -59,13 +59,14 @@ let kvm_arch = function + (* Does qemu support the given sound card? *) + let qemu_supports_sound_card = function + | Types.AC97 +- | Types.ES1370 + | Types.ICH6 + | Types.ICH9 + | Types.PCSpeaker ++ -> true ++ | Types.ES1370 + | Types.SB16 + | Types.USBAudio +- -> true ++ -> false + + (* Find the UEFI firmware. *) + let find_uefi_firmware guest_arch = +-- +2.31.1 + diff --git a/SOURCES/0003-lib-types-introduce-the-gcaps_virtio_1_0-guest-capab.patch b/SOURCES/0003-lib-types-introduce-the-gcaps_virtio_1_0-guest-capab.patch deleted file mode 100644 index bb0180f..0000000 --- a/SOURCES/0003-lib-types-introduce-the-gcaps_virtio_1_0-guest-capab.patch +++ /dev/null @@ -1,95 +0,0 @@ -From 789017805ad0ddfacfb16d39313ef8b2f8f478ac Mon Sep 17 00:00:00 2001 -From: Laszlo Ersek -Date: Thu, 6 Jan 2022 15:09:04 +0100 -Subject: [PATCH] lib/types: introduce the "gcaps_virtio_1_0" guest capability - -Add a new field to the "guestcaps" record to track whether the guest -supports the virtio devices that it does at the virtio-1.0 protocol level. - -Virt-v2v's current assumption is that virtio-1.0 is supported by any -guest, namely for those virtio devices specifically that the guest -supports -- which in fact may be the empty set. Make this assumption -explicit by setting the new field to "true" in "convert/convert_linux.ml" -and "convert/convert_windows.ml". - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1942325 -Signed-off-by: Laszlo Ersek -Message-Id: <20220106140910.13695-4-lersek@redhat.com> -Acked-by: Richard W.M. Jones ---- - convert/convert_linux.ml | 1 + - convert/convert_windows.ml | 1 + - lib/types.ml | 3 +++ - lib/types.mli | 4 ++++ - 4 files changed, 9 insertions(+) - -diff --git a/convert/convert_linux.ml b/convert/convert_linux.ml -index d49ecec0..3f1114ad 100644 ---- a/convert/convert_linux.ml -+++ b/convert/convert_linux.ml -@@ -155,6 +155,7 @@ let convert (g : G.guestfs) source inspect keep_serial_console _ = - gcaps_machine = machine; - gcaps_arch = Utils.kvm_arch inspect.i_arch; - gcaps_acpi = acpi; -+ gcaps_virtio_1_0 = true; - } in - - guestcaps -diff --git a/convert/convert_windows.ml b/convert/convert_windows.ml -index 0ebffb15..30e494ea 100644 ---- a/convert/convert_windows.ml -+++ b/convert/convert_windows.ml -@@ -259,6 +259,7 @@ let convert (g : G.guestfs) _ inspect _ static_ips = - gcaps_machine = machine; - gcaps_arch = Utils.kvm_arch inspect.i_arch; - gcaps_acpi = true; -+ gcaps_virtio_1_0 = true; - } in - - guestcaps -diff --git a/lib/types.ml b/lib/types.ml -index 52db1f9e..50c41918 100644 ---- a/lib/types.ml -+++ b/lib/types.ml -@@ -404,6 +404,7 @@ type guestcaps = { - gcaps_machine : guestcaps_machine; - gcaps_arch : string; - gcaps_acpi : bool; -+ gcaps_virtio_1_0 : bool; - } - and guestcaps_block_type = Virtio_blk | IDE - and guestcaps_net_type = Virtio_net | E1000 | RTL8139 -@@ -432,6 +433,7 @@ let string_of_guestcaps gcaps = - gcaps_machine = %s\n\ - gcaps_arch = %s\n\ - gcaps_acpi = %b\n\ -+ gcaps_virtio_1_0 = %b\n\ - " - (string_of_block_type gcaps.gcaps_block_bus) - (string_of_net_type gcaps.gcaps_net_bus) -@@ -442,6 +444,7 @@ let string_of_guestcaps gcaps = - (string_of_machine gcaps.gcaps_machine) - gcaps.gcaps_arch - gcaps.gcaps_acpi -+ gcaps.gcaps_virtio_1_0 - - type target_buses = { - target_virtio_blk_bus : target_bus_slot array; -diff --git a/lib/types.mli b/lib/types.mli -index 02913c0c..0b9b6e25 100644 ---- a/lib/types.mli -+++ b/lib/types.mli -@@ -270,6 +270,10 @@ type guestcaps = { - gcaps_machine : guestcaps_machine; (** Machine model. *) - gcaps_arch : string; (** Architecture that KVM must emulate. *) - gcaps_acpi : bool; (** True if guest supports acpi. *) -+ -+ gcaps_virtio_1_0 : bool; -+ (** The guest supports the virtio devices that it does at the virtio-1.0 -+ protocol level. *) - } - (** Guest capabilities after conversion. eg. Was virtio found or installed? *) - --- -2.31.1 - diff --git a/SOURCES/0004-RHEL-Fixes-for-libguestfs-winsupport.patch b/SOURCES/0004-RHEL-Fixes-for-libguestfs-winsupport.patch new file mode 100644 index 0000000..0294186 --- /dev/null +++ b/SOURCES/0004-RHEL-Fixes-for-libguestfs-winsupport.patch @@ -0,0 +1,104 @@ +From f7ed42f475271291d126084cb92157974ea274c6 Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Sun, 30 Aug 2015 03:21:57 -0400 +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. +--- + convert/convert.ml | 1 + + convert/windows_virtio.ml | 1 + + test-data/phony-guests/make-windows-img.sh | 1 + + tests/test-v2v-virtio-win-iso.sh | 8 +++++++- + tests/test-v2v-windows-conversion.sh | 8 +++++++- + 5 files changed, 17 insertions(+), 2 deletions(-) + +diff --git a/convert/convert.ml b/convert/convert.ml +index 87fca725..5e0e6c2b 100644 +--- a/convert/convert.ml ++++ b/convert/convert.ml +@@ -51,6 +51,7 @@ let rec convert dir options source = + + message (f_"Opening the source"); + let g = open_guestfs ~identifier:"v2v" () in ++ g#set_program "virt-v2v"; + g#set_memsize (g#get_memsize () * 2); + (* 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/convert/windows_virtio.ml b/convert/windows_virtio.ml +index 5254322c..301f7544 100644 +--- a/convert/windows_virtio.ml ++++ b/convert/windows_virtio.ml +@@ -283,6 +283,7 @@ and copy_from_virtio_win g inspect srcdir destdir filter missing = + let g2 = + try + let g2 = open_guestfs ~identifier:"virtio_win" () in ++ g#set_program "virt-v2v"; + g2#add_drive_opts virtio_win ~readonly:true; + g2#launch (); + g2 +diff --git a/test-data/phony-guests/make-windows-img.sh b/test-data/phony-guests/make-windows-img.sh +index 30908a91..73cf5144 100755 +--- a/test-data/phony-guests/make-windows-img.sh ++++ b/test-data/phony-guests/make-windows-img.sh +@@ -37,6 +37,7 @@ fi + + # Create a disk image. + guestfish < "$script" + :> "$expected" + ++cat >> "$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 +@@ -76,6 +76,12 @@ mktest () + :> "$script" + :> "$expected" + ++cat >> "$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 +-- +2.31.1 + diff --git a/SOURCES/0004-output-create_libvirt_xml-pick-virtio-transitional-m.patch b/SOURCES/0004-output-create_libvirt_xml-pick-virtio-transitional-m.patch deleted file mode 100644 index f1c7554..0000000 --- a/SOURCES/0004-output-create_libvirt_xml-pick-virtio-transitional-m.patch +++ /dev/null @@ -1,118 +0,0 @@ -From e4cf85bd3ad44aed28cf3e8d3bfd67fec38ebdab Mon Sep 17 00:00:00 2001 -From: Laszlo Ersek -Date: Thu, 6 Jan 2022 15:09:05 +0100 -Subject: [PATCH] output/create_libvirt_xml: pick "virtio-transitional" models - when needed - -In the domain XML we generate, we do not assign PCI B/D/F addresses to -devices; that job is left to libvirtd. When using the Q35 machine type, -libvirtd places the virtio devices into PCI Express Root Ports. As a -consequence, QEMU disables virtio-0.9.5 support on these devices, and so -guest OSes without virtio-1.0 drivers cannot drive them. - -Prevent QEMU from turning off the virtio-0.9.5 ("legacy") protocol by -specifying the "virtio-transitional" (not "virtio") model for our virtio -devices: - -- For non-disk devices, simply change the value of the existent "model" - attribute. - -- For disk devices, add the "model" attribute as a new one. - -(In fact, libvirtd doesn't (only) add the "disable_legacy=off" QEMU device -property for the "virtio-transitional" devices -- libvirtd even moves -these devices from PCI Express Root Ports to a dedicated -"pcie-to-pci-bridge". This has the same effect on QEMU.) - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1942325 -Signed-off-by: Laszlo Ersek -Message-Id: <20220106140910.13695-5-lersek@redhat.com> -Acked-by: Richard W.M. Jones ---- - output/create_libvirt_xml.ml | 28 ++++++++++++++++++---------- - 1 file changed, 18 insertions(+), 10 deletions(-) - -diff --git a/output/create_libvirt_xml.ml b/output/create_libvirt_xml.ml -index 9413cc0b..87bfab17 100644 ---- a/output/create_libvirt_xml.ml -+++ b/output/create_libvirt_xml.ml -@@ -312,18 +312,26 @@ let create_libvirt_xml ?pool source inspect - (* The devices. *) - let devices = ref [] in - -+ (* This will affect all of the virtio devices (if any). *) -+ let virtio_transitional = -+ guestcaps.gcaps_machine = Q35 && not guestcaps.gcaps_virtio_1_0 in -+ let virtio_model = -+ if virtio_transitional then "virtio-transitional" else "virtio" in -+ - (* Fixed and removable disks. *) - let () = -- let make_disk bus_name drive_prefix i = function -+ let make_disk bus_name ?(viotrans = false) drive_prefix i = function - | BusSlotEmpty -> Comment (sprintf "%s slot %d is empty" bus_name i) - - | BusSlotDisk d -> - let outdisk = outdisk_name d.s_disk_id in - -- e "disk" [ -- "type", if pool = None then "file" else "volume"; -- "device", "disk" -- ] [ -+ e "disk" ( -+ [ -+ "type", if pool = None then "file" else "volume"; -+ "device", "disk" -+ ] @ if (viotrans) then [ "model", "virtio-transitional" ] else [] -+ ) [ - e "driver" [ - "name", "qemu"; - "type", output_format; -@@ -364,7 +372,7 @@ let create_libvirt_xml ?pool source inspect - in - - List.push_back_list devices -- (List.mapi (make_disk "virtio" "vd") -+ (List.mapi (make_disk "virtio" ~viotrans:virtio_transitional "vd") - (Array.to_list target_buses.target_virtio_blk_bus)); - let ide_disks = - match guestcaps.gcaps_machine with -@@ -392,7 +400,7 @@ let create_libvirt_xml ?pool source inspect - let nics = - let net_model = - match guestcaps.gcaps_net_bus with -- | Virtio_net -> "virtio" | E1000 -> "e1000" | RTL8139 -> "rtl8139" in -+ | Virtio_net -> virtio_model | E1000 -> "e1000" | RTL8139 -> "rtl8139" in - List.map ( - fun { s_mac = mac; s_vnet_type = vnet_type; s_vnet = vnet } -> - let vnet_type_str = -@@ -483,7 +491,7 @@ let create_libvirt_xml ?pool source inspect - (* Miscellaneous KVM devices. *) - if guestcaps.gcaps_virtio_rng then - List.push_back devices ( -- e "rng" ["model", "virtio"] [ -+ e "rng" ["model", virtio_model] [ - (* XXX Using /dev/urandom requires libvirt >= 1.3.4. Libvirt - * was broken before that. - *) -@@ -496,7 +504,7 @@ let create_libvirt_xml ?pool source inspect - List.push_back devices ( - e "memballoon" - ["model", -- if guestcaps.gcaps_virtio_balloon then "virtio" else "none"] -+ if guestcaps.gcaps_virtio_balloon then virtio_model else "none"] - [] - ); - if guestcaps.gcaps_isa_pvpanic then -@@ -508,7 +516,7 @@ let create_libvirt_xml ?pool source inspect - List.push_back devices ( - e "viosock" - ["model", -- if guestcaps.gcaps_virtio_socket then "virtio" else "none"] -+ if guestcaps.gcaps_virtio_socket then virtio_model else "none"] - [] - ); - --- -2.31.1 - diff --git a/SOURCES/0005-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch b/SOURCES/0005-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch new file mode 100644 index 0000000..1d6a671 --- /dev/null +++ b/SOURCES/0005-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch @@ -0,0 +1,26 @@ +From 46c843f5d5f19aad7bbfe155d20d5d9f26f8a030 Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Thu, 2 Mar 2017 14:21:37 +0100 +Subject: [PATCH] RHEL: v2v: -i disk: force VNC as display (RHBZ#1372671) + +The SDL output mode is not supported in RHEL's qemu-kvm. +--- + input/input_disk.ml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/input/input_disk.ml b/input/input_disk.ml +index 9fd08639..dc3bed6f 100644 +--- a/input/input_disk.ml ++++ b/input/input_disk.ml +@@ -76,7 +76,7 @@ module Disk = struct + s_features = [ "acpi"; "apic"; "pae" ]; + s_firmware = UnknownFirmware; (* causes virt-v2v to autodetect *) + s_display = +- Some { s_display_type = Window; s_keymap = None; s_password = None; ++ Some { s_display_type = VNC; s_keymap = None; s_password = None; + s_listen = LNoListen; s_port = None }; + s_sound = None; + s_disks = s_disks; +-- +2.31.1 + diff --git a/SOURCES/0005-output-create_json-expose-gcaps_virtio_1_0.patch b/SOURCES/0005-output-create_json-expose-gcaps_virtio_1_0.patch deleted file mode 100644 index ca3bb20..0000000 --- a/SOURCES/0005-output-create_json-expose-gcaps_virtio_1_0.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 511910e1f7e956fb8a032c1c04fd0a983b2108df Mon Sep 17 00:00:00 2001 -From: Laszlo Ersek -Date: Thu, 6 Jan 2022 15:09:06 +0100 -Subject: [PATCH] output/create_json: expose "gcaps_virtio_1_0" - -Let CNV / KubeVirt know about the "gcaps_virtio_1_0" field as well, so -that it can make the same determination from "machine" and -"gcaps_virtio_1_0" as virt-v2v does in the libvirt output (from an earlier -patch in this series). - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1942325 -Signed-off-by: Laszlo Ersek -Message-Id: <20220106140910.13695-6-lersek@redhat.com> -Acked-by: Richard W.M. Jones ---- - output/create_json.ml | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/output/create_json.ml b/output/create_json.ml -index b48902b7..985e10a9 100644 ---- a/output/create_json.ml -+++ b/output/create_json.ml -@@ -219,6 +219,7 @@ let create_json_metadata source inspect - "isa-pvpanic", JSON.Bool guestcaps.gcaps_isa_pvpanic; - "virtio-socket", JSON.Bool guestcaps.gcaps_virtio_socket; - "acpi", JSON.Bool guestcaps.gcaps_acpi; -+ "virtio-1-0", JSON.Bool guestcaps.gcaps_virtio_1_0; - ] in - List.push_back doc ("guestcaps", JSON.Dict guestcaps_dict); - --- -2.31.1 - diff --git a/SOURCES/0006-RHEL-v2v-do-not-mention-SUSE-Xen-hosts-RHBZ-1430203.patch b/SOURCES/0006-RHEL-v2v-do-not-mention-SUSE-Xen-hosts-RHBZ-1430203.patch new file mode 100644 index 0000000..09ed254 --- /dev/null +++ b/SOURCES/0006-RHEL-v2v-do-not-mention-SUSE-Xen-hosts-RHBZ-1430203.patch @@ -0,0 +1,26 @@ +From 70b8b26867ca0c4a142f3fb436e4dbb66a01f187 Mon Sep 17 00:00:00 2001 +From: Pino Toscano +Date: Wed, 8 Mar 2017 11:03:40 +0100 +Subject: [PATCH] RHEL: v2v: do not mention SUSE Xen hosts (RHBZ#1430203) + +They are not supported in RHEL. +--- + docs/virt-v2v-input-xen.pod | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/docs/virt-v2v-input-xen.pod b/docs/virt-v2v-input-xen.pod +index c4948e5e..97727b8f 100644 +--- a/docs/virt-v2v-input-xen.pod ++++ b/docs/virt-v2v-input-xen.pod +@@ -11,7 +11,7 @@ virt-v2v-input-xen - Using virt-v2v to convert guests from Xen + =head1 DESCRIPTION + + This page documents how to use L to convert guests from +-RHEL 5 Xen, or SLES and OpenSUSE Xen hosts. ++RHEL 5 Xen hosts. + + =head1 INPUT FROM XEN + +-- +2.31.1 + diff --git a/SOURCES/0006-convert-libosinfo-wrap-osinfo_os_get_all_devices.patch b/SOURCES/0006-convert-libosinfo-wrap-osinfo_os_get_all_devices.patch deleted file mode 100644 index 2288454..0000000 --- a/SOURCES/0006-convert-libosinfo-wrap-osinfo_os_get_all_devices.patch +++ /dev/null @@ -1,165 +0,0 @@ -From 46f5885dba1b669588d98eb840af454564d07cae Mon Sep 17 00:00:00 2001 -From: Laszlo Ersek -Date: Thu, 6 Jan 2022 15:09:07 +0100 -Subject: [PATCH] convert/libosinfo: wrap osinfo_os_get_all_devices() - -Introduce the "osinfo_os.get_devices" OCaml method, for wrapping the -libosinfo API osinfo_os_get_all_devices(). - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1942325 -Signed-off-by: Laszlo Ersek -Message-Id: <20220106140910.13695-7-lersek@redhat.com> -[lersek@redhat.com: call OCaml values "v" (Rich)] -Acked-by: Richard W.M. Jones ---- - convert/libosinfo-c.c | 66 +++++++++++++++++++++++++++++++++++++++++++ - convert/libosinfo.ml | 14 +++++++++ - convert/libosinfo.mli | 14 +++++++++ - 3 files changed, 94 insertions(+) - -diff --git a/convert/libosinfo-c.c b/convert/libosinfo-c.c -index 09cf588d..b8e78bec 100644 ---- a/convert/libosinfo-c.c -+++ b/convert/libosinfo-c.c -@@ -50,6 +50,7 @@ - G_DEFINE_AUTOPTR_CLEANUP_FUNC(OsinfoFilter, g_object_unref) - G_DEFINE_AUTOPTR_CLEANUP_FUNC(OsinfoLoader, g_object_unref) - G_DEFINE_AUTOPTR_CLEANUP_FUNC(OsinfoOsList, g_object_unref) -+G_DEFINE_AUTOPTR_CLEANUP_FUNC(OsinfoDeviceList, g_object_unref) - #endif - - typedef OsinfoDb *OsinfoDb_t; -@@ -255,3 +256,68 @@ v2v_osinfo_os_get_device_drivers (value osv) - - CAMLreturn (rv); - } -+ -+/* Collect OsinfoDevice properties from two levels: -+ * -+ * - The OSINFO_ENTITY_PROP_ID property, originating from the OsinfoEntity base -+ * class. This is a unique URI, identifying the device. -+ * -+ * - All currently known OSINFO_DEVICE_PROP_* properties, originating from the -+ * OsinfoDevice class. -+ * -+ * All of the above properties have string values. Thus, for uniformity, access -+ * all these properties by their names at the OsinfoEntity level (i.e., forego -+ * the class- and property-specific, dedicated property getter functions). -+ */ -+static const char * const device_prop[] = { -+ OSINFO_ENTITY_PROP_ID, -+ OSINFO_DEVICE_PROP_VENDOR, -+ OSINFO_DEVICE_PROP_VENDOR_ID, -+ OSINFO_DEVICE_PROP_PRODUCT, -+ OSINFO_DEVICE_PROP_PRODUCT_ID, -+ OSINFO_DEVICE_PROP_NAME, -+ OSINFO_DEVICE_PROP_CLASS, -+ OSINFO_DEVICE_PROP_BUS_TYPE, -+ OSINFO_DEVICE_PROP_SUBSYSTEM, -+}; -+#define NUM_DEVICE_PROPS (sizeof device_prop / sizeof device_prop[0]) -+ -+value -+v2v_osinfo_os_get_all_devices (value osv) -+{ -+ CAMLparam1 (osv); -+ CAMLlocal3 (retvalv, linkv, propsv); -+ g_autoptr (OsinfoDeviceList) dev_list = NULL; -+ OsinfoList *ent_list; -+ gint ent_nr; -+ -+ retvalv = Val_emptylist; -+ dev_list = osinfo_os_get_all_devices (OsinfoOs_t_val (osv), NULL); -+ ent_list = OSINFO_LIST (dev_list); -+ ent_nr = osinfo_list_get_length (ent_list); -+ -+ while (ent_nr > 0) { -+ OsinfoEntity *ent; -+ size_t prop_nr; -+ -+ --ent_nr; -+ ent = osinfo_list_get_nth (ent_list, ent_nr); -+ -+ propsv = caml_alloc (NUM_DEVICE_PROPS, 0); -+ for (prop_nr = 0; prop_nr < NUM_DEVICE_PROPS; ++prop_nr) { -+ const gchar *prop_val; -+ -+ prop_val = osinfo_entity_get_param_value (ent, device_prop[prop_nr]); -+ if (prop_val == NULL) -+ prop_val = ""; -+ Store_field (propsv, prop_nr, caml_copy_string (prop_val)); -+ } -+ -+ linkv = caml_alloc (2, 0); -+ Store_field (linkv, 0, propsv); -+ Store_field (linkv, 1, retvalv); -+ retvalv = linkv; -+ } -+ -+ CAMLreturn (retvalv); -+} -diff --git a/convert/libosinfo.ml b/convert/libosinfo.ml -index bd9ca126..78271be2 100644 ---- a/convert/libosinfo.ml -+++ b/convert/libosinfo.ml -@@ -32,13 +32,27 @@ type osinfo_device_driver = { - files : string list; - } - -+type osinfo_device = { -+ id : string; -+ vendor : string; -+ vendor_id : string; -+ product : string; -+ product_id : string; -+ name : string; -+ class_ : string; -+ bus_type : string; -+ subsystem : string; -+} -+ - external osinfo_os_get_id : osinfo_os_t -> string = "v2v_osinfo_os_get_id" - external osinfo_os_get_device_drivers : osinfo_os_t -> osinfo_device_driver list = "v2v_osinfo_os_get_device_drivers" -+external osinfo_os_get_devices : osinfo_os_t -> osinfo_device list = "v2v_osinfo_os_get_all_devices" - - class osinfo_os h = - object (self) - method get_id () = osinfo_os_get_id h - method get_device_drivers () = osinfo_os_get_device_drivers h -+ method get_devices () = osinfo_os_get_devices h - end - - external osinfo_db_load : unit -> osinfo_db_t = "v2v_osinfo_db_load" -diff --git a/convert/libosinfo.mli b/convert/libosinfo.mli -index 0428ef91..1ece7b41 100644 ---- a/convert/libosinfo.mli -+++ b/convert/libosinfo.mli -@@ -29,11 +29,25 @@ type osinfo_device_driver = { - files : string list; - } - -+type osinfo_device = { -+ id : string; -+ vendor : string; -+ vendor_id : string; -+ product : string; -+ product_id : string; -+ name : string; -+ class_ : string; -+ bus_type : string; -+ subsystem : string; -+} -+ - class osinfo_os : osinfo_os_t -> object - method get_id : unit -> string - (** Return the ID. *) - method get_device_drivers : unit -> osinfo_device_driver list - (** Return the list of device drivers. *) -+ method get_devices : unit -> osinfo_device list -+ (** Return the list of devices. *) - end - (** Minimal OsinfoOs wrapper. *) - --- -2.31.1 - diff --git a/SOURCES/0007-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch b/SOURCES/0007-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch new file mode 100644 index 0000000..c03b69d --- /dev/null +++ b/SOURCES/0007-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch @@ -0,0 +1,127 @@ +From fa8028afa670c3575f31b838f1d15ed7ee16f26a Mon Sep 17 00:00:00 2001 +From: Pino Toscano +Date: Tue, 26 Mar 2019 09:42:25 +0100 +Subject: [PATCH] RHEL: point to KB for supported v2v hypervisors/guests + +--- + docs/virt-v2v-support.pod | 104 ++------------------------------------ + 1 file changed, 4 insertions(+), 100 deletions(-) + +diff --git a/docs/virt-v2v-support.pod b/docs/virt-v2v-support.pod +index 9815f51f..1ffc0f9d 100644 +--- a/docs/virt-v2v-support.pod ++++ b/docs/virt-v2v-support.pod +@@ -8,106 +8,10 @@ systems and guests in virt-v2v + This page documents which foreign hypervisors, virtualization + management systems and guest types that L can support. + +-Note this page applies to upstream virt-v2v from +-L and in downstream distributions of virt-v2v +-sometimes features are intentionally removed, or are present but not +-supported. +- +-=head2 Hypervisors (Input) +- +-=over 4 +- +-=item VMware ESXi +- +-Must be managed by VMware vCenter E 5.0 unless VDDK is available. +- +-=item OVA exported from VMware +- +-OVAs from other hypervisors will not work. +- +-=item VMX from VMware +- +-VMX files generated by other hypervisors will not work. +- +-=item RHEL 5 Xen +- +-=item SUSE Xen +- +-=item Citrix Xen +- +-Citrix Xen has not been recently tested. +- +-=item Hyper-V +- +-Not recently tested. Requires that you export the disk or use +-L on Hyper-V. +- +-=item Direct from disk images +- +-Only disk images exported from supported hypervisors, and using +-container formats supported by qemu. +- +-=item Physical machines +- +-Using the L tool. +- +-=back +- +-=head2 Hypervisors (Output) +- +-QEMU and KVM only. +- +-=head2 Virtualization management systems (Output) +- +-=over 4 +- +-=item OpenStack +- +-=item Red Hat Virtualization (RHV) 4.1 and up +- +-=item Local libvirt +- +-And hence L, L, and similar tools. +- +-=item Local disk +- +-=back +- +-=head2 Guests +- +-=over 4 +- +-=item Red Hat Enterprise Linux 3, 4, 5, 6, 7 +- +-=item CentOS 3, 4, 5, 6, 7 +- +-=item Scientific Linux 3, 4, 5, 6, 7 +- +-=item Oracle Linux +- +-=item Fedora +- +-=item SLES 10 and up +- +-=item OpenSUSE 10 and up +- +-=item ALT Linux 9 and up +- +-=item Debian 6 and up +- +-=item Ubuntu 10.04, 12.04, 14.04, 16.04, and up +- +-=item Windows XP to Windows 10 / Windows Server 2016 +- +-We use Windows internal version numbers, see +-L +- +-Currently NT 5.2 to NT 6.3 are supported. +- +-See L below for additional notes on converting Windows +-guests. +- +-=back ++For more information on supported hypervisors, and guest types in ++RHEL, please consult the following Knowledgebase article on these ++Red Hat Customer Portal: ++L. + + =head2 Guest firmware + +-- +2.31.1 + diff --git a/SOURCES/0007-convert-libosinfo_utils-introduce-string_of_osinfo_d.patch b/SOURCES/0007-convert-libosinfo_utils-introduce-string_of_osinfo_d.patch deleted file mode 100644 index d1c172a..0000000 --- a/SOURCES/0007-convert-libosinfo_utils-introduce-string_of_osinfo_d.patch +++ /dev/null @@ -1,77 +0,0 @@ -From 00473c6ac09d85a6b6e1ce0cbe132e31407a2d00 Mon Sep 17 00:00:00 2001 -From: Laszlo Ersek -Date: Thu, 6 Jan 2022 15:09:08 +0100 -Subject: [PATCH] convert/libosinfo_utils: introduce - "string_of_osinfo_device_list" - -For debugging purposes, we'll want to print the list of devices returned -by the previously introduced "osinfo_os#get_devices" method. - -Format the device list as a nice table. - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1942325 -Signed-off-by: Laszlo Ersek -Message-Id: <20220106140910.13695-8-lersek@redhat.com> -Acked-by: Richard W.M. Jones ---- - convert/libosinfo_utils.ml | 35 +++++++++++++++++++++++++++++++++++ - convert/libosinfo_utils.mli | 3 +++ - 2 files changed, 38 insertions(+) - -diff --git a/convert/libosinfo_utils.ml b/convert/libosinfo_utils.ml -index 1fc138cc..d5eb082b 100644 ---- a/convert/libosinfo_utils.ml -+++ b/convert/libosinfo_utils.ml -@@ -42,3 +42,38 @@ let string_of_osinfo_device_driver { Libosinfo.architecture; location; - (if signed then "signed" else "unsigned") - priority - (String.concat " " files) -+ -+let string_of_osinfo_device_list dev_list = -+ -+ (* Turn the fields of an "osinfo_device" record into a list. *) -+ let listify { Libosinfo.id; vendor; vendor_id; product; product_id; name; -+ class_; bus_type; subsystem } = -+ [ id; vendor; vendor_id; product; product_id; name; -+ class_; bus_type; subsystem ] -+ -+ (* Given a list of strings, and a list of previously known maximum widths, -+ * "increase" each width, if necessary, to the length of the corresponding -+ * string. -+ *) -+ and grow_widths = List.map2 (fun s -> max (String.length s)) -+ in -+ -+ (* Compute the maximum width for each field in "dev_list". *) -+ let max_widths = -+ List.fold_right grow_widths (List.map listify dev_list) -+ [ 0; 0; 0; 0; 0; 0; 0; 0; 0 ] -+ -+ (* Given a list of strings and a list of field widths, format "string1 | -+ * string2 | ... | stringN" such that each field is right-padded to the -+ * corresponding width. -+ *) -+ and columnate strings widths = -+ String.concat " | " (List.map2 (Printf.sprintf "%-*s") widths strings) -+ in -+ -+ (* Format "dev_list" as a table by (a) printing one "osinfo_device" record -+ * per line, and (b) right-padding each field of each "osinfo_device" record -+ * to the maximum width of that field. -+ *) -+ String.concat "\n" -+ (List.map (fun dev -> columnate (listify dev) max_widths) dev_list) -diff --git a/convert/libosinfo_utils.mli b/convert/libosinfo_utils.mli -index b3714d22..5a703334 100644 ---- a/convert/libosinfo_utils.mli -+++ b/convert/libosinfo_utils.mli -@@ -27,3 +27,6 @@ val get_os_by_short_id : string -> Libosinfo.osinfo_os - - val string_of_osinfo_device_driver : Libosinfo.osinfo_device_driver -> string - (** Convert a [osinfo_device_driver] to a printable string for debugging. *) -+ -+val string_of_osinfo_device_list : Libosinfo.osinfo_device list -> string -+(** Convert an [osinfo_device] list to a printable string for debugging. *) --- -2.31.1 - diff --git a/SOURCES/0008-RHEL-Disable-o-glance.patch b/SOURCES/0008-RHEL-Disable-o-glance.patch new file mode 100644 index 0000000..bb4d515 --- /dev/null +++ b/SOURCES/0008-RHEL-Disable-o-glance.patch @@ -0,0 +1,219 @@ +From 95640bac1c00014f94bec5539907fd92d7379ad2 Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Wed, 30 Jun 2021 11:15:52 +0100 +Subject: [PATCH] RHEL: Disable -o glance + +Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1977539 +--- + docs/virt-v2v-output-openstack.pod | 56 ++---------------------------- + docs/virt-v2v.pod | 20 ----------- + output/output_glance.mli | 2 +- + tests/test-v2v-o-glance.sh | 3 ++ + v2v/v2v.ml | 7 +--- + 5 files changed, 7 insertions(+), 81 deletions(-) + +diff --git a/docs/virt-v2v-output-openstack.pod b/docs/virt-v2v-output-openstack.pod +index f5a3abad..1ab356e8 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 + [-oo verify-server-certificate=false] + [-oo os-username=admin] [-oo os-*=*] + +- virt-v2v [-i* options] -o glance +- + =head1 DESCRIPTION + + This page documents how to use L to convert guests to run +-on OpenStack. There are two output modes you can select, but only +-I<-o openstack> should be used normally. ++on OpenStack. + + =over 4 + +@@ -27,15 +24,6 @@ Full description: L + This is the modern method for uploading to OpenStack via the REST API. + Guests can be directly converted into Cinder volumes. + +-=item B<-o glance> +- +-Full description: L +- +-This is the old method for uploading to Glance. Unfortunately Glance +-is not well suited to storing converted guests (since virt-v2v deals +-with "pets" not templated "cattle"), so this method is not recommended +-unless you really know what you are doing. +- + =back + + =head1 OUTPUT TO OPENSTACK +@@ -170,50 +158,10 @@ no Cinder volume type is used. + The following options are B supported with OpenStack: I<-oa>, + I<-of>. + +-=head1 OUTPUT TO GLANCE +- +-Note this is a legacy option. In most cases you should use +-L instead. +- +-To output to OpenStack Glance, use the I<-o glance> option. +- +-This runs the L CLI program which must be installed on the +-virt-v2v conversion host. For authentication to work, you will need +-to set C environment variables. +- +-Normally there is a file called C or C +-which you can simply C to set everything up. +- +-Virt-v2v adds metadata for the guest to Glance, describing such things +-as the guest operating system and what drivers it requires. The +-command C will display the metadata as "Property" +-fields such as C and C. +- +-=head2 Glance and sparseness +- +-Glance image upload doesn't appear to correctly handle sparseness. +-For this reason, using qcow2 will be faster and use less space on the +-Glance server. Use the virt-v2v S> option. +- +-=head2 Glance and multiple disks +- +-If the guest has a single disk, then the name of the disk in Glance +-will be the name of the guest. You can control this using the I<-on> +-option. +- +-Glance doesn't have a concept of associating multiple disks with a +-single guest, and Nova doesn't allow you to boot a guest from multiple +-Glance disks either. If the guest has multiple disks, then the first +-(assumed to be the system disk) will have the name of the guest, and +-the second and subsequent data disks will be called +-C-disk2>, C-disk3> etc. It may be best to +-leave the system disk in Glance, and import the data disks to Cinder. +- + =head1 SEE ALSO + + L, +-L, +-L. ++L. + + =head1 AUTHOR + +diff --git a/docs/virt-v2v.pod b/docs/virt-v2v.pod +index 9b1e44a1..a1e00db8 100644 +--- a/docs/virt-v2v.pod ++++ b/docs/virt-v2v.pod +@@ -431,14 +431,6 @@ See L below. + + This is the same as I<-o local>. + +-=item B<-o> B +- +-This is a legacy option. You should probably use I<-o openstack> +-instead. +- +-Set the output method to OpenStack Glance. In this mode the converted +-guest is uploaded to Glance. See L. +- + =item B<-o> B + + Set the output method to I. +@@ -1170,11 +1162,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). + +-=item I<-o glance> +- +-This temporarily places a full copy of the output disks in +-C<$VIRT_V2V_TMPDIR> (or F). +- + =item I<-o local> + + =item I<-o qemu> +@@ -1358,13 +1345,6 @@ instance. + Because of how Cinder volumes are presented as F block devices, + using I<-o openstack> normally requires that virt-v2v is run as root. + +-=item Writing to Glance +- +-This does I need root (in fact it probably won’t work), but may +-require either a special user and/or for you to source a script that +-sets authentication environment variables. Consult the Glance +-documentation. +- + =item Writing to block devices + + This normally requires root. See the next section. +diff --git a/output/output_glance.mli b/output/output_glance.mli +index 972320a2..9befc461 100644 +--- a/output/output_glance.mli ++++ b/output/output_glance.mli +@@ -18,4 +18,4 @@ + + (** [-o glance] output mode. *) + +-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 +@@ -20,6 +20,9 @@ + + set -e + ++# Feature is disabled in RHEL 9. ++exit 77 ++ + source ./functions.sh + set -e + set -x +diff --git a/v2v/v2v.ml b/v2v/v2v.ml +index a66fa285..c9ddce36 100644 +--- a/v2v/v2v.ml ++++ b/v2v/v2v.ml +@@ -205,7 +205,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 +- | "glance" -> output_mode := `Glance + | "libvirt" -> output_mode := `Libvirt + | "disk" | "local" -> output_mode := `Disk + | "json" -> output_mode := `JSON +@@ -257,7 +256,7 @@ let rec main () = + s_"Map network ‘in’ to ‘out’"; + [ L"no-trim" ], Getopt.String ("-", no_trim_warning), + s_"Ignored for backwards compatibility"; +- [ S 'o' ], Getopt.String ("glance|json|libvirt|local|null|openstack|qemu|rhv|rhv-upload|vdsm", set_output_mode), ++ [ S 'o' ], Getopt.String ("json|libvirt|local|null|openstack|qemu|rhv|rhv-upload|vdsm", set_output_mode), + s_"Set output mode (default: libvirt)"; + [ M"oa" ], Getopt.String ("sparse|preallocated", set_output_alloc), + s_"Set output allocation mode"; +@@ -325,8 +324,6 @@ virt-v2v -i libvirtxml guest-domain.xml -o local -os /var/tmp + + virt-v2v -i disk disk.img -o local -os /var/tmp + +-virt-v2v -i disk disk.img -o glance +- + There is a companion front-end called \"virt-p2v\" which comes as an + ISO or CD image that can be booted on physical machines. + +@@ -396,7 +393,6 @@ read the man page virt-v2v(1). + pr "input:libvirtxml\n"; + pr "input:ova\n"; + pr "input:vmx\n"; +- pr "output:glance\n"; + pr "output:json\n"; + pr "output:libvirt\n"; + pr "output:local\n"; +@@ -486,7 +482,6 @@ read the man page virt-v2v(1). + | `Disk -> (module Output_disk.Disk) + | `Null -> (module Output_null.Null) + | `QEmu -> (module Output_qemu.QEMU) +- | `Glance -> (module Output_glance.Glance) + | `Openstack -> (module Output_openstack.Openstack) + | `RHV_Upload -> (module Output_rhv_upload.RHVUpload) + | `RHV -> (module Output_rhv.RHV) +-- +2.31.1 + diff --git a/SOURCES/0008-convert-libosinfo_utils-introduce-os_support_of_osin.patch b/SOURCES/0008-convert-libosinfo_utils-introduce-os_support_of_osin.patch deleted file mode 100644 index a028887..0000000 --- a/SOURCES/0008-convert-libosinfo_utils-introduce-os_support_of_osin.patch +++ /dev/null @@ -1,77 +0,0 @@ -From 2a2d7e9e1376084670dbf8587549948713341153 Mon Sep 17 00:00:00 2001 -From: Laszlo Ersek -Date: Thu, 6 Jan 2022 15:09:09 +0100 -Subject: [PATCH] convert/libosinfo_utils: introduce - "os_support_of_osinfo_device_list" - -Add a helper function for calculating q35 support and virtio-1.0 support -from the list of devices returned by the previously introduced -"osinfo_os#get_devices" method. - -(Rather than folding the list into a record of bools, implement the -function explicitly, recursively. Folding wouldn't stop (without abusing -exceptions) once all fields in the record turned "true", but a recursive -function can just return the accumulator at that point.) - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1942325 -Signed-off-by: Laszlo Ersek -Message-Id: <20220106140910.13695-9-lersek@redhat.com> -[lersek@redhat.com: don't break "in" to a new line after a "let" that - defines a non-function (Rich)] -Acked-by: Richard W.M. Jones ---- - convert/libosinfo_utils.ml | 18 ++++++++++++++++++ - convert/libosinfo_utils.mli | 14 ++++++++++++++ - 2 files changed, 32 insertions(+) - -diff --git a/convert/libosinfo_utils.ml b/convert/libosinfo_utils.ml -index d5eb082b..77f22272 100644 ---- a/convert/libosinfo_utils.ml -+++ b/convert/libosinfo_utils.ml -@@ -77,3 +77,21 @@ let string_of_osinfo_device_list dev_list = - *) - String.concat "\n" - (List.map (fun dev -> columnate (listify dev) max_widths) dev_list) -+ -+type os_support = { -+ q35 : bool; -+ vio10 : bool; -+} -+ -+let os_support_of_osinfo_device_list = -+ let rec next accu left = -+ match accu, left with -+ | { q35 = true; vio10 = true }, _ -+ | _ , [] -> -+ accu -+ | { q35; vio10 }, { Libosinfo.id } :: tail -> -+ let q35 = q35 || id = "http://qemu.org/chipset/x86/q35" -+ and vio10 = vio10 || id = "http://pcisig.com/pci/1af4/1041" in -+ next { q35; vio10 } tail -+ in -+ next { q35 = false; vio10 = false } -diff --git a/convert/libosinfo_utils.mli b/convert/libosinfo_utils.mli -index 5a703334..ab77ec97 100644 ---- a/convert/libosinfo_utils.mli -+++ b/convert/libosinfo_utils.mli -@@ -30,3 +30,17 @@ val string_of_osinfo_device_driver : Libosinfo.osinfo_device_driver -> string - - val string_of_osinfo_device_list : Libosinfo.osinfo_device list -> string - (** Convert an [osinfo_device] list to a printable string for debugging. *) -+ -+type os_support = { -+ q35 : bool; -+ vio10 : bool; -+} -+(** Tell whether the operating system supports the Q35 board type and/or -+ non-transitional (virtio-1.0-only) virtio devices. (Internally, the -+ virtio-1.0-net device is used as a proxy for the general statement about -+ virtio-1.0.) -+ *) -+ -+val os_support_of_osinfo_device_list : Libosinfo.osinfo_device list -> -+ os_support -+(** Get [os_support] from an [osinfo_device] list. *) --- -2.31.1 - diff --git a/SOURCES/0009-RHEL-Remove-the-in-place-option.patch b/SOURCES/0009-RHEL-Remove-the-in-place-option.patch new file mode 100644 index 0000000..9ac39b7 --- /dev/null +++ b/SOURCES/0009-RHEL-Remove-the-in-place-option.patch @@ -0,0 +1,143 @@ +From c7c14141d1c985dbba8749f9209b78d96200c2b3 Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +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 | 49 ----------------------------------------------- + v2v/v2v.ml | 8 -------- + 2 files changed, 57 deletions(-) + +diff --git a/docs/virt-v2v.pod b/docs/virt-v2v.pod +index a1e00db8..a3fc3dc8 100644 +--- a/docs/virt-v2v.pod ++++ b/docs/virt-v2v.pod +@@ -8,10 +8,6 @@ virt-v2v - Convert a guest to use KVM + [-o mode] [other -o* options] + [guest|filename] + +- virt-v2v --in-place +- [-i mode] [other -i* options] +- [guest|filename] +- + =head1 DESCRIPTION + + Virt-v2v converts a single guest from a foreign hypervisor to run on +@@ -37,12 +33,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 conversion (I<--in-place>) only uses the I<-i*> options and +-modifies the source guest in-place. (See L +-below.) +- + =head2 Other virt-v2v topics + + L — Supported hypervisors, virtualization +@@ -289,20 +279,6 @@ For I<-i disk> only, this specifies the format of the input disk + image. For other input methods you should specify the input + format in the metadata. + +-=item B<--in-place> +- +-Do not create an output virtual machine in the target hypervisor. +-Instead, adjust the guest OS in the source VM to run in the input +-hypervisor. +- +-This mode is meant for integration with other toolsets, which take the +-responsibility of converting the VM configuration, providing for +-rollback in case of errors, transforming the storage, etc. +- +-See L below. +- +-Conflicts with all I<-o *> options. +- + =item B<-io> OPTION=VALUE + + Set input option(s) related to the current input mode or transport. +@@ -1417,31 +1393,6 @@ that instead. + + + +-=head2 In-place conversion +- +-It is also possible to use virt-v2v in scenarios where a foreign VM +-has already been imported into a KVM-based hypervisor, but still needs +-adjustments in the guest to make it run in the new virtual hardware. +- +-In that case it is assumed that a third-party tool has created the +-target VM in the supported KVM-based hypervisor based on the source VM +-configuration and contents, but using virtual devices more appropriate +-for KVM (e.g. virtio storage and network, etc.). +- +-Then, to make the guest OS boot and run in the changed environment, +-one can use: +- +- virt-v2v -ic qemu:///system converted_vm --in-place +- +-Virt-v2v will analyze the configuration of C in the +-C libvirt instance, and apply various fixups to the +-guest OS configuration to make it match the VM configuration. This +-may include installing virtio drivers, configuring the bootloader, the +-mountpoints, the network interfaces, and so on. +- +-Should an error occur during the operation, virt-v2v exits with an +-error code leaving the VM in an undefined state. +- + =head2 Machine readable output + + The I<--machine-readable> option can be used to make the output more +diff --git a/v2v/v2v.ml b/v2v/v2v.ml +index c9ddce36..6859a02c 100644 +--- a/v2v/v2v.ml ++++ b/v2v/v2v.ml +@@ -183,7 +183,6 @@ let rec main () = + let output_storage = ref None in + + (* Other options that we handle here. *) +- let in_place = ref false in + let print_source = ref false in + + let input_mode = ref `Not_set in +@@ -248,8 +247,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.Set in_place, +- s_"Only tune the guest in the input VM"; + [ 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), +@@ -347,7 +344,6 @@ read the man page virt-v2v(1). + + (* Dereference the arguments. *) + let args = List.rev !args in +- let in_place = !in_place in + let input_conn = !input_conn in + let input_mode = !input_mode in + let input_transport = +@@ -367,9 +363,6 @@ read the man page virt-v2v(1). + let root_choice = !root_choice in + let static_ips = !static_ips in + +- (* --in-place isn't implemented yet - TODO *) +- if in_place then error "XXX --in-place option is not implemented yet"; +- + (* No arguments and machine-readable mode? Print out some facts + * about what this binary supports. + *) +@@ -383,7 +376,6 @@ read the man page virt-v2v(1). + pr "vddk\n"; + pr "colours-option\n"; + pr "vdsm-compat-option\n"; +- pr "in-place\n"; + pr "io/oo\n"; + pr "mac-option\n"; + pr "bandwidth-option\n"; +-- +2.31.1 + diff --git a/SOURCES/0009-convert-determine-machine-type-and-virtio-1.0-from-o.patch b/SOURCES/0009-convert-determine-machine-type-and-virtio-1.0-from-o.patch deleted file mode 100644 index 5ff3308..0000000 --- a/SOURCES/0009-convert-determine-machine-type-and-virtio-1.0-from-o.patch +++ /dev/null @@ -1,207 +0,0 @@ -From f0cea012d0183edf6f7b769c28d5038593f3fe6a Mon Sep 17 00:00:00 2001 -From: Laszlo Ersek -Date: Thu, 6 Jan 2022 15:09:10 +0100 -Subject: [PATCH] convert: determine machine type and virtio-1.0 from osinfo - for x86 guests - -Determine the machine type and virtio-1.0 support from osinfo, for x86 -guests. This connects the previous two parts of this series. - -Keep the original logic from commit ac39fa292c31 ("v2v: Set machine type -explicitly for outputs which support it (RHBZ#1581428).", 2020-12-04) for -non-x86 guests, and for the case when libosinfo does not recognize the -guest OS. - -Update the "cdrom", "floppy", and "i-ova" test cases, which all use a -(phony) Windows 7 image -- Windows 7 does not support virtio-1.0-only -devices, according to libosinfo. - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1942325 -Signed-off-by: Laszlo Ersek -Message-Id: <20220106140910.13695-10-lersek@redhat.com> -Acked-by: Richard W.M. Jones ---- - convert/convert_linux.ml | 51 +++++++++++++++++++++------------- - convert/convert_windows.ml | 32 ++++++++++++++------- - tests/test-v2v-cdrom.expected | 2 +- - tests/test-v2v-floppy.expected | 2 +- - tests/test-v2v-i-ova.xml | 8 +++--- - 5 files changed, 60 insertions(+), 35 deletions(-) - -diff --git a/convert/convert_linux.ml b/convert/convert_linux.ml -index 3f1114ad..45ce069a 100644 ---- a/convert/convert_linux.ml -+++ b/convert/convert_linux.ml -@@ -123,26 +123,39 @@ let convert (g : G.guestfs) source inspect keep_serial_console _ = - - SELinux_relabel.relabel g; - -- (* Pivot on the year 2007. Any Linux distro from earlier than -- * 2007 should use i440fx, anything 2007 or newer should use q35. -- * XXX Look up this information in libosinfo in future. -- *) -- let machine = -- match inspect.i_arch, inspect.i_distro, inspect.i_major_version with -- | ("i386"|"x86_64"), "fedora", _ -> Q35 -- | ("i386"|"x86_64"), ("rhel"|"centos"|"scientificlinux"| -- "redhat-based"|"oraclelinux"), major -> -- if major <= 4 then I440FX else Q35 -- | ("i386"|"x86_64"), ("sles"|"suse-based"|"opensuse"), major -> -- if major < 10 then I440FX else Q35 -- | ("i386"|"x86_64"), ("debian"|"ubuntu"|"linuxmint"| -- "kalilinux"), major -> -- if major < 4 then I440FX else Q35 -+ let machine, virtio_1_0 = -+ match inspect.i_arch with -+ | ("i386"|"x86_64") -> -+ (try -+ let os = Libosinfo_utils.get_os_by_short_id inspect.i_osinfo in -+ let devices = os#get_devices () in -+ debug "libosinfo devices for OS \"%s\":\n%s" inspect.i_osinfo -+ (Libosinfo_utils.string_of_osinfo_device_list devices); -+ let { Libosinfo_utils.q35; vio10 } = -+ Libosinfo_utils.os_support_of_osinfo_device_list devices in -+ (if q35 then Q35 else I440FX), vio10 -+ with -+ | Not_found -> -+ (* Pivot on the year 2007. Any Linux distro from earlier than 2007 -+ * should use i440fx, anything 2007 or newer should use q35. -+ *) -+ (match inspect.i_distro, inspect.i_major_version with -+ | "fedora", _ -> Q35 -+ | ("rhel"|"centos"|"scientificlinux"|"redhat-based"|"oraclelinux"), -+ major -> -+ if major <= 4 then I440FX else Q35 -+ | ("sles"|"suse-based"|"opensuse"), major -> -+ if major < 10 then I440FX else Q35 -+ | ("debian"|"ubuntu"|"linuxmint"|"kalilinux"), major -> -+ if major < 4 then I440FX else Q35 - -- (* reasonable default for all modern Linux kernels *) -- | ("i386"|"x86_64"), _, _ -> Q35 -+ (* reasonable default for all modern Linux kernels *) -+ | _, _ -> Q35 -+ ), true -+ ) - -- | _ -> Virt in -+ | _ -> Virt, true -+ in - - (* Return guest capabilities from the convert () function. *) - let guestcaps = { -@@ -155,7 +168,7 @@ let convert (g : G.guestfs) source inspect keep_serial_console _ = - gcaps_machine = machine; - gcaps_arch = Utils.kvm_arch inspect.i_arch; - gcaps_acpi = acpi; -- gcaps_virtio_1_0 = true; -+ gcaps_virtio_1_0 = virtio_1_0; - } in - - guestcaps -diff --git a/convert/convert_windows.ml b/convert/convert_windows.ml -index 30e494ea..1c2d17f2 100644 ---- a/convert/convert_windows.ml -+++ b/convert/convert_windows.ml -@@ -238,15 +238,27 @@ let convert (g : G.guestfs) _ inspect _ static_ips = - warning (f_"this guest has Anti-Virus (AV) software and a new virtio block device driver was installed. In some circumstances, AV may prevent new drivers from working (resulting in a 7B boot error). If this happens, try disabling AV before doing the conversion."); - ); - -- (* Pivot on the year 2007. Any Windows version from earlier than -- * 2007 should use i440fx, anything 2007 or newer should use q35. -- * Luckily this coincides almost exactly with the release of NT 6. -- * XXX Look up this information in libosinfo in future. -- *) -- let machine = -- match inspect.i_arch, inspect.i_major_version with -- | ("i386"|"x86_64"), major -> if major < 6 then I440FX else Q35 -- | _ -> Virt in -+ let machine, virtio_1_0 = -+ match inspect.i_arch with -+ | ("i386"|"x86_64") -> -+ (try -+ let os = Libosinfo_utils.get_os_by_short_id inspect.i_osinfo in -+ let devices = os#get_devices () in -+ debug "libosinfo devices for OS \"%s\":\n%s" inspect.i_osinfo -+ (Libosinfo_utils.string_of_osinfo_device_list devices); -+ let { Libosinfo_utils.q35; vio10 } = -+ Libosinfo_utils.os_support_of_osinfo_device_list devices in -+ (if q35 then Q35 else I440FX), vio10 -+ with -+ | Not_found -> -+ (* Pivot on the year 2007. Any Windows version from earlier than -+ * 2007 should use i440fx, anything 2007 or newer should use q35. -+ * Luckily this coincides almost exactly with the release of NT 6. -+ *) -+ (if inspect.i_major_version < 6 then I440FX else Q35), true -+ ) -+ | _ -> Virt, true -+ in - - (* Return guest capabilities from the convert () function. *) - let guestcaps = { -@@ -259,7 +271,7 @@ let convert (g : G.guestfs) _ inspect _ static_ips = - gcaps_machine = machine; - gcaps_arch = Utils.kvm_arch inspect.i_arch; - gcaps_acpi = true; -- gcaps_virtio_1_0 = true; -+ gcaps_virtio_1_0 = virtio_1_0; - } in - - guestcaps -diff --git a/tests/test-v2v-cdrom.expected b/tests/test-v2v-cdrom.expected -index 17bd152d..b9504929 100644 ---- a/tests/test-v2v-cdrom.expected -+++ b/tests/test-v2v-cdrom.expected -@@ -1,4 +1,4 @@ -- -+ - - - -diff --git a/tests/test-v2v-floppy.expected b/tests/test-v2v-floppy.expected -index a718c21f..f4b67954 100644 ---- a/tests/test-v2v-floppy.expected -+++ b/tests/test-v2v-floppy.expected -@@ -1,4 +1,4 @@ -- -+ - - - -diff --git a/tests/test-v2v-i-ova.xml b/tests/test-v2v-i-ova.xml -index 9f3c1974..2b6a8de0 100644 ---- a/tests/test-v2v-i-ova.xml -+++ b/tests/test-v2v-i-ova.xml -@@ -21,7 +21,7 @@ - restart - restart - -- -+ - - - -@@ -36,16 +36,16 @@ - - - -- -+ - - - -- -+ - /dev/urandom - -- -+ - - - --- -2.31.1 - diff --git a/SOURCES/0010-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch b/SOURCES/0010-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch deleted file mode 100644 index 75782c2..0000000 --- a/SOURCES/0010-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 44314b8d8d201e6043b7148240446c98c726bc95 Mon Sep 17 00:00:00 2001 -From: "Richard W.M. Jones" -Date: Sun, 28 Sep 2014 19:14:43 +0100 -Subject: [PATCH] RHEL: v2v: Select correct qemu binary for -o qemu mode - (RHBZ#1147313). - -RHEL does not have qemu-system-x86_64 (etc), and in addition the -qemu binary is located in /usr/libexec. Encode the path to this -binary directly in the script. - -Note that we don't support people running qemu directly like this. -It's just for quick testing of converted VMs, and to help us with -support cases. ---- - output/output_qemu.ml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/output/output_qemu.ml b/output/output_qemu.ml -index 0aac1eba..c4265703 100644 ---- a/output/output_qemu.ml -+++ b/output/output_qemu.ml -@@ -119,7 +119,7 @@ and qemu_finalize dir source inspect target_meta - * module deals with shell and qemu comma quoting. - *) - let cmd = Qemuopts.create () in -- Qemuopts.set_binary_by_arch cmd (Some guestcaps.gcaps_arch); -+ Qemuopts.set_binary cmd "/usr/libexec/qemu-kvm"; - - let flag = Qemuopts.flag cmd - and arg = Qemuopts.arg cmd --- -2.31.1 - diff --git a/SOURCES/0011-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch b/SOURCES/0011-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch deleted file mode 100644 index 6807c80..0000000 --- a/SOURCES/0011-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch +++ /dev/null @@ -1,112 +0,0 @@ -From 1c1eb51b4f7e9d5f1e2aef7d695181a14fbd0a7d Mon Sep 17 00:00:00 2001 -From: "Richard W.M. Jones" -Date: Tue, 30 Sep 2014 10:50:27 +0100 -Subject: [PATCH] RHEL: v2v: Disable the --qemu-boot / -oo qemu-boot option - (RHBZ#1147313). - -This cannot work because there is no Gtk or SDL output mode -in RHEL's qemu-kvm. - -In addition you will have to edit the -display option in the -qemu script. ---- - docs/virt-v2v-output-local.pod | 6 ++---- - docs/virt-v2v.pod | 12 ------------ - output/output_qemu.ml | 3 +++ - v2v/v2v.ml | 2 -- - 4 files changed, 5 insertions(+), 18 deletions(-) - -diff --git a/docs/virt-v2v-output-local.pod b/docs/virt-v2v-output-local.pod -index a5f155cb..3a2e6238 100644 ---- a/docs/virt-v2v-output-local.pod -+++ b/docs/virt-v2v-output-local.pod -@@ -9,7 +9,7 @@ or libvirt - - virt-v2v [-i* options] -o local -os DIRECTORY - -- virt-v2v [-i* options] -o qemu -os DIRECTORY [--qemu-boot] -+ virt-v2v [-i* options] -o qemu -os DIRECTORY - - virt-v2v [-i* options] -o json -os DIRECTORY - [-oo json-disks-pattern=PATTERN] -@@ -50,12 +50,10 @@ where C is the guest name. - - =item B<-o qemu -os> C - --=item B<-o qemu -os> C B<--qemu-boot> -- - This converts the guest to files in C. Unlike I<-o local> - above, a shell script is created which contains the raw qemu command - you would need to boot the guest. However the shell script is not --run, I you also add the I<--qemu-boot> option. -+run. - - =item B<-o json -os> C - -diff --git a/docs/virt-v2v.pod b/docs/virt-v2v.pod -index 3d0e00a3..04f3efd2 100644 ---- a/docs/virt-v2v.pod -+++ b/docs/virt-v2v.pod -@@ -141,11 +141,6 @@ Since F contains the path(s) to the guest disk - image(s) you do not need to specify the name of the disk image on the - command line. - --To convert a local disk image and immediately boot it in local --qemu, do: -- -- virt-v2v -i disk disk.img -o qemu -os /var/tmp -oo qemu-boot -- - =head1 OPTIONS - - =over 4 -@@ -510,9 +505,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>. - --When using this output mode, you can also specify the I<-oo qemu-boot> --option which boots the guest under qemu immediately. -- - =item B<-o> B - - This is the same as I<-o rhv>. -@@ -768,10 +760,6 @@ Print information about the source guest and stop. This option is - useful when you are setting up network and bridge maps. - See L. - --=item B<--qemu-boot> -- --This is the same as I<-oo qemu-boot>. -- - =item B<-q> - - =item B<--quiet> -diff --git a/output/output_qemu.ml b/output/output_qemu.ml -index c4265703..822e4c72 100644 ---- a/output/output_qemu.ml -+++ b/output/output_qemu.ml -@@ -52,6 +52,9 @@ and qemu_parse_options options = - ) options.output_options; - let qemu_boot = !qemu_boot in - -+ if qemu_boot then -+ error (f_"-o qemu: the -oo qemu-boot option cannot be used in RHEL"); -+ - (* -os must be set to a directory. *) - let output_storage = - match options.output_storage with -diff --git a/v2v/v2v.ml b/v2v/v2v.ml -index 47e6e937..503dfb55 100644 ---- a/v2v/v2v.ml -+++ b/v2v/v2v.ml -@@ -277,8 +277,6 @@ let rec main () = - s_"Same as ‘-ip filename’"; - [ L"print-source" ], Getopt.Set print_source, - s_"Print source and stop"; -- [ L"qemu-boot" ], Getopt.Unit (fun () -> set_output_option_compat "qemu-boot" ""), -- s_"Boot in qemu (-o qemu only)"; - [ L"root" ], Getopt.String ("ask|... ", set_root_choice), - s_"How to choose root filesystem"; - [ L"vddk-config" ], Getopt.String ("filename", set_input_option_compat "vddk-config"), --- -2.31.1 - diff --git a/SOURCES/0012-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch b/SOURCES/0012-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch deleted file mode 100644 index dc4ce8c..0000000 --- a/SOURCES/0012-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 281273484f675b3ddba584ddc9751fc74653e67f Mon Sep 17 00:00:00 2001 -From: "Richard W.M. Jones" -Date: Fri, 24 Apr 2015 09:45:41 -0400 -Subject: [PATCH] RHEL: Fix list of supported sound cards to match RHEL qemu - (RHBZ#1176493). - ---- - lib/utils.ml | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/lib/utils.ml b/lib/utils.ml -index d6861d08..a2fccf29 100644 ---- a/lib/utils.ml -+++ b/lib/utils.ml -@@ -59,13 +59,14 @@ let kvm_arch = function - (* Does qemu support the given sound card? *) - let qemu_supports_sound_card = function - | Types.AC97 -- | Types.ES1370 - | Types.ICH6 - | Types.ICH9 - | Types.PCSpeaker -+ -> true -+ | Types.ES1370 - | Types.SB16 - | Types.USBAudio -- -> true -+ -> false - - (* Find the UEFI firmware. *) - let find_uefi_firmware guest_arch = --- -2.31.1 - diff --git a/SOURCES/0013-RHEL-Fixes-for-libguestfs-winsupport.patch b/SOURCES/0013-RHEL-Fixes-for-libguestfs-winsupport.patch deleted file mode 100644 index 2d487e2..0000000 --- a/SOURCES/0013-RHEL-Fixes-for-libguestfs-winsupport.patch +++ /dev/null @@ -1,104 +0,0 @@ -From aa4e5271d3fe02f252ace148b89e9894436a79fb Mon Sep 17 00:00:00 2001 -From: "Richard W.M. Jones" -Date: Sun, 30 Aug 2015 03:21:57 -0400 -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. ---- - convert/convert.ml | 1 + - convert/windows_virtio.ml | 1 + - test-data/phony-guests/make-windows-img.sh | 1 + - tests/test-v2v-virtio-win-iso.sh | 8 +++++++- - tests/test-v2v-windows-conversion.sh | 8 +++++++- - 5 files changed, 17 insertions(+), 2 deletions(-) - -diff --git a/convert/convert.ml b/convert/convert.ml -index f78e87ef..d61d7fb4 100644 ---- a/convert/convert.ml -+++ b/convert/convert.ml -@@ -53,6 +53,7 @@ let rec convert dir options source = - - message (f_"Opening the source"); - let g = open_guestfs ~identifier:"v2v" () in -+ g#set_program "virt-v2v"; - g#set_memsize (g#get_memsize () * 2); - (* 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/convert/windows_virtio.ml b/convert/windows_virtio.ml -index 1c5c148e..b3a35a0a 100644 ---- a/convert/windows_virtio.ml -+++ b/convert/windows_virtio.ml -@@ -283,6 +283,7 @@ and copy_from_virtio_win g inspect srcdir destdir filter missing = - let g2 = - try - let g2 = open_guestfs ~identifier:"virtio_win" () in -+ g#set_program "virt-v2v"; - g2#add_drive_opts virtio_win ~readonly:true; - g2#launch (); - g2 -diff --git a/test-data/phony-guests/make-windows-img.sh b/test-data/phony-guests/make-windows-img.sh -index 30908a91..73cf5144 100755 ---- a/test-data/phony-guests/make-windows-img.sh -+++ b/test-data/phony-guests/make-windows-img.sh -@@ -37,6 +37,7 @@ fi - - # Create a disk image. - guestfish < "$script" - :> "$expected" - -+cat >> "$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 -@@ -76,6 +76,12 @@ mktest () - :> "$script" - :> "$expected" - -+cat >> "$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 --- -2.31.1 - diff --git a/SOURCES/0014-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch b/SOURCES/0014-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch deleted file mode 100644 index f40d1f3..0000000 --- a/SOURCES/0014-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch +++ /dev/null @@ -1,26 +0,0 @@ -From a6b21f626a74c436563c14751f19f60a6433e153 Mon Sep 17 00:00:00 2001 -From: "Richard W.M. Jones" -Date: Thu, 2 Mar 2017 14:21:37 +0100 -Subject: [PATCH] RHEL: v2v: -i disk: force VNC as display (RHBZ#1372671) - -The SDL output mode is not supported in RHEL's qemu-kvm. ---- - input/input_disk.ml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/input/input_disk.ml b/input/input_disk.ml -index 0d92f256..753938f6 100644 ---- a/input/input_disk.ml -+++ b/input/input_disk.ml -@@ -70,7 +70,7 @@ let rec disk_source dir options args = - s_features = [ "acpi"; "apic"; "pae" ]; - s_firmware = UnknownFirmware; (* causes virt-v2v to autodetect *) - s_display = -- Some { s_display_type = Window; s_keymap = None; s_password = None; -+ Some { s_display_type = VNC; s_keymap = None; s_password = None; - s_listen = LNoListen; s_port = None }; - s_sound = None; - s_disks = s_disks; --- -2.31.1 - diff --git a/SOURCES/0015-RHEL-v2v-do-not-mention-SUSE-Xen-hosts-RHBZ-1430203.patch b/SOURCES/0015-RHEL-v2v-do-not-mention-SUSE-Xen-hosts-RHBZ-1430203.patch deleted file mode 100644 index 1180918..0000000 --- a/SOURCES/0015-RHEL-v2v-do-not-mention-SUSE-Xen-hosts-RHBZ-1430203.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 621a424738cb94f387171992af5352305121da6b Mon Sep 17 00:00:00 2001 -From: Pino Toscano -Date: Wed, 8 Mar 2017 11:03:40 +0100 -Subject: [PATCH] RHEL: v2v: do not mention SUSE Xen hosts (RHBZ#1430203) - -They are not supported in RHEL. ---- - docs/virt-v2v-input-xen.pod | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/docs/virt-v2v-input-xen.pod b/docs/virt-v2v-input-xen.pod -index cd3210bf..e9f336a9 100644 ---- a/docs/virt-v2v-input-xen.pod -+++ b/docs/virt-v2v-input-xen.pod -@@ -12,7 +12,7 @@ virt-v2v-input-xen - Using virt-v2v to convert guests from Xen - =head1 DESCRIPTION - - This page documents how to use L to convert guests from --RHEL 5 Xen, or SLES and OpenSUSE Xen hosts. -+RHEL 5 Xen hosts. - - =head1 INPUT FROM XEN - --- -2.31.1 - diff --git a/SOURCES/0016-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch b/SOURCES/0016-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch deleted file mode 100644 index cf87964..0000000 --- a/SOURCES/0016-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch +++ /dev/null @@ -1,127 +0,0 @@ -From af0265e36747be9e6e4d7f91af2529f20e91e7ab Mon Sep 17 00:00:00 2001 -From: Pino Toscano -Date: Tue, 26 Mar 2019 09:42:25 +0100 -Subject: [PATCH] RHEL: point to KB for supported v2v hypervisors/guests - ---- - docs/virt-v2v-support.pod | 104 ++------------------------------------ - 1 file changed, 4 insertions(+), 100 deletions(-) - -diff --git a/docs/virt-v2v-support.pod b/docs/virt-v2v-support.pod -index 9815f51f..1ffc0f9d 100644 ---- a/docs/virt-v2v-support.pod -+++ b/docs/virt-v2v-support.pod -@@ -8,106 +8,10 @@ systems and guests in virt-v2v - This page documents which foreign hypervisors, virtualization - management systems and guest types that L can support. - --Note this page applies to upstream virt-v2v from --L and in downstream distributions of virt-v2v --sometimes features are intentionally removed, or are present but not --supported. -- --=head2 Hypervisors (Input) -- --=over 4 -- --=item VMware ESXi -- --Must be managed by VMware vCenter E 5.0 unless VDDK is available. -- --=item OVA exported from VMware -- --OVAs from other hypervisors will not work. -- --=item VMX from VMware -- --VMX files generated by other hypervisors will not work. -- --=item RHEL 5 Xen -- --=item SUSE Xen -- --=item Citrix Xen -- --Citrix Xen has not been recently tested. -- --=item Hyper-V -- --Not recently tested. Requires that you export the disk or use --L on Hyper-V. -- --=item Direct from disk images -- --Only disk images exported from supported hypervisors, and using --container formats supported by qemu. -- --=item Physical machines -- --Using the L tool. -- --=back -- --=head2 Hypervisors (Output) -- --QEMU and KVM only. -- --=head2 Virtualization management systems (Output) -- --=over 4 -- --=item OpenStack -- --=item Red Hat Virtualization (RHV) 4.1 and up -- --=item Local libvirt -- --And hence L, L, and similar tools. -- --=item Local disk -- --=back -- --=head2 Guests -- --=over 4 -- --=item Red Hat Enterprise Linux 3, 4, 5, 6, 7 -- --=item CentOS 3, 4, 5, 6, 7 -- --=item Scientific Linux 3, 4, 5, 6, 7 -- --=item Oracle Linux -- --=item Fedora -- --=item SLES 10 and up -- --=item OpenSUSE 10 and up -- --=item ALT Linux 9 and up -- --=item Debian 6 and up -- --=item Ubuntu 10.04, 12.04, 14.04, 16.04, and up -- --=item Windows XP to Windows 10 / Windows Server 2016 -- --We use Windows internal version numbers, see --L -- --Currently NT 5.2 to NT 6.3 are supported. -- --See L below for additional notes on converting Windows --guests. -- --=back -+For more information on supported hypervisors, and guest types in -+RHEL, please consult the following Knowledgebase article on these -+Red Hat Customer Portal: -+L. - - =head2 Guest firmware - --- -2.31.1 - diff --git a/SOURCES/0017-RHEL-Disable-o-glance.patch b/SOURCES/0017-RHEL-Disable-o-glance.patch deleted file mode 100644 index e5446dd..0000000 --- a/SOURCES/0017-RHEL-Disable-o-glance.patch +++ /dev/null @@ -1,219 +0,0 @@ -From afec4c531c71de4f98115258d3eee17a25afae5e Mon Sep 17 00:00:00 2001 -From: "Richard W.M. Jones" -Date: Wed, 30 Jun 2021 11:15:52 +0100 -Subject: [PATCH] RHEL: Disable -o glance - -Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1977539 ---- - docs/virt-v2v-output-openstack.pod | 56 ++---------------------------- - docs/virt-v2v.pod | 20 ----------- - output/output_glance.mli | 2 +- - tests/test-v2v-o-glance.sh | 3 ++ - v2v/v2v.ml | 7 +--- - 5 files changed, 7 insertions(+), 81 deletions(-) - -diff --git a/docs/virt-v2v-output-openstack.pod b/docs/virt-v2v-output-openstack.pod -index f5a3abad..1ab356e8 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 - [-oo verify-server-certificate=false] - [-oo os-username=admin] [-oo os-*=*] - -- virt-v2v [-i* options] -o glance -- - =head1 DESCRIPTION - - This page documents how to use L to convert guests to run --on OpenStack. There are two output modes you can select, but only --I<-o openstack> should be used normally. -+on OpenStack. - - =over 4 - -@@ -27,15 +24,6 @@ Full description: L - This is the modern method for uploading to OpenStack via the REST API. - Guests can be directly converted into Cinder volumes. - --=item B<-o glance> -- --Full description: L -- --This is the old method for uploading to Glance. Unfortunately Glance --is not well suited to storing converted guests (since virt-v2v deals --with "pets" not templated "cattle"), so this method is not recommended --unless you really know what you are doing. -- - =back - - =head1 OUTPUT TO OPENSTACK -@@ -170,50 +158,10 @@ no Cinder volume type is used. - The following options are B supported with OpenStack: I<-oa>, - I<-of>. - --=head1 OUTPUT TO GLANCE -- --Note this is a legacy option. In most cases you should use --L instead. -- --To output to OpenStack Glance, use the I<-o glance> option. -- --This runs the L CLI program which must be installed on the --virt-v2v conversion host. For authentication to work, you will need --to set C environment variables. -- --Normally there is a file called C or C --which you can simply C to set everything up. -- --Virt-v2v adds metadata for the guest to Glance, describing such things --as the guest operating system and what drivers it requires. The --command C will display the metadata as "Property" --fields such as C and C. -- --=head2 Glance and sparseness -- --Glance image upload doesn't appear to correctly handle sparseness. --For this reason, using qcow2 will be faster and use less space on the --Glance server. Use the virt-v2v S> option. -- --=head2 Glance and multiple disks -- --If the guest has a single disk, then the name of the disk in Glance --will be the name of the guest. You can control this using the I<-on> --option. -- --Glance doesn't have a concept of associating multiple disks with a --single guest, and Nova doesn't allow you to boot a guest from multiple --Glance disks either. If the guest has multiple disks, then the first --(assumed to be the system disk) will have the name of the guest, and --the second and subsequent data disks will be called --C-disk2>, C-disk3> etc. It may be best to --leave the system disk in Glance, and import the data disks to Cinder. -- - =head1 SEE ALSO - - L, --L, --L. -+L. - - =head1 AUTHOR - -diff --git a/docs/virt-v2v.pod b/docs/virt-v2v.pod -index 04f3efd2..7c101513 100644 ---- a/docs/virt-v2v.pod -+++ b/docs/virt-v2v.pod -@@ -432,14 +432,6 @@ See L below. - - This is the same as I<-o local>. - --=item B<-o> B -- --This is a legacy option. You should probably use I<-o openstack> --instead. -- --Set the output method to OpenStack Glance. In this mode the converted --guest is uploaded to Glance. See L. -- - =item B<-o> B - - Set the output method to I. -@@ -1162,11 +1154,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). - --=item I<-o glance> -- --This temporarily places a full copy of the output disks in --C<$VIRT_V2V_TMPDIR> (or F). -- - =item I<-o local> - - =item I<-o qemu> -@@ -1351,13 +1338,6 @@ instance. - Because of how Cinder volumes are presented as F block devices, - using I<-o openstack> normally requires that virt-v2v is run as root. - --=item Writing to Glance -- --This does I need root (in fact it probably won’t work), but may --require either a special user and/or for you to source a script that --sets authentication environment variables. Consult the Glance --documentation. -- - =item Writing to block devices - - This normally requires root. See the next section. -diff --git a/output/output_glance.mli b/output/output_glance.mli -index 972320a2..9befc461 100644 ---- a/output/output_glance.mli -+++ b/output/output_glance.mli -@@ -18,4 +18,4 @@ - - (** [-o glance] output mode. *) - --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 -@@ -20,6 +20,9 @@ - - set -e - -+# Feature is disabled in RHEL 9. -+exit 77 -+ - source ./functions.sh - set -e - set -x -diff --git a/v2v/v2v.ml b/v2v/v2v.ml -index 503dfb55..39fef0fa 100644 ---- a/v2v/v2v.ml -+++ b/v2v/v2v.ml -@@ -205,7 +205,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 -- | "glance" -> output_mode := `Glance - | "libvirt" -> output_mode := `Libvirt - | "disk" | "local" -> output_mode := `Disk - | "json" -> output_mode := `JSON -@@ -257,7 +256,7 @@ let rec main () = - s_"Map network ‘in’ to ‘out’"; - [ L"no-trim" ], Getopt.String ("-", no_trim_warning), - s_"Ignored for backwards compatibility"; -- [ S 'o' ], Getopt.String ("glance|json|libvirt|local|null|openstack|qemu|rhv|rhv-upload|vdsm", set_output_mode), -+ [ S 'o' ], Getopt.String ("json|libvirt|local|null|openstack|qemu|rhv|rhv-upload|vdsm", set_output_mode), - s_"Set output mode (default: libvirt)"; - [ M"oa" ], Getopt.String ("sparse|preallocated", set_output_alloc), - s_"Set output allocation mode"; -@@ -325,8 +324,6 @@ virt-v2v -i libvirtxml guest-domain.xml -o local -os /var/tmp - - virt-v2v -i disk disk.img -o local -os /var/tmp - --virt-v2v -i disk disk.img -o glance -- - There is a companion front-end called \"virt-p2v\" which comes as an - ISO or CD image that can be booted on physical machines. - -@@ -396,7 +393,6 @@ read the man page virt-v2v(1). - pr "input:libvirtxml\n"; - pr "input:ova\n"; - pr "input:vmx\n"; -- pr "output:glance\n"; - pr "output:json\n"; - pr "output:libvirt\n"; - pr "output:local\n"; -@@ -486,7 +482,6 @@ read the man page virt-v2v(1). - | `Disk -> (module Output_disk.Disk) - | `Null -> (module Output_null.Null) - | `QEmu -> (module Output_qemu.QEMU) -- | `Glance -> (module Output_glance.Glance) - | `Openstack -> (module Output_openstack.Openstack) - | `RHV_Upload -> (module Output_rhv_upload.RHVUpload) - | `RHV -> (module Output_rhv.RHV) --- -2.31.1 - diff --git a/SOURCES/0018-RHEL-Remove-the-in-place-option.patch b/SOURCES/0018-RHEL-Remove-the-in-place-option.patch deleted file mode 100644 index 7ce8c7b..0000000 --- a/SOURCES/0018-RHEL-Remove-the-in-place-option.patch +++ /dev/null @@ -1,152 +0,0 @@ -From 39f31f9c86ed94699382b2c4d683fc1fd0d59195 Mon Sep 17 00:00:00 2001 -From: "Richard W.M. Jones" -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 | 51 +---------------------------------------------- - v2v/v2v.ml | 8 -------- - 2 files changed, 1 insertion(+), 58 deletions(-) - -diff --git a/docs/virt-v2v.pod b/docs/virt-v2v.pod -index 7c101513..4f89d2b2 100644 ---- a/docs/virt-v2v.pod -+++ b/docs/virt-v2v.pod -@@ -8,10 +8,6 @@ virt-v2v - Convert a guest to use KVM - [-o mode] [other -o* options] - [guest|filename] - -- virt-v2v --in-place -- [-i mode] [other -i* options] -- [guest|filename] -- - =head1 DESCRIPTION - - Virt-v2v converts a single guest from a foreign hypervisor to run on -@@ -37,12 +33,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 conversion (I<--in-place>) only uses the I<-i*> options and --modifies the source guest in-place. (See L --below.) -- - =head2 Other virt-v2v topics - - L — Supported hypervisors, virtualization -@@ -290,20 +280,6 @@ For I<-i disk> only, this specifies the format of the input disk - image. For other input methods you should specify the input - format in the metadata. - --=item B<--in-place> -- --Do not create an output virtual machine in the target hypervisor. --Instead, adjust the guest OS in the source VM to run in the input --hypervisor. -- --This mode is meant for integration with other toolsets, which take the --responsibility of converting the VM configuration, providing for --rollback in case of errors, transforming the storage, etc. -- --See L below. -- --Conflicts with all I<-o *> options. -- - =item B<-io> OPTION=VALUE - - Set input option(s) related to the current input mode or transport. -@@ -1278,7 +1254,7 @@ have at least 100 available inodes. - =head3 Minimum free space check in the host - - You must have sufficient free space in the host directory used to --store large temporary overlays (except in I<--in-place> mode). To -+store large temporary overlays. To - find out which directory this is, use: - - $ df -h "`guestfish get-cachedir`" -@@ -1410,31 +1386,6 @@ that instead. - - - --=head2 In-place conversion -- --It is also possible to use virt-v2v in scenarios where a foreign VM --has already been imported into a KVM-based hypervisor, but still needs --adjustments in the guest to make it run in the new virtual hardware. -- --In that case it is assumed that a third-party tool has created the --target VM in the supported KVM-based hypervisor based on the source VM --configuration and contents, but using virtual devices more appropriate --for KVM (e.g. virtio storage and network, etc.). -- --Then, to make the guest OS boot and run in the changed environment, --one can use: -- -- virt-v2v -ic qemu:///system converted_vm --in-place -- --Virt-v2v will analyze the configuration of C in the --C libvirt instance, and apply various fixups to the --guest OS configuration to make it match the VM configuration. This --may include installing virtio drivers, configuring the bootloader, the --mountpoints, the network interfaces, and so on. -- --Should an error occur during the operation, virt-v2v exits with an --error code leaving the VM in an undefined state. -- - =head2 Machine readable output - - The I<--machine-readable> option can be used to make the output more -diff --git a/v2v/v2v.ml b/v2v/v2v.ml -index 39fef0fa..a1143b68 100644 ---- a/v2v/v2v.ml -+++ b/v2v/v2v.ml -@@ -183,7 +183,6 @@ let rec main () = - let output_storage = ref None in - - (* Other options that we handle here. *) -- let in_place = ref false in - let print_source = ref false in - - let input_mode = ref `Not_set in -@@ -248,8 +247,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.Set in_place, -- s_"Only tune the guest in the input VM"; - [ 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), -@@ -347,7 +344,6 @@ read the man page virt-v2v(1). - - (* Dereference the arguments. *) - let args = List.rev !args in -- let in_place = !in_place in - let input_conn = !input_conn in - let input_mode = !input_mode in - let input_transport = -@@ -367,9 +363,6 @@ read the man page virt-v2v(1). - let root_choice = !root_choice in - let static_ips = !static_ips in - -- (* --in-place isn't implemented yet - TODO *) -- if in_place then error "XXX --in-place option is not implemented yet"; -- - (* No arguments and machine-readable mode? Print out some facts - * about what this binary supports. - *) -@@ -383,7 +376,6 @@ read the man page virt-v2v(1). - pr "vddk\n"; - pr "colours-option\n"; - pr "vdsm-compat-option\n"; -- pr "in-place\n"; - pr "io/oo\n"; - pr "mac-option\n"; - pr "bandwidth-option\n"; --- -2.31.1 - diff --git a/SOURCES/virt-v2v-1.45.96.tar.gz.sig b/SOURCES/virt-v2v-1.45.96.tar.gz.sig deleted file mode 100644 index 3d95d76..0000000 --- a/SOURCES/virt-v2v-1.45.96.tar.gz.sig +++ /dev/null @@ -1,17 +0,0 @@ ------BEGIN PGP SIGNATURE----- - -iQJFBAABCAAvFiEE93dPsa0HSn6Mh2fqkXOPc+G3aKAFAmHW+SkRHHJpY2hAYW5u -ZXhpYS5vcmcACgkQkXOPc+G3aKCH9g/+LcnZLSLWTtcb8ZeXsxdAX8hna4r15VsE -c4qZqT8/DJCrAw5aaP+udTryF01RMXogCeIx+zaEPioCNlISxQRBooKwz6V8ajP6 -vglyzu6veZ1TYwdnmnDhp8GThoP4NTtHRINMTOpgpMR6FKTIrdDGu6WN3DHaMCQL -E2nNBWKNOiiYZfR6O/mZlpxnnIag6O7/5ZM4QgGFdZXe83adYNNuB9Mg06RSt3wa -Ae9zaqBU3AonVZFe41XJv1Zs7uis7zUu03sHUDP1R6NpVfo1+93EKju71Tshd/Aq -9ZXN+3ELlj+9uYqTDycCbQWHzP/PuwtRNLAQVlQPm3S/emW54IaPAwU8auIboR4W -fhlWqFoYzDg4JRB44/N9+eTRUYDrDS5UgAzy5IwuOJMp0sLo4vl0mRa5y7ddDyG2 -sNI2TbJNFgOfKbRdcZD5JUQNuym5TXvd6LGzMOoLYFa6dOOx18LJHUvloVuHzZu5 -Y2AJFQDpOB6j3cG4dre/K2Nm806spBLbvYEMB4wBSJECfOTC6Toz0DeHoGsVlv08 -ATeaM9zKJyPUtnFKETY1v+tUnOc41bh8YHYhP/KrYOjC+pQlJsNZyPwmgL+WC8gw -zMmLfdKrmqNNeZD0uoWcPT0myqrnRdu69anqVHVLIEaBHsp9TwwxrIrfS028FtxP -u70vmzhQjM0= -=OjBh ------END PGP SIGNATURE----- diff --git a/SOURCES/virt-v2v-1.45.99.tar.gz.sig b/SOURCES/virt-v2v-1.45.99.tar.gz.sig new file mode 100644 index 0000000..d2fc384 --- /dev/null +++ b/SOURCES/virt-v2v-1.45.99.tar.gz.sig @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- + +iQJFBAABCAAvFiEE93dPsa0HSn6Mh2fqkXOPc+G3aKAFAmIL8EkRHHJpY2hAYW5u +ZXhpYS5vcmcACgkQkXOPc+G3aKCSExAAiEWAd+WvG8cf33xrDzAERh3Hg/E89iTv +P0Ue9HEWFb4yLEKckW7WjagDxrdBdf7VBkBY2wgkkUVq0o4bWhQVWEKPfgWXdiJC +5sE4wO4trCQDCyZLB/iSiH85oQVf839Jbk04qHWUU7DXsE6apL1LMi2xRUlMPRTf +6hZVe9WIjlKonzuteQslqVHKVhTZmqkr1NTkYq0OhCHFzMpb1xi0JQni9vKXIaSN +4vvaDXBzBZW+00iux1PE/Age9QC3AkSESF95Uqx6nYSF98aBEG+3ErcUkMXxL8+i +c6RYwqFC2oINEPHg46dZtZyAiJNVY4H7hAM1DDe47tFWvmLEIEgyS5XkPfdfReoX +vVheS+cn6uRbSGeG1iF2ru8ehb+uscatwFc9eWsvoQ10Mt477R7VoG6gTYfIAwP8 +hy5gCgyhlT9t1KKp/39UK4WIwSbIOl6vXH2Kpzam0wKb8xynHYU4cyvk4TGZk+ks ++a63+98ZYeL3hBHAIe2u1wDmgdbVSfvIcK7TEzFTPesAm2WqhkC08CPfinS9vCUI +VogUpze9+zHZaSBWHCPhfUBpUNF6tGvLRlH0B/ml/6E8csSQ+kT8CWl0ZGvJuNfB +es8QiAT5XXXTrNgAw782xZOP6aieNrnoNY0J7rFaAbL1OaIXC21lGWAPSZeCOOo/ +PRaJqt5iaDA= +=okD+ +-----END PGP SIGNATURE----- diff --git a/SPECS/virt-v2v.spec b/SPECS/virt-v2v.spec index 13f3c2c..7075010 100644 --- a/SPECS/virt-v2v.spec +++ b/SPECS/virt-v2v.spec @@ -14,7 +14,7 @@ Name: virt-v2v Epoch: 1 -Version: 1.45.96 +Version: 1.45.99 Release: 1%{?dist} Summary: Convert a virtual machine to run on KVM @@ -51,24 +51,15 @@ ExclusiveArch: x86_64 # Downstream (RHEL-only) patches. %if 0%{?rhel} # Patches. -Patch0001: 0001-lib-types-reformat-string_of_guestcaps.patch -Patch0002: 0002-lib-types-update-string_of_guestcaps.patch -Patch0003: 0003-lib-types-introduce-the-gcaps_virtio_1_0-guest-capab.patch -Patch0004: 0004-output-create_libvirt_xml-pick-virtio-transitional-m.patch -Patch0005: 0005-output-create_json-expose-gcaps_virtio_1_0.patch -Patch0006: 0006-convert-libosinfo-wrap-osinfo_os_get_all_devices.patch -Patch0007: 0007-convert-libosinfo_utils-introduce-string_of_osinfo_d.patch -Patch0008: 0008-convert-libosinfo_utils-introduce-os_support_of_osin.patch -Patch0009: 0009-convert-determine-machine-type-and-virtio-1.0-from-o.patch -Patch0010: 0010-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch -Patch0011: 0011-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch -Patch0012: 0012-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch -Patch0013: 0013-RHEL-Fixes-for-libguestfs-winsupport.patch -Patch0014: 0014-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch -Patch0015: 0015-RHEL-v2v-do-not-mention-SUSE-Xen-hosts-RHBZ-1430203.patch -Patch0016: 0016-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch -Patch0017: 0017-RHEL-Disable-o-glance.patch -Patch0018: 0018-RHEL-Remove-the-in-place-option.patch +Patch0001: 0001-RHEL-v2v-Select-correct-qemu-binary-for-o-qemu-mode-.patch +Patch0002: 0002-RHEL-v2v-Disable-the-qemu-boot-oo-qemu-boot-option-R.patch +Patch0003: 0003-RHEL-Fix-list-of-supported-sound-cards-to-match-RHEL.patch +Patch0004: 0004-RHEL-Fixes-for-libguestfs-winsupport.patch +Patch0005: 0005-RHEL-v2v-i-disk-force-VNC-as-display-RHBZ-1372671.patch +Patch0006: 0006-RHEL-v2v-do-not-mention-SUSE-Xen-hosts-RHBZ-1430203.patch +Patch0007: 0007-RHEL-point-to-KB-for-supported-v2v-hypervisors-guest.patch +Patch0008: 0008-RHEL-Disable-o-glance.patch +Patch0009: 0009-RHEL-Remove-the-in-place-option.patch %endif %if 0%{patches_touch_autotools} @@ -86,7 +77,7 @@ BuildRequires: bash-completion BuildRequires: file-devel BuildRequires: gettext-devel BuildRequires: jansson-devel -BuildRequires: libnbd-devel +BuildRequires: libnbd-devel >= 1.10.3 BuildRequires: libosinfo-devel BuildRequires: libvirt-daemon-kvm BuildRequires: libvirt-devel @@ -139,6 +130,7 @@ Requires: edk2-ovmf Requires: edk2-aarch64 %endif +Requires: platform-python Requires: libnbd >= 1.8.2-2.el9 Requires: %{_bindir}/qemu-nbd Requires: %{_bindir}/nbdcopy @@ -153,6 +145,7 @@ Requires: nbdkit-ssh-plugin %ifarch x86_64 Requires: nbdkit-vddk-plugin %endif +Requires: nbdkit-blocksize-filter Requires: nbdkit-cacheextents-filter Requires: nbdkit-cow-filter >= 1.26.5-1.el9 Requires: nbdkit-rate-filter @@ -309,11 +302,49 @@ popd %changelog -* Thu Jan 06 2022 Richard W.M. Jones - 1:1.45.96-1 -- Rebase to upstream 1.45.96. +* Tue Feb 15 2022 Richard W.M. Jones - 1:1.45.99-1 +- Rebase to upstream 1.45.99. +- Add check for sufficient free space in the host + resolves: rhbz#2051394 +- Update documentation of -ip for conversions from VMware over HTTPS + related: rhbz#1960087 +- -o rhv-upload: Keep connections alive + resolves: rhbz#2032324 +- -o rhv-upload: Improve conversion performance + resolves: rhbz#2039255 +- -o rhv-upload: Replace -oo rhv-direct with -oo rhv-proxy + resolves: rhbz#2033096 +- Fix log line wrapping making log parsing difficult (1820221) + +* Wed Feb 2 2022 Laszlo Ersek - 1:1.45.97-4 +- v2v import from vCenter fails when using interactive password because + cookie-script tries to be interactive + (pick commit 8abc07a8589a) + resolves: rhbz#1960087 +- model='virtio-transitional' is wrongly added when converting windows + guest to local by rhel9 v2v + (pick commit range commit range 8abc07a8589a..cacedec64072) + resolves: rhbz#2043333 + +* Wed Jan 26 2022 Richard W.M. Jones - 1:1.45.97-3 +- Rebase to upstream 1.45.97. resolves: rhbz#2011713 - Add virtio-transitional for older guests when converting to q35 resolves: rhbz#1942325 +- Fix -o rhv mode + resolves: rhbz#2027598 +- input: xen: Fix assertion error when importing from remote block device + resolves: rhbz#2041852 +- output: -o json: Allow -oo (output options) to work + resolves: rhbz#2041850 +- Fix virt-v2v hang when given incorrect vpx:// URL + resolves: rhbz#2041886 +- Fix hang when converting with virt-p2v + resolves: rhbz#2044911 +- Send nbdinfo debugging information to stderr + resolves: rhbz#2044922 +- Explicitly require platform-python + resolves: rhbz#2046178 * Thu Dec 23 2021 Laszlo Ersek - 1:1.45.95-3 - output_rhv: restrict block status collection to the old RHV output