Bug 1151902

Summary: RFE: virt-v2v should do something with <interface type='direct'> (either virtualize it or give an error)
Product: Red Hat Enterprise Linux 7 Reporter: tingting zheng <tzheng>
Component: libguestfsAssignee: Richard W.M. Jones <rjones>
Status: CLOSED ERRATA QA Contact: Virtualization Bugs <virt-bugs>
Severity: medium Docs Contact:
Priority: medium    
Version: 7.1CC: dyuan, juzhou, mbooth, mtessun, mxie, mzhan, ptoscano, rjones, zili
Target Milestone: rcKeywords: FutureFeature
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard: V2V
Fixed In Version: libguestfs-1.40.2-4.el7 Doc Type: Enhancement
Doc Text:
Story Points: ---
Clone Of:
: 1703400 (view as bug list) Environment:
Last Closed: 2019-08-06 12:44:11 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1288337, 1703400    
Attachments:
Description Flags
Log file of conversion guest with macvtap network
none
ovf file of guest after conversion to rhev none

Description tingting zheng 2014-10-13 02:37:11 UTC
Created attachment 946200 [details]
Log file of conversion guest with macvtap network

Description
virt-v2v:Network interface disappear after conversion of guest with interface type direct

Version:
libguestfs-1.27.61-1.1.el7.x86_64
virt-v2v-1.27.61-1.1.el7.x86_64

How reproducible:
100%

Steps to Reproduce:
1.Prepare a guest with interface type direct.
# virsh dumpxml rhel6.5-test
    <interface type='direct'>
      <mac address='52:54:00:6c:01:c5'/>
      <source dev='enp0s25' mode='vepa'/>
      <model type='rtl8139'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>

2.Use virt-v2v to convert the guest to rhev.
# virt-v2v -o rhev -os 10.66.90.115:/vol/v2v_auto/auto_export --network rhevm macvtap-test -v -x |& tee /tmp/macvtap-test.log

3.Import the guest to rhev,from rhev GUI,no network shows.

4.Check the ovf file of the guest,there is no content in netework section.
  <Section xsi:type='ovf:NetworkSection_Type'>
    <Info>List of networks</Info>
  </Section>

Actual results:
Network interface disappear after conversion of guest with interface type direct

Expected results:
Network interface exists after conversion by virt-v2v.

Additional info:

Comment 1 tingting zheng 2014-10-13 02:38:03 UTC
Created attachment 946201 [details]
ovf file of guest after conversion to rhev

Comment 3 Richard W.M. Jones 2014-10-20 09:53:34 UTC
Old virt-v2v would have also ignored these interfaces, so this
is a feature request (although I'm not sure how much sense it
makes to convert such a guest -- probably it should give an error).

Comment 5 Richard W.M. Jones 2015-09-23 14:45:01 UTC
Since it's not completely clear from the docs, <interface type='direct'>
is a macvtap device.
http://virt.kernelnewbies.org/MacVTap

Comment 7 liuzi 2018-11-28 08:03:39 UTC
I can reproduce it on rhel8 with builds:
virt-v2v-1.38.4-5.module+el8+2173+537e5cb5.x86_64
libguestfs-1.38.4-5.module+el8+2173+537e5cb5.x86_64
kernel-4.18.0-32.el8.x86_64

Steps to Reproduce:
1.Prepare a guest with interface type direct.
# virsh dumpxml rhel8.0
    </interface>
    <interface type='direct'>
      <mac address='52:54:00:62:1c:4a'/>
      <source dev='em1' mode='bridge'/>
      <target dev='macvtap0'/>
      <model type='e1000e'/>
      <alias name='net2'/>
      <address type='pci' domain='0x0000' bus='0x09' slot='0x00' function='0x0'/>
    </interface>
2.Use virt-v2v to convert the guest to rhev.
# virt-v2v rhel8.0 -o rhv -os 10.66.144.40:/home/nfs_export --password-file /tmp/passwd

3.Import the guest to rhev,from rhev GUI,no network is shows.

Comment 8 Pino Toscano 2019-04-15 08:27:20 UTC
Fixed upstream with
https://github.com/libguestfs/libguestfs/commit/1629ec6a5639cf5e226e80bcee749ae8851b1fae
which is in libguestfs >= 1.41.1.

In short: virt-v2v will produce a warning, as these host passthrough devices cannot be converted.

Comment 9 Pino Toscano 2019-04-15 08:41:24 UTC
*** Bug 1518539 has been marked as a duplicate of this bug. ***

Comment 11 mxie@redhat.com 2019-04-28 09:36:21 UTC
Verify the bug with below builds:
virt-v2v-1.40.2-4.el7.x86_64
libguestfs-1.40.2-4.el7.x86_64
libvirt-4.5.0-15.el7.x86_64
qemu-kvm-rhev-2.12.0-27.el7.x86_64
virtio-win-1.9.7-0.el7.noarch
nbdkit-1.8.0-1.el7.x86_64


Steps:
Scenario1:
1.1 Prepare a linux guest which has "direct" type network
# virsh dumpxml rhel7.6-kvm
<domain type='kvm'>
  <name>rhel7.6-kvm</name>
....
    <interface type='direct'>
      <mac address='52:54:00:1e:c9:3f'/>
      <source dev='eno1' mode='bridge'/>
      <model type='e1000'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>

....
1.2 Convert the guest to rhv by virt-v2v,there is virt-v2v warning about direct network is ignored during conversion
# virt-v2v rhel7.6-kvm -o rhv-upload -oc https://ibm-x3250m5-03.rhts.eng.pek2.redhat.com/ovirt-engine/api -oo rhv-cafile=/home/ca.pem -oo rhv-cluster=nfs -oo rhv-direct -os nfs_data -op /tmp/rhvpasswd -of raw
Exception AttributeError: "'module' object has no attribute 'dump_plugin'" in <module 'threading' from '/usr/lib64/python2.7/threading.pyc'> ignored
[   0.3] Opening the source -i libvirt rhel7.6-kvm
virt-v2v: warning: this guest has a direct network interface which will be 
ignored
[   0.3] Creating an overlay to protect the source from being modified
[   0.6] Opening the overlay
[   4.5] Inspecting the overlay
[  32.1] Checking for sufficient free disk space in the guest
[  32.1] Estimating space required on target for each disk
[  32.1] Converting Red Hat Enterprise Linux Server 7.6 (Maipo) to run on KVM
virt-v2v: This guest has virtio drivers installed.
[ 146.7] Mapping filesystem data to avoid copying unused and blank areas
[ 147.3] Closing the overlay
[ 147.6] Assigning disks to buses
[ 147.6] Checking if the guest needs BIOS or UEFI to boot
[ 147.6] Initializing the target -o rhv-upload -oc https://ibm-x3250m5-03.rhts.eng.pek2.redhat.com/ovirt-engine/api -op /tmp/rhvpasswd -os nfs_data
[ 148.9] Copying disk 1/1 to qemu URI json:{ "file.driver": "nbd", "file.path": "/var/tmp/rhvupload.atXwfr/nbdkit0.sock", "file.export": "/" } (raw)
    (100.00/100%)
[ 717.9] Creating output metadata
[ 739.6] Finishing off

1.3 Check the guest on rhv after finishing conversion, the direct network has been dropped during step1 and the other checkpoints of guest are passed
 

Scenario2
2.1 Prepare a windows guest which has direct type network
# virsh dumpxml win2019
<domain type='kvm'>
  <name>win2019</name>
....
    <interface type='direct'>
      <mac address='00:50:56:ac:59:8d'/>
      <source dev='eno1' mode='bridge'/>
      <model type='e1000'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
....

2.2 Convert a windows guest to openstack by virt-v2v,there is virt-v2v warning about direct network is ignored during conversion
# virt-v2v win2019 -o glance
[   5.8] Opening the source -i libvirt win2019
virt-v2v: warning: this guest has a direct network interface which will be 
ignored
[   5.8] Creating an overlay to protect the source from being modified
[   6.1] Opening the overlay
[  10.0] Inspecting the overlay
[  11.2] Checking for sufficient free disk space in the guest
[  11.2] Estimating space required on target for each disk
[  11.2] Converting Windows Server 2019 Standard to run on KVM
virt-v2v: warning: /usr/share/virt-tools/pnp_wait.exe is missing.  
Firstboot scripts may conflict with PnP.
virt-v2v: warning: there is no QXL driver for this version of Windows (10.0 
x86_64).  virt-v2v looks for this driver in 
/usr/share/virtio-win/virtio-win.iso

The guest will be configured to use a basic VGA display driver.
virt-v2v: This guest has virtio drivers installed.
[  16.6] Mapping filesystem data to avoid copying unused and blank areas
[  17.8] Closing the overlay
[  18.0] Assigning disks to buses
[  18.0] Checking if the guest needs BIOS or UEFI to boot
[  18.0] Initializing the target -o glance
[  18.0] Copying disk 1/1 to /var/tmp/glance.tdSgL3/sda (raw)
    (100.00/100%)
[ 201.9] Creating output metadata
+------------------+----------------------------------------------------------------------------------+
| Property         | Value                                                                            |
+------------------+----------------------------------------------------------------------------------+
| architecture     | x86_64                                                                           |
| checksum         | 8ca94b288c71df2d79cebf29ce291e20                                                 |
| container_format | bare                                                                             |
| created_at       | 2019-04-28T08:13:36Z                                                             |
| disk_format      | raw                                                                              |
| hw_cpu_cores     | 1                                                                                |
| hw_cpu_sockets   | 1                                                                                |
| hw_disk_bus      | virtio                                                                           |
| hw_machine_type  | pc                                                                               |
| hw_rng_model     | virtio                                                                           |
| hw_video_model   | cirrus                                                                           |
| hw_vif_model     | virtio                                                                           |
| hypervisor_type  | kvm                                                                              |
| id               | fe554b39-283f-40fc-83b7-58174898fd23                                             |
| min_disk         | 0                                                                                |
| min_ram          | 2048                                                                             |
| name             | win2019                                                                          |
| os_distro        | windows                                                                          |
| os_hash_algo     | sha512                                                                           |
| os_hash_value    | 334e7d8735cd9dd3b16dd185a14287e45660eef7da84d97ab1d98610d49836cab8210c3a4629162b |
|                  | f6f91c886b25de70e2fb0c22979179c3f900791bf643ee27                                 |
| os_hidden        | False                                                                            |
| os_type          | windows                                                                          |
| os_version       | 10                                                                               |
| owner            | 185bc6f0c2f74933877202c1724e6f9e                                                 |
| protected        | False                                                                            |
| size             | 21474836480                                                                      |
| status           | active                                                                           |
| tags             | []                                                                               |
| updated_at       | 2019-04-28T08:17:36Z                                                             |
| virtual_size     | None                                                                             |
| visibility       | shared                                                                           |
| vm_mode          | hvm                                                                              |
+------------------+----------------------------------------------------------------------------------+
[ 447.0] Finishing off

2.3 Launch the guest on openstack and checkpoints of guest are passed

Result:
   There is virt-v2v warning about direct network is ignored during virt-v2v conversion if original guest has direct type network, so move the bug from ON_QA to VERIFIED

Comment 13 errata-xmlrpc 2019-08-06 12:44:11 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHEA-2019:2096