GithubHelp home page GithubHelp logo

libguestfs / virt-v2v Goto Github PK

View Code? Open in Web Editor NEW
72.0 8.0 32.0 15.15 MB

Virt-v2v converts guests from foreign hypervisors to run on KVM

License: GNU General Public License v2.0

Makefile 8.39% Shell 14.27% M4 2.96% C 8.03% Perl 3.72% OCaml 57.09% Python 4.98% CSS 0.56%

virt-v2v's Introduction

Virt-v2v is a program that converts a single guest from a foreign
hypervisor to run on KVM.  It can read Linux and Windows guests
running on VMware, Xen, Hyper-V and some other hypervisors, and
convert them to KVM managed by libvirt, OpenStack, oVirt, Red Hat
Virtualisation (RHV) or several other targets.  It can modify the
guest to make it bootable on KVM and install virtio drivers so it will
run quickly.

There is also a companion front-end called virt-p2v
(https://github.com/libguestfs/virt-p2v) which comes as an ISO, CD or
PXE image that can be booted on physical machines to virtualize those
machines (physical to virtual, or p2v).

Virt-v2v and virt-p2v have been in continuous development since 2007.

For more information about virt-v2v and virt-p2v please read the
respective manual pages.  For virt-v2v, see the docs/ subdirectory in
the source tree.


BUILDING FROM SOURCE
======================================================================

To build from git:

  git submodule update --init
  autoreconf -i
  ./configure
  make

To build from tarball:

  ./configure
  make

You can run virt-v2v without installing it:

  ./run virt-v2v ...

To run the tests:

  make check


REQUIREMENTS
======================================================================

* libguestfs (https://libguestfs.org)

* OCaml bindings for libguestfs

* OCaml bindings for libvirt (https://gitlab.com/libvirt/libvirt-ocaml)

* libnbd >= 1.10 (https://gitlab.com/nbdkit/libnbd)

* The 'nbdinfo' and 'nbdcopy' programs from libnbd.

* OCaml bindings for libnbd

* nbdkit >= 1.27.4 (https://gitlab.com/nbdkit/nbdkit)

* These nbdkit plugins and filters:

  + nbdkit-curl-plugin
  + nbdkit-file-plugin
  + nbdkit-nbd-plugin
  + nbdkit-null-plugin
  + nbdkit-python-plugin
  + nbdkit-ssh-plugin
  + nbdkit-vddk-plugin

  + nbdkit-cacheextents-filter
  + nbdkit-cow-filter
  + nbdkit-multi-conn-filter
  + nbdkit-rate-filter
  + nbdkit-retry-filter

* qemu-nbd

* qemu-img

Optional, for enhancements to the basic program:

* OCaml gettext

* virtio-win (Windows virtio device drivers)

Optional, used by the test suite:

* guestfish

* OCaml oUnit2

virt-v2v's People

Contributors

agx avatar cbosdo avatar chenhanxiao avatar gaowanlong avatar hacxman avatar hillu avatar jeckersb avatar lantame avatar lersek avatar librarian avatar logan5 avatar maksbotan avatar mdbooth avatar meyering avatar msmhrt avatar nertpinx avatar nirs avatar noxdafox avatar nyoxi avatar olafhering avatar pbutsykin avatar piotrdrag avatar ptoscano avatar rvka avatar rwmjones avatar shulima avatar skalkoto avatar stenavin avatar weblate avatar yurchor avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

virt-v2v's Issues

Build instructions do not work

The release tarball is missing configure.sh and there is not a valid makefile in the release or git repo. Using GNU Make 4.3

~/virt-v2v-2.3.3 $ autoreconf -i
configure.ac: warning: AM_GNU_GETTEXT is used, but not AM_GNU_GETTEXT_VERSION or AM_GNU_GETTEXT_REQUIRE_VERSION
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'build-aux'.
libtoolize: copying file 'build-aux/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
libtoolize: copying file 'm4/libtool.m4'
libtoolize: copying file 'm4/ltoptions.m4'
libtoolize: copying file 'm4/ltsugar.m4'
libtoolize: copying file 'm4/ltversion.m4'
libtoolize: copying file 'm4/lt~obsolete.m4'
m4/guestfs-c.m4:23: warning: The macro `AC_PROG_CC_STDC' is obsolete.
m4/guestfs-c.m4:23: You should run autoupdate.
./lib/autoconf/c.m4:1671: AC_PROG_CC_STDC is expanded from...
m4/guestfs-c.m4:23: the top level
configure.ac:34: installing 'build-aux/compile'
configure.ac:45: installing 'build-aux/config.guess'
configure.ac:45: installing 'build-aux/config.sub'
configure.ac:37: installing 'build-aux/install-sh'
configure.ac:37: installing 'build-aux/missing'
configure.ac:129: error: required file 'common/options/Makefile.in' not found
configure.ac:129: error: required file 'common/mlcustomize/Makefile.in' not found
configure.ac:129: error: required file 'common/mldrivers/Makefile.in' not found
configure.ac:129: error: required file 'common/mlgettext/Makefile.in' not found
configure.ac:129: error: required file 'common/mlpcre/Makefile.in' not found
configure.ac:129: error: required file 'common/mlstdutils/Makefile.in' not found
configure.ac:129: error: required file 'common/mlstdutils/guestfs_config.ml.in' not found
configure.ac:129: error: required file 'common/mltools/Makefile.in' not found
configure.ac:129: error: required file 'common/mlutils/Makefile.in' not found
configure.ac:129: error: required file 'common/mlv2v/Makefile.in' not found
configure.ac:129: error: required file 'common/mlxml/Makefile.in' not found
configure.ac:129: error: required file 'common/qemuopts/Makefile.in' not found
configure.ac:129: error: required file 'common/utils/Makefile.in' not found
Makefile.am:22: error: required directory ./common/mlstdutils does not exist
Makefile.am:22: error: required directory ./common/qemuopts does not exist
Makefile.am:22: error: required directory ./common/utils does not exist
Makefile.am:22: error: required directory ./common/mlutils does not exist
Makefile.am:22: error: required directory ./common/mlpcre does not exist
Makefile.am:22: error: required directory ./common/options does not exist
Makefile.am:22: error: required directory ./common/mlgettext does not exist
Makefile.am:22: error: required directory ./common/mlxml does not exist
Makefile.am:22: error: required directory ./common/mltools does not exist
Makefile.am:22: error: required directory ./common/mlcustomize does not exist
Makefile.am:22: error: required directory ./common/mldrivers does not exist
Makefile.am:22: error: required directory ./common/mlv2v does not exist
parallel-tests: installing 'build-aux/test-driver'
convert/Makefile.am: installing 'build-aux/depcomp'
autoreconf-2.71: error: automake failed with exit status: 1

build instructions do not work, AM_GNU_GETTEXT

virt-v2v$ sudo apt install libguestfs-dev libnbd-dev  # you may want to add this to the instructions
virt-v2v$ autoreconf -i
m4/guestfs-libraries.m4:77: warning: macro 'AM_GNU_GETTEXT' not found in library
m4/guestfs-libraries.m4:77: warning: macro 'AM_GNU_GETTEXT' not found in library
m4/guestfs-c.m4:23: warning: The macro `AC_PROG_CC_STDC' is obsolete.
m4/guestfs-c.m4:23: You should run autoupdate.
./lib/autoconf/c.m4:1666: AC_PROG_CC_STDC is expanded from...
m4/guestfs-c.m4:23: the top level
virt-v2v$ ./configure 
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether gcc accepts -g... yes
checking for gcc option to enable C11 features... none needed
checking whether gcc understands -c and -o together... yes
checking for stdio.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for strings.h... yes
checking for sys/stat.h... yes
checking for sys/types.h... yes
checking for unistd.h... yes
checking for wchar.h... yes
checking for minix/config.h... no
checking whether it is safe to define __EXTENSIONS__... yes
checking whether _XOPEN_SOURCE should be defined... no
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a race-free mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports the include directive... yes (GNU style)
checking whether make supports nested variables... yes
checking how to create a pax tar archive... gnutar
checking dependency style of gcc... gcc3
checking whether make supports nested variables... (cached) yes
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking how to print strings... printf
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for a working dd... /usr/bin/dd
checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
checking for mt... mt
checking if mt is a manifest tool... no
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking if 2.3 is a stable or development branch of virt-v2v... development
configure: virt-v2v version 2.3.3

--- Checking for external programs ---
checking for a sed that does not truncate output... (cached) /usr/bin/sed
checking for gawk... (cached) gawk
checking whether ln -s works... yes
checking for xorrisofs... /usr/bin/xorrisofs
checking for po4a-gettextize... no
checking for po4a-translate... no
checking for sqlite3... sqlite3
checking for zip... /usr/bin/zip
checking for unzip... /usr/bin/unzip
checking for valgrind... no
checking for pycodestyle... no

--- Checking for the C compiler environment ---
checking how to run the C preprocessor... gcc -E
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... no
checking size of long... 8
checking if __attribute__((cleanup(...))) works with this compiler... yes

--- Checking for libraries used by virt-v2v ---
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for libguestfs >= 1.44... yes
checking for libnbd... yes
checking for gcc options needed to detect all undeclared functions... none needed
checking whether strerror_r is declared... yes
checking whether strerror_r returns char *... yes
checking for byteswap.h... yes
checking for errno.h... yes
checking for linux/magic.h... yes
checking for sys/mount.h... yes
checking for sys/socket.h... yes
checking for sys/statfs.h... yes
checking for sys/statvfs.h... yes
checking for sys/time.h... yes
checking for sys/types.h... (cached) yes
checking for sys/un.h... yes
checking for sys/vfs.h... yes
checking for sys/wait.h... yes
checking for windows.h... no
checking for fsync... yes
checking for posix_fadvise... yes
checking for statfs... yes
checking for statvfs... yes
checking for sync... yes
checking for sys/mkdev.h... no
checking for sys/sysmacros.h... yes
checking for xgettext... no
checking for msgcat... no
checking for msgfmt... no
checking for msgmerge... no
checking msgfmt is GNU tool... no
./configure: line 15128: syntax error near unexpected token `external'
./configure: line 15128: `AM_GNU_GETTEXT(external)'

installing libglib2.0-dev did not help

Support for PhotonOS

Hi Folks,

I ran into the following failure while trying to migrate a PhotonOS(https://vmware.github.io/photon/) guest with virt-v2v where virt-v2v complained of not being able to detect the distro of the guest. Logs:

Failed to determine unit we run in, ignoring: No data available
guestfsd: => inspect_get_distro (0x1e4) took 0.01 secs
libguestfs: trace: v2v: inspect_get_distro = "unknown"
i_root = /dev/sda3
i_type = linux
i_distro = unknown
i_osinfo = unknown
i_arch = x86_64
i_major_version = 5
i_minor_version = 0
i_package_format = unknown
i_package_management = unknown
i_product_name = VMware Photon OS 5.0
i_product_variant = unknown
i_windows_systemroot = 
i_windows_software_hive = 
i_windows_system_hive = 
i_windows_current_control_set = 

virt-v2v: error: inspection could not detect the source guest (or physical machine).

Assuming that you are running virt-v2v/virt-p2v on a source which is supported (and not, for example, a blank dis
k), then this should not happen.

Inspection field ‘i_distro’ was ‘unknown’.
rm -rf -- '/tmp/v2vnbdkit.bcTLgc'
rm -rf -- '/tmp/v2v.tCVBMC'
libguestfs: trace: v2v: close

Full logs gist: https://gist.github.com/prakashmishra1598/60e6f814b9fc5014ff3dae020e77303b

Based on discussions here: kubev2v/forklift#494 (comment), the support is needed at virt-v2v level and I wanted to continue the discussion here to understand the efforts required to add support for PhotonOS in virt-v2v

[RFE] Add support for Windows virtio-scsi / vioscsi

As documented virt-v2v currently only supports virtio-blk (viostor.sys).

Check that you are presenting a virtio-blk interface (not virtio-scsi and not ide) to the guest.
https://libguestfs.org/virt-v2v.1.html#boot-failure:-0x0000007b

let filenames = ["virtio_blk"; "vrtioblk"; "viostor"] in

This can cause problems in environments where only virtio-scsi is supported.
Such environments are for example Hetzner Cloud and LXD VMs which are opinionated qemu-based VMs that exclusively use UEFI and only virtio devices (restricted to only virtio-scsi type disks).

Issues running `make check`

I've built virt-v2v (2.2.0 from downloads on libguestfs.org, but also from git head of tree, 2.3.5, and 2.2.0), but every build fails make check at the same spot. I'm wondering if I have a too new/old version of the guestfs perl module?

All builds are done on an Ubuntu 22.04 system.

perl module in question is from the distro and is:

Package: libguestfs-perl
Version: 1:1.46.2-10ubuntu3

make check error:

SRCDIR=. LAYOUT=partitions-md ../../run --test ./make-fedora-img.pl
md_create: mdadm: bootdev: mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
mdadm: Defaulting to version 1.2 metadata
mdadm: RUN_ARRAY failed: Invalid argument at ./make-fedora-img.pl line 103.
/root/stable-v2v/virt-v2v-2.2.0/run: command failed with exit code 22
make[3]: *** [Makefile:921: stamp-fedora-md.img] Error 22
make[3]: Leaving directory '/root/stable-v2v/virt-v2v-2.2.0/test-data/phony-guests'
make[2]: *** [Makefile:734: check-am] Error 2
make[2]: Leaving directory '/root/stable-v2v/virt-v2v-2.2.0/test-data/phony-guests'
make[1]: *** [Makefile:629: check-recursive] Error 1
make[1]: Leaving directory '/root/stable-v2v/virt-v2v-2.2.0/test-data'
make: *** [Makefile:849: check-recursive] Error 1

virt-v2v didn't find vmdk file

Converting a VMware guest from vmx+vmdk file failed claiming there is no disk:

$ virt-v2v -i vmx KR\ C,\ V8.3.OL_Build07.vmx -o qemu -os qemu -v -x
virt-v2v: virt-v2v 1.43.4 (x86_64)
libvirt version: 7.0.0
[ 0.0] Opening the source -i vmx KR C, V8.3.OL_Build07.vmx
VMX file:
.encoding = "windows-1252"
config.version = "8"
virtualHW.version = "7"
scsi0.present = "TRUE"
scsi0.virtualDev = "lsisas1068"
memsize = "2048"
mem.hotadd = "TRUE"
ide0:0.present = "TRUE"
ide0:0.fileName = "KR C, V8.3.OL_Build07.vmdk"
ethernet0.present = "TRUE"
ethernet0.connectionType = "bridged"
ethernet0.virtualDev = "e1000"
ethernet0.wakeOnPcktRcv = "FALSE"
ethernet0.addressType = "generated"
usb.present = "TRUE"
ehci.present = "TRUE"
sound.present = "TRUE"
sound.startConnected = "FALSE"
sound.fileName = "-1"
sound.autodetect = "TRUE"
mks.enable3d = "FALSE"
serial0.present = "TRUE"
serial0.fileType = "thinprint"
pciBridge0.present = "TRUE"
pciBridge4.present = "TRUE"
pciBridge4.virtualDev = "pcieRootPort"
pciBridge4.functions = "8"
pciBridge5.present = "TRUE"
pciBridge5.virtualDev = "pcieRootPort"
pciBridge5.functions = "8"
pciBridge6.present = "TRUE"
pciBridge6.virtualDev = "pcieRootPort"
pciBridge6.functions = "8"
pciBridge7.present = "TRUE"
pciBridge7.virtualDev = "pcieRootPort"
pciBridge7.functions = "8"
vmci0.present = "TRUE"
roamingVM.exitBehavior = "go"
displayName = "KR C, V8.3.OL_Build07"
guestOS = "windows7"
nvram = "KR C, V8.3.OL_Build06.nvram"
virtualHW.productCompatibility = "hosted"
printers.enabled = "TRUE"
easyInstall.keepFloppy = "TRUE"
extendedConfigFile = "KR C, V8.3.OL_Build07.vmxf"
numvcpus = "2"
cpuid.coresPerSocket = "2"
ethernet0.generatedAddress = "00:0c:29:b2:85:86"
tools.syncTime = "FALSE"
uuid.location = "56 4d 1f 4a 50 65 9e ae-4c 73 72 86 4c b2 85 86"
uuid.bios = "56 4d 1f 4a 50 65 9e ae-4c 73 72 86 4c b2 85 86"
cleanShutdown = "TRUE"
replay.supported = "FALSE"
unity.wasCapable = "FALSE"
replay.filename = ""
ide0:0.redo = ""
pciBridge0.pciSlotNumber = "17"
pciBridge4.pciSlotNumber = "21"
pciBridge5.pciSlotNumber = "22"
pciBridge6.pciSlotNumber = "23"
pciBridge7.pciSlotNumber = "24"
scsi0.pciSlotNumber = "160"
usb.pciSlotNumber = "32"
ethernet0.pciSlotNumber = "33"
sound.pciSlotNumber = "34"
ehci.pciSlotNumber = "35"
vmci0.pciSlotNumber = "36"
scsi0.sasWWID = "50 05 05 6a 50 65 9e a0"
vmotion.checkpointFBSize = "16777216"
usb:0.present = "TRUE"
usb:1.present = "TRUE"
ethernet0.generatedAddressOffset = "0"
vmci0.id = "761629234"
usb:1.deviceType = "hub"
usb:0.deviceType = "mouse"
ethernet0.linkStatePropagation.enable = "TRUE"
isolation.tools.hgfs.disable = "TRUE"
sharedFolder.maxNum = "1"
hgfs.mapRootShare = "FALSE"
sharedFolder0.present = "FALSE"
ide1:0.present = "FALSE"
floppy0.present = "FALSE"

parsed VMX tree:
namespace '':
encoding = "windows-1252"
cleanshutdown = "TRUE"
namespace 'config':
version = "8"
namespace 'cpuid':
corespersocket = "2"
displayname = "KR C, V8.3.OL_Build07"
namespace 'easyinstall':
keepfloppy = "TRUE"
namespace 'ehci':
pcislotnumber = "35"
present = "TRUE"
namespace 'ethernet0':
addresstype = "generated"
connectiontype = "bridged"
generatedaddress = "00:0c:29:b2:85:86"
generatedaddressoffset = "0"
namespace 'linkstatepropagation':
enable = "TRUE"
pcislotnumber = "33"
present = "TRUE"
virtualdev = "e1000"
wakeonpcktrcv = "FALSE"
extendedconfigfile = "KR C, V8.3.OL_Build07.vmxf"
namespace 'floppy0':
present = "FALSE"
guestos = "windows7"
namespace 'hgfs':
maprootshare = "FALSE"
namespace 'ide0:0':
filename = "KR C, V8.3.OL_Build07.vmdk"
present = "TRUE"
redo = ""
namespace 'ide1:0':
present = "FALSE"
namespace 'isolation':
namespace 'tools':
namespace 'hgfs':
disable = "TRUE"
namespace 'mem':
hotadd = "TRUE"
memsize = "2048"
namespace 'mks':
enable3d = "FALSE"
numvcpus = "2"
nvram = "KR C, V8.3.OL_Build06.nvram"
namespace 'pcibridge0':
pcislotnumber = "17"
present = "TRUE"
namespace 'pcibridge4':
functions = "8"
pcislotnumber = "21"
present = "TRUE"
virtualdev = "pcieRootPort"
namespace 'pcibridge5':
functions = "8"
pcislotnumber = "22"
present = "TRUE"
virtualdev = "pcieRootPort"
namespace 'pcibridge6':
functions = "8"
pcislotnumber = "23"
present = "TRUE"
virtualdev = "pcieRootPort"
namespace 'pcibridge7':
functions = "8"
pcislotnumber = "24"
present = "TRUE"
virtualdev = "pcieRootPort"
namespace 'printers':
enabled = "TRUE"
namespace 'replay':
filename = ""
supported = "FALSE"
namespace 'roamingvm':
exitbehavior = "go"
namespace 'scsi0':
pcislotnumber = "160"
present = "TRUE"
saswwid = "50 05 05 6a 50 65 9e a0"
virtualdev = "lsisas1068"
namespace 'serial0':
filetype = "thinprint"
present = "TRUE"
namespace 'sharedfolder':
maxnum = "1"
namespace 'sharedfolder0':
present = "FALSE"
namespace 'sound':
autodetect = "TRUE"
filename = "-1"
pcislotnumber = "34"
present = "TRUE"
startconnected = "FALSE"
namespace 'tools':
synctime = "FALSE"
namespace 'unity':
wascapable = "FALSE"
namespace 'usb':
pcislotnumber = "32"
present = "TRUE"
namespace 'usb:0':
devicetype = "mouse"
present = "TRUE"
namespace 'usb:1':
devicetype = "hub"
present = "TRUE"
namespace 'uuid':
bios = "56 4d 1f 4a 50 65 9e ae-4c 73 72 86 4c b2 85 86"
location = "56 4d 1f 4a 50 65 9e ae-4c 73 72 86 4c b2 85 86"
namespace 'virtualhw':
productcompatibility = "hosted"
version = "7"
namespace 'vmci0':
id = "761629234"
pcislotnumber = "36"
present = "TRUE"
namespace 'vmotion':
checkpointfbsize = "16777216"
source name: KR C, V8.3.OL_Build07
hypervisor type: vmware
VM genid:
memory: 2147483648 (bytes)
nr vCPUs: 2
CPU vendor:
CPU model:
CPU topology: sockets: 1 cores/socket: 2 threads/core: 1
CPU features:
firmware: bios
display:
video:
sound:
disks:

removable media:

NICs:
Bridge "ethernet0" mac: 00:0c:29:b2:85:86 [e1000]

virt-v2v: error: source has no hard disks!

virt-v2v 2.2.0 not handling vmware guests with spaces in the name

virt-v2v 2.2.0 (as packaged in debian 12) fails to convert:

/vmfs/volumes/630cd6f1-0adec4cd-8b43-e0d55e25f3e4/bsanders win test/bsanders win test.vmx using -it ssh for VMware.

Specifically, the error in question:

virt-v2v -v -x -o local -of qcow2 -oa sparse -os /tmp/staging/esxi-host/converted/bsanders_win_test -on bsanders_win_test -i vmx -it ssh ssh://root@esxi-host/vmfs/volumes/630cd6f1-0adec4cd-8b43-e0d55e25f3e4/bsanders%20win%20test/bsanders%20win%20test.vmx
<snip of lots of debug output I can happily provide>
ssh 'root'@'esxi-host' test -f '/vmfs/volumes/630cd6f1-0adec4cd-8b43-e0d55e25f3e4/bsanders win test/bsanders win test-flat.vmdk'
sh: win: unknown operand
virt-v2v: error: This transport does not support guests with snapshots. 
Either collapse the snapshots for this guest and try the conversion again, 
or use one of the alternate conversion methods described in 
virt-v2v-input-vmware(1) section "NOTES".
Unix.Unix_error(Unix.ENOENT, "unlink", "/tmp/v2v.dfNaCn/in0")
rm -rf -- '/tmp/vmx.lGuf8v'
rm -rf -- '/tmp/v2v.dfNaCn'

Note the test -f command. The documentation [0] suggested to convert characters to %20, and in virt-v2v 1.4, this works as expected. The error message is inaccurate - this VM does not have snapshots.

The same ssh test line from v2v 1.4, note the subtle difference in quoting:

ssh 'root'@'esxi-host' test -f ''\''/vmfs/volumes/630cd6f1-0adec4cd-8b43-e0d55e25f3e4/bsanders win test/bsanders win test-flat.vmdk'\'''

[0] https://libguestfs.org/virt-v2v-input-vmware.1.html - "VMX: Construct the SSH URI"

ova: tar output parsing fails with other locale

Hi,

I'm migrating from virt-convert to virt-v2v. I encounter the following error :

$ virt-v2v -v -x -i ova cornac.ova -o libvirt 
virt-v2v: virt-v2v 1.43.5 (x86_64)
libvirt version: 7.0.0
[   0.0] Opening the source -i ova cornac.ova
qemu-img info json:'{ "file": { "driver": "raw", "offset": 512, "size": 512, "file": { "filename": "/tmp/v2vqemuimgtst110010.img" } } }' >/dev/null
qemu-img supports "offset" and "size" in json URLs: true
libguestfs: trace: set_verbose true
libguestfs: trace: set_verbose = 0
libguestfs: trace: get_backend
libguestfs: trace: get_backend = "direct"
tar -tf 'cornac.ova'
tar -xf 'cornac.ova' -C '/var/tmp/ova.b0jm2D' 'cornac.ovf'
ova: testing if cornac-sda.vmdk exists in cornac.ova
ova: file exists
tar tRvf 'cornac.ova'
libguestfs: trace: close
libguestfs: closing guestfs handle 0x55c1f751e7b0 (state 0)
virt-v2v: error: failed to parse line returned by tar: "bloc 0 : -rw-r--r-- 
bersace/bersace 3702 2020-11-12 15:16 cornac.ovf"
rm -rf '/var/tmp/ova.b0jm2D'
rm -rf '/var/tmp/null.v6fmgC'

This ova is generated with tar from https://gitlab.com/dalibo/cornac/-/blob/master/appliance/cornac.ovf and a vmdk generated by packer.

Do you have a clue on what is wrong with this .ova ?

virt-v2v missing firmware type for kubvirt and local output

Currently, when converting VMs, we've noticed that the firmware type field is missing in the output produced for both -o local and -o kubevirt options. Virt-v2v has the capability to determine the correct type from the disk, even when it's not explicitly specified in the configuration. By posting this output, we can ensure the VM is configured correctly.

virt-v2v 2.5.2 not detecting the firmware type correctly in some flows

When converting from OVA file that isnt specifing the firmware type in OVF configuration, the result yaml file contains the wrong firmware type.

attaching some conversion logs of VM with UEFI:

from the conversion steps it didnt recognize the UEFI type:

[ 105.9] Setting up the destination: -o kubevirt -os /var/tmp/v2v
[ 105.9] Assigning disks to buses
virtio-blk slot 0:
	0 [scsi]
[ 105.9] Checking if the guest needs BIOS or UEFI to boot

but from the debug logs it does recognizing UEFI, for example:

First-stage UEFI bootloader, app2_description: Initial UEFI bootloader that handles chaining to a trusted full\nbootloader under secure boot environments. This package contains the\nversion signed by the UEFI signing service.

and we ended up having this yaml:

apiVersion: kubevirt.io/v1
kind: VirtualMachineInstance
metadata:
  name: vm-mkzy
spec:
  domain:
    os:
      firmware: bios
    resources:
      requests:
        memory: 4096Mi
      features:
    cpu:
      cores: 2
    devices:
      rng: {}
      disks:
      - disk:
          bus: virtio
        name: disk-0
  volumes:
  - hostDisk:
      path: /var/tmp/v2v/vm-mkzy-sda
      type: Disk
    name: disk-0
  terminationGracePeriodSeconds: 0

expected:

  domain:
    os:
      firmware: uefi

Full conversion logs are attached.
virt-v2v-logs.txt

Running Make result in error: This expression has type int64 but an expression was expected of type int32

OS
Linux hostname 5.15.0-101.103.2.1.el8uek.x86_64 #2 SMP Mon May 1 20:11:30 PDT 2023 x86_64 x86_64 x86_64 GNU/Linux

OCaml
The OCaml toplevel, version 4.07.0

virt-v2v
GA and Latest Tags result in same error

Making all in lib
make[2]: Entering directory '/opt/virt-v2v/lib'
CC libmlv2vlib_a-dummy.o
OCAMLCMI config.cmi
OCAMLOPT config.cmx
OCAMLCMI types.cmi
OCAMLOPT types.cmx
OCAMLCMI utils.cmi
OCAMLOPT utils.cmx
File "utils.ml", line 253, characters 34-37:
Error: This expression has type int64 but an expression was expected of type
int32
make[2]: *** [Makefile:927: utils.cmx] Error 2
make[2]: Leaving directory '/opt/virt-v2v/lib'
make[1]: *** [Makefile:846: all-recursive] Error 1
make[1]: Leaving directory '/opt/virt-v2v'
make: *** [Makefile:764: all] Error 2

I tried looking at the lib/utils.ml file on 250 but i dont know OCaml language ;(

Any idea whats up here?

Error when converting ovf2.0 ova file

I want to convert an ovf2.0 ova file to libvirt format so that I can use it in virt-manager.
However, when I try to use the following command:

virt-v2v -i ova xxx.ova # xxx.ova is the filename

However, it seems like virt-v2v cannot understand the content of the .mf file in the ova file.
The output is: (Some information has been replaced with xxx)

virt-v2v: virt-v2v 1.44.2 (x86_64)
libvirt version: 8.0.0
[   0.0] Opening the source -i ova ubuntu22.04-NetworkCourse-v0.1.ova
qemu-img info json:'{ "file": { "driver": "raw", "offset": 512, "size": 512, "file": { "filename": "/tmp/v2vqemuimgtst0b3733.img" } } }' >/dev/null
qemu-img supports "offset" and "size" in json URLs: true
libguestfs: trace: set_verbose true
libguestfs: trace: set_verbose = 0
libguestfs: trace: get_backend
libguestfs: trace: get_backend = "direct"
tar -tf 'xxx.ova'
tar -xf 'xxx.ova' -C '/var/tmp/ova.0bDvEc' 'ubuntu22.ovf' 'ubuntu22.mf'
libguestfs: trace: set_verbose true
libguestfs: trace: set_verbose = 0
libguestfs: trace: get_backend
libguestfs: trace: get_backend = "direct"
ova: orig_ova = xxx, top_dir = /var/tmp/ova.0bDvEc, ova_type = TarOptimized xxx
ova: processing manifest file /var/tmp/ova.0bDvEc/ubuntu22.mf
libguestfs: trace: close
libguestfs: closing guestfs handle 0x56393e07d3f0 (state 0)
libguestfs: trace: close
libguestfs: closing guestfs handle 0x56393e097710 (state 0)
virt-v2v: warning: unable to parse line from manifest file: "SHA256 
(ubuntu22-disk001.vmdk) = 
f99d291dc42a96f6f07a6df9d4f44xxxxxxecd20d913d61e609b68dcf779"
virt-v2v: warning: unable to parse line from manifest file: "SHA256 
(ubuntu22.ovf) = 
1aeb4c15217a0a92e3e08492551xxxxxx361a609976269c90b45c39164"
virt-v2v: warning: could not parse ovf:Name from OVF document
    source name: xxx
hypervisor type: vmware
       VM genid: 
         memory: 1099511627776 (bytes)
       nr vCPUs: 1
     CPU vendor: 
      CPU model: 
   CPU topology: 
   CPU features: 
       firmware: bios
        display: 
          video: 
          sound: 
disks:

removable media:

NICs:


virt-v2v: error: source has no hard disks!
rm -rf '/var/tmp/ova.0bDvEc'
rm -rf '/var/tmp/null.i3cg6v'

Unknown filesystem type 'ntfs' when trying to migrate a Windows server 2016 VM

Hi Folks. I ran into the above mentioned error when trying to migrate a VM on vCenter that is running Windows Server 2012/2016 VMs.

Logs:

│ command: lvm 'lvs' '-o' 'vg_name,lv_name' '-S' 'lv_role=public && lv_skip_activation!=yes' '--noheadings' '--separator' '/'                                                                                                                                │
│ command: lvm returned 0                                                                                                                                                                                                                                    │
│ check_for_filesystem_on: /dev/sda1 (ntfs)                                                                                                                                                                                                                  │
│ command: mount '-o' 'ro' '/dev/sda1' '/sysroot//'                                                                                                                                                                                                          │
│ command: mount returned 32                                                                                                                                                                                                                                 │
│ command: mount: stderr:                                                                                                                                                                                                                                    │
│ mount: /sysroot: unknown filesystem type 'ntfs'.                                                                                                                                                                                                           │
│ check_for_filesystem_on: /dev/sda2 (ntfs)                                                                                                                                                                                                                  │
│ command: mount '-o' 'ro' '/dev/sda2' '/sysroot//'                                                                                                                                                                                                          │
│ command: mount returned 32                                                                                                                                                                                                                                 │
│ command: mount: stderr:                                                                                                                                                                                                                                    │
│ mount: /sysroot: unknown filesystem type 'ntfs'.                                                                                                                                                                                                           │
│ inspect_os: fses:                                                                                                                                                                                                                                          │
│ inspect_get_roots: roots:                                                                                                                                                                                                                                  │
│ guestfsd: => inspect_os (0x1e0) took 0.59 secs                                                                                                                                                                                                             │
│ libguestfs: trace: v2v: inspect_os = []                                                                                                                                                                                                                    │
│ virt-v2v: error: inspection could not detect the source guest (or physical                                                                                                                                                                                 │
│ machine).                                                                                                                                                                                                                                                  │
│                                                                                                                                                                                                                                                            │
│ Assuming that you are running virt-v2v/virt-p2v on a source which is                                                                                                                                                                                       │
│ supported (and not, for example, a blank disk), then this should not                                                                                                                                                                                       │
│ happen.                                                                                                                                                                                                                                                    │
│                                                                                                                                                                                                                                                            │
│ No root device found in this operating system image.                                                                                                                                                                                                       │
│ rm -rf '/var/tmp/null.EqtLqY'                                                                                                                                                                                                                              │
│ libguestfs: trace: v2v: close                                                                                                                                                                                                                              │
│ libguestfs: closing guestfs handle 0x55690d7a9580 (state 2)                                                                                                                                                                                                │
│ libguestfs: trace: v2v: internal_autosync                                                                                                                                                                                                                  │
│ guestfsd: <= internal_autosync (0x11a) request length 40 bytes                                                                                                                                                                                             │
│ umount-all: /proc/mounts: fsname=/dev/root dir=/ type=ext2 opts=rw,noatime freq=0 passno=0 

I came across this info on libguestfs-FAQ that said:

"mount: unsupported filesystem type" with NTFS in RHEL ≥ 7.2

In RHEL 7.2 we were able to add libguestfs-winsupport to the base RHEL distribution, but we had to disable the ability to use it for opening and editing filesystems. It is only supported when used with virt-v2v(1). If you try to use guestfish(1) or guestmount(1) or some other programs on an NTFS filesystem, you will see the error:

 mount: unsupported filesystem type

This is not a supported configuration, and it will not be made to work in RHEL. Don't bother to open a bug about it, as it will be immediately CLOSED -> WONTFIX.

You may compile your own libguestfs removing this restriction, but that won't be endorsed or supported by Red Hat.

I just wanted to understand about what versions of virt-v2v support conversion of operating systems with an NTFS filesystem. I've tried with 1.44.x and 2.3.x with the same results

windows 2012R2 not finding disks

i used the virt-v2v on

Alma 8.6
1.42 virt-v2v
libvirt 8.0
qemu 6.2

when i try to convert i get following info about GPO:

virt-v2v: warning: this guest has Windows Group Policy Objects (GPO) and a
new virtio block device driver was installed. In some circumstances, Group
Policy may prevent new drivers from working (resulting in a 7B boot error).
If this happens, try disabling Group Policy before doing the conversion.

Windows vm have only local group policy and i disabled computer and user policy temp. When trying to boot the vm no disks found.

command i used:
virt-v2v -i ova test.ova -of qcow2 -on test.qcow2 -os convert

i can only boot when i change vd to hd and to disable the driver signature enforcement

do i miss something?

does not build with ocaml 5.0

from what I understand the build fails because of ocaml 5.0.
using ocaml-libvirt-git, the build (either 2.2.0 or 2.3.4 or git) fails with:

make[2] : on entre dans le répertoire « /home/solstice/asp/AUR/virt-v2v/src/virt-v2v-2.3.4/common/mlstdutils »
  CC       libmlstdutils_a-dummy.o
  OCAMLCMI guestfs_config.cmi
  OCAMLCMI stringMap.cmi
  OCAMLCMI stringSet.cmi
  OCAMLCMI std_utils.cmi
  OCAMLOPT guestfs_config.cmx
  OCAMLC   guestfs_config.cmo
  OCAMLC   stringSet.cmo
  OCAMLOPT stringMap.cmx
  OCAMLOPT stringSet.cmx
  OCAMLC   stringMap.cmo
  OCAMLC   std_utils.cmo
  OCAMLOPT std_utils.cmx
File "std_utils.ml", line 344, characters 30-48:
344 |     let rec assoc_lbl ?(cmp = Pervasives.compare) ~default x = function
                                    ^^^^^^^^^^^^^^^^^^
Error: Unbound module Pervasives
make[2]: *** [Makefile:1347: std_utils.cmo] Error 2

virt-v2v 1.44 incorrectly parses a VMX file with modified disk bus

Note: This works correctly in 2.2.0 and 2.3.5. I've no expectations a fix will be created for 1.44.x. This issue is primarily for the benefit of others who might stumble across it via Google search, since it exists on the version shipped in Ubuntu LTS repositories. I've not tested it in other distros (but I think RHEL 7 and 8 ships with 1.4X.y).

If you create a VM in VMware with a SCSI disk, then clone it (in VMware), adjusting the guest hardware in the cloning wizard to set it's disk bus to SATA, the resulting VMX file will be written in such a way that virt-v2v (1.44.2!) is unable to find the disks (to be clear, the cloned/modified VM still boots in VMware). The resulting error is:

virt-v2v: error: source has no hard disks!

Attached are the initial VMX file, the VMX file after the clone/hardware adjustment, and the debug output of virt-v2v (all appended with .txt to make github happy).

virt-v2v-output.txt
efi-windows2019-onedisksata-onenic.vmx.txt
efi-windows2019-onediskscsi-onenic.vmx.txt

Hello is there a way to disable installing virtio drivers when converting

Hello, I am just starting to use virt-v2v.

I was trying to convert a windows ova file to libvirt.
In the process, virt-v2v was trying to install some drivers.
I kind of wish for a "vanilla" conversion, without any kind of modification of the guest.
Is it possible to disable the virtio?
I read the man page, however, I did not find any clue. Any ideas? Thanks in advance

VMware to KVM Conversion Error: Missing essential config entry 'ethernet0.networkName'

When converting from VMware to KVM, we are getting below error

Mar  1 07:02:29 kvm_server java[1398844]: INFO  [resource.wrapper.LibvirtConvertInstanceCommandWrapper] (Script-2:) (logid:) (virt-v2v source: vpx://administrator%40vsphere.local@vcenter/Datacenter/Cluster/Host?no_verify=1 79d6b370-988b-4ce8-93f4-c3f1cbc70e10 progress) virt-v2v: error: exception: libvirt: VIR_ERR_INTERNAL_ERROR: VIR_FROM_NONE:

Mar  1 07:02:29 kvm_server  java[1398844]: INFO  [resource.wrapper.LibvirtConvertInstanceCommandWrapper] (Script-2:) (logid:) (virt-v2v source: vpx://administrator%40vsphere.local@vcenter/Datacenter/Cluster/Host?no_verify=1 79d6b370-988b-4ce8-93f4-c3f1cbc70e10 progress) internal error: Missing essential config entry 'ethernet0.networkName'

"ethernet0.networkName" seems to be part of VM Advanced Options, but we can't set this option. Is there a way to maybe bypass / edit network config when using virt-v2v?

Add support for Rocky Linux

Hello,

As documented, virt-v2v currently not supports rocky Linux, and we have the following error :

virt-v2v: error: virt-v2v is unable to convert this guest type (linux/rocky)

As CentOS is replaced by Rocky in few environments, it will be really appreciated to add Rocky OS in supported OS.
Do you think it's possible ?

Thanks

No ability to install guest tools on ubuntu guests?

Looking at

let os =
match inspect.i_distro with
| "fedora" -> Some "fc28"
| "rhel" | "centos" | "scientificlinux" | "redhat-based"
| "oraclelinux" ->
(match inspect.i_major_version with
| 6 -> Some "el6"
| 7 -> Some "el7"
| 8 -> Some "el8"
| _ -> None)
| "sles" | "suse-based" | "opensuse" -> Some "lp151"
| _ -> None in
it seems like there is no possibility to support ubuntu guests?

I am getting the following in centos 8 virt-v2v:

virt-v2v: warning: don't know how to install guest tools on ubuntu-20

I'd have thought just looking at the directories for that code to see if there is something there would be a reasonable generic solution?

virt-v2v 2.2.0 -i vmx can't convert CentOS 9/AlmaLinux 9: no installed kernel packages were found

[   0.0] Setting up the source: -i vmx ssh://root@HOST/vmfs/volumes/datastore1/cos9/cos9.vmx
[   2.3] Opening the source
[   7.5] Inspecting the source
[  48.6] Checking for sufficient free disk space in the guest
[  48.6] Converting CentOS Stream release 9 to run on KVM
virt-v2v: error: no installed kernel packages were found.

This probably indicates that virt-v2v was unable to inspect this guest 
properly.

If reporting bugs, run virt-v2v with debugging enabled and include the 
complete output:

  virt-v2v -v -x [...]

Cut from full log can be found here https://pastebin.com/Bi5v2gc5

eBlockerVM-2.9.1-amd64.ova / virt-v2v: error: libguestfs error: you must call guestfs_add_drive before guestfs_launch

rwmjones 17c6d52 reported the eBlockerVM-2.9.1-amd64.ova working on the latest after his commit, so I followed the install steps and installed virtv2v latest to /usr/local/bin/virt-v2v, hoping that it would work for me just like for rwmjones. It did not, because I get a
virt-v2v: error: libguestfs error: you must call guestfs_add_drive before
error instead. See details below. Question: how to get the eBlockerVM-2.9.1-amd64.ova conversion working?

which virt-v2v

/usr/local/bin/virt-v2v

/usr/bin/virt-v2v --version

virt-v2v 1.44.2

/usr/local/bin/virt-v2v --version

virt-v2v 2.3.3

export LIBGUESTFS_DEBUG=1 LIBGUESTFS_TRACE=1
/usr/local/bin/virt-v2v -v -x -i ova eBlockerVM-2.9.1-amd64.ova -of qcow2

libguestfs: trace: set_verbose true
libguestfs: trace: set_verbose = 0
libguestfs: trace: get_cachedir
libguestfs: trace: get_cachedir = "/var/tmp"
virt-v2v: virt-v2v 2.3.3 (x86_64)
libvirt version: 8.0.0
check_host_free_space: large_tmpdir=/var/tmp free_space=813592858624
[ 0.0] Setting up the source: -i ova eBlockerVM-2.9.1-amd64.ova
qemu-img info json:'{ "file": { "driver": "raw", "offset": 512, "size": 512, "file": { "filename": "/tmp/v2vqemuimgtstb82e23.img" } } }' >/dev/null
qemu-img supports "offset" and "size" in json URLs: true
libguestfs: trace: set_verbose true
libguestfs: trace: set_verbose = 0
libguestfs: trace: set_trace true
libguestfs: trace: set_trace = 0
libguestfs: trace: set_verbose true
libguestfs: trace: set_verbose = 0
libguestfs: trace: get_backend
libguestfs: trace: get_backend = "direct"
tar -tf 'eBlockerVM-2.9.1-amd64.ova'
tar -xf 'eBlockerVM-2.9.1-amd64.ova' -C '/var/tmp/ova.CdLB6P' 'eBlockerVM-2.9.1-amd64.ovf' 'eBlockerVM-2.9.1-amd64.mf'
ova: orig_ova = eBlockerVM-2.9.1-amd64.ova, top_dir = /var/tmp/ova.CdLB6P, ova_type = TarOptimized eBlockerVM-2.9.1-amd64.ova
ova: processing manifest file /var/tmp/ova.CdLB6P/eBlockerVM-2.9.1-amd64.mf
libguestfs: trace: close
libguestfs: closing guestfs handle 0x5567bd9367a0 (state 0)
libguestfs: trace: close
libguestfs: closing guestfs handle 0x5567bd948a40 (state 0)
tar xOf 'eBlockerVM-2.9.1-amd64.ova' 'eBlocker VM-disk001.vmdk' | sha256sum
tar xOf 'eBlockerVM-2.9.1-amd64.ova' 'eBlockerVM-2.9.1-amd64.ovf' | sha256sum
virt-v2v: warning: could not parse ovf:Name from OVF document
[ 7.0] Opening the source
libguestfs: trace: set_verbose true
libguestfs: trace: set_verbose = 0
libguestfs: trace: set_trace true
libguestfs: trace: set_trace = 0
libguestfs: trace: set_verbose true
libguestfs: trace: set_verbose = 0
libguestfs: trace: set_identifier "v2v"
libguestfs: trace: v2v: set_identifier = 0
libguestfs: trace: v2v: get_memsize
libguestfs: trace: v2v: get_memsize = 1280
libguestfs: trace: v2v: set_memsize 2560
libguestfs: trace: v2v: set_memsize = 0
libguestfs: trace: v2v: set_smp 8
libguestfs: trace: v2v: set_smp = 0
libguestfs: trace: v2v: set_network true
libguestfs: trace: v2v: set_network = 0
libguestfs: trace: v2v: launch
libguestfs: trace: v2v: max_disks
libguestfs: trace: v2v: max_disks = 255
libguestfs: trace: v2v: get_tmpdir
libguestfs: trace: v2v: get_tmpdir = "/tmp"
libguestfs: trace: v2v: version
libguestfs: trace: v2v: version = <struct guestfs_version = major: 1, minor: 46, release: 2, extra: , >
libguestfs: trace: v2v: get_backend
libguestfs: trace: v2v: get_backend = "direct"
libguestfs: launch: program=virt-v2v
libguestfs: launch: identifier=v2v
libguestfs: launch: version=1.46.2
libguestfs: launch: backend registered: unix
libguestfs: launch: backend registered: uml
libguestfs: launch: backend registered: libvirt
libguestfs: launch: backend registered: direct
libguestfs: launch: backend=direct
libguestfs: launch: tmpdir=/tmp/libguestfs7y9SCY
libguestfs: launch: umask=0002
libguestfs: launch: euid=1000
libguestfs: trace: v2v: launch = -1 (error)
virt-v2v: error: libguestfs error: you must call guestfs_add_drive before

guestfs_launch
rm -rf -- '/var/tmp/ova.CdLB6P'
rm -rf -- '/tmp/v2v.OLYbVO'
libguestfs: trace: v2v: close
libguestfs: closing guestfs handle 0x5567bd95acc0 (state 0)
libguestfs: command: run: rm
libguestfs: command: run: \ -rf /tmp/libguestfs7y9SCY

Enhancement: probe vCenter to identify actual version

Instead of attempting to deduce what path to use based on trial and error, probe vCenter to obtain the current version, then massage the path (if necessary) accordingly.  Set the 'default' behaviour to that of the most recent version to avoid having to constantly update to keep up with new vmware versions... then you only have to update when the newest version starts to behave differently.

Clustername not working when on same Data Center, sharing same storage domains

Hi guys,

I created a Data center
SiteA
I have made two clusters

SiteA (3 nodes ovna1..3.example.com)
SiteA_UX (3 nodes ovnuxa1..3.example.com)

in the Data Center, they share the same Storage Domains

like
aa1_ovna_1

now I import vms like this
virt-v2v -i vmx /nfs/testmigvm01/testmigvm01.vmx -o ovirt-upload -oc https://admin@ovirt@[email protected]/ovirt-engine/api -os aa1_ovna_1 -op /home/migrate/testpw -oo rhv-cafile=/root/ansible-stuff/ca.pem -oo rhv-cluster=SiteA -of qcow2

It gives me an error (verbose isn't giving me more)
virt-v2v: error: internal error: invalid argument:
/tmp/v2v.CtVpBL/v2vtransfer.json: JSON parse error: end of file expected
near 'e'

I managed to get the v2vtransfer.json file copied before it gets deleted and don't understand why it is saying "end of file expected
near 'e'" (btw is there a way to avoid the deletion of the temporary files)

{"transfer_id": "bddd91a5-4a15-4d21-a3c1-882c056c794c", "destination_url": "https://ovnuxa01.example.com:54322/images/09e03d5b-542a-49ff-904c-369d17cd2423", "is_ovirt_host": false}

So it gives me a destination url of a node in the wrong cluster

As I have no vm running yet in the UX cluster I set all 3 nodes into maintenance, after doing so it works, cause the destination url is attached to a node in the right cluster.

{"transfer_id": "cd0ea4d4-d7d1-49f1-9d1c-e3e9cd86cf13", "destination_url": "https://ovna01.example.com:54322/images/f85c50a4-d85b-4866-8e21-79330aea96cf", "is_ovirt_host": false}

Maybe this is an ovirt bug and not an virt-v2v, not sure if ovirt gives the wrong url or virt-v2v does not send the parameter as it should

As a plus
changing it to
rhv-cluster=SiteA_UX
does not work as well, and for testing I am not able to set all SiteA Nodes to maintenance.

I hope u understand what I mean, if not, I am happy to give more details

RFE: virt-v2v: Support conversion of FreeBSD guests

get fail while convert EMC OneFS simulator(based on FreeBSD) with virt-v2v:
'''
[jianhong@fstest 9.1.0.0]$ virt-v2v -i ova 9.1.0.0.ova -o local -os tmp
[ 0.0] Opening the source -i ova 9.1.0.0.ova
[ 1.9] Creating an overlay to protect the source from being modified
[ 6.3] Opening the overlay
[ 14.6] Inspecting the overlay
virt-v2v: error: mount: mount_stub: /dev/mirror/root0: No such file or
directory

If reporting bugs, run virt-v2v with debugging enabled and include the
complete output:

virt-v2v -v -x [...]
'''

Application scenario:
deploy EMC OneFS simulator automatically for automate tests
see also: https://bugzilla.redhat.com/show_bug.cgi?id=1947291#c2

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.