Bug 1550168
Summary: | virt-v2v -o rhv generated OVF causes oVirt to crash with NullPointerException in LibvirtVmXmlBuilder.writeRng if SpecParams is missing | ||||||
---|---|---|---|---|---|---|---|
Product: | Red Hat Enterprise Linux 7 | Reporter: | Richard W.M. Jones <rjones> | ||||
Component: | libguestfs | Assignee: | Richard W.M. Jones <rjones> | ||||
Status: | CLOSED ERRATA | QA Contact: | Virtualization Bugs <virt-bugs> | ||||
Severity: | high | Docs Contact: | |||||
Priority: | unspecified | ||||||
Version: | 7.5 | CC: | ahadas, lsurette, mavital, mxie, mzhan, ptoscano, Rhev-m-bugs, rjones, srevivo, tgolembi, tzheng, xchen, ykaul | ||||
Target Milestone: | rc | ||||||
Target Release: | --- | ||||||
Hardware: | Unspecified | ||||||
OS: | Unspecified | ||||||
Whiteboard: | V2V | ||||||
Fixed In Version: | libguestfs-1.38.1-1.el7 | Doc Type: | If docs needed, set a value | ||||
Doc Text: | Story Points: | --- | |||||
Clone Of: | 1550123 | Environment: | |||||
Last Closed: | 2018-10-30 07:45:24 UTC | Type: | Bug | ||||
Regression: | --- | Mount Type: | --- | ||||
Documentation: | --- | CRM: | |||||
Verified Versions: | Category: | --- | |||||
oVirt Team: | Virt | RHEL 7.3 requirements from Atomic Host: | |||||
Cloudforms Team: | --- | Target Upstream Version: | |||||
Embargoed: | |||||||
Bug Depends On: | 1550123, 1551055 | ||||||
Bug Blocks: | |||||||
Attachments: |
|
Description
Richard W.M. Jones
2018-02-28 17:09:29 UTC
Fixed upstream with https://github.com/libguestfs/libguestfs/commit/d7b31559c291bc8af3419679facdf174e6e647c1 which is in libguestfs >= 1.39.1. Fix backported in 1.38.1. Try to reproduce the bug with below builds: virt-v2v-1.36.10-6.el7_5.2.x86_64 libguestfs-1.36.10-6.el7_5.2.x86_64 Reproduce steps: Scenario1: 1.1 Prepare a rhel7 guest which has RNG device and Memory Ballooning Device # virsh dumpxml rhel7.5 .... <memballoon model='virtio'> <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/> </memballoon> <rng model='virtio'> <backend model='random'>/dev/urandom</backend> <address type='pci' domain='0x0000' bus='0x00' slot='0x0c' function='0x0'/> </rng> .... 1.2 Convert guest to rhv4.2 by virt-v2v using -o rhv # virt-v2v rhel7.5 -o rhv -os 10.66.144.40:/home/nfs_export -on memory-rng-7.5.z [ 0.0] Opening the source -i libvirt rhel7.5 [ 0.0] Creating an overlay to protect the source from being modified [ 0.5] Initializing the target -o rhv -os 10.66.144.40:/home/nfs_export [ 0.9] Opening the overlay [ 31.3] Inspecting the overlay [ 140.2] Checking for sufficient free disk space in the guest [ 140.2] Estimating space required on target for each disk [ 140.2] Converting Red Hat Enterprise Linux Server 7.5 (Maipo) to run on KVM virt-v2v: This guest has virtio drivers installed. [ 260.3] Mapping filesystem data to avoid copying unused and blank areas [ 260.9] Closing the overlay [ 262.0] Checking if the guest needs BIOS or UEFI to boot [ 262.0] Assigning disks to buses [ 262.0] Copying disk 1/1 to /tmp/v2v.29t5Rn/6f2055e4-b776-4ffd-94e6-f444e4931b76/images/bcf165d2-9b27-48ed-8e5c-7b84ebd154a3/fcb2ea87-15bb-42f1-b5b7-803293f88bb0 (qcow2) (100.00/100%) [ 364.6] Creating output metadata [ 364.7] Finishing off 1.3 Check converted guest's ovf after finishing conversion but can't find RNG deivce and memory Ballooning Device, meanwhile, # cat 7fff3b26-5325-4116-b606-acaaf1f5ddcd/7fff3b26-5325-4116-b606-acaaf1f5ddcd.ovf Sceanario2: 2.1 Add RND device and memory Ballooning Device info according to comment0 into converted guest's ovf manually after step1.2 # vi 7fff3b26-5325-4116-b606-acaaf1f5ddcd/7fff3b26-5325-4116-b606-acaaf1f5ddcd.ovf .... <Item> <rasd:Caption>RNG Device</rasd:Caption> <rasd:InstanceId>feeae0f9-ce77-4df7-8daf-0d128ef0e0e2</rasd:InstanceId> <rasd:ResourceType>0</rasd:ResourceType> <Type>rng</Type> <Device>virtio</Device> </Item> <Item> <rasd:Caption>Memory Ballooning Device</rasd:Caption> <rasd:InstanceId>b7015425-3e07-4f69-bac2-29649b2acea3</rasd:InstanceId> <rasd:ResourceType>0</rasd:ResourceType> <Type>balloon</Type> <Device>memballoon</Device> </Item> .... 2.2 Import guest after editing ovf from export domain to data domain 2.3 Power on guest,but guest can't be ran due to same error with bug #cat engine.log .... 2018-05-07 18:03:56,966+08 ERROR [org.ovirt.engine.core.vdsbroker.CreateVDSCommand] (EE-ManagedThreadFactory-engine-Thread-118856) [9501d505-a1d3-4427-a2bf-cbee5af9f26c] Failed to create VM: java.lang.NullPointerException at org.ovirt.engine.core.vdsbroker.builder.vminfo.LibvirtVmXmlBuilder.writeRng(LibvirtVmXmlBuilder.java:1431) [vdsbroker.jar:] .... Verify the bug with below builds: virt-v2v-1.38.1-1.el7.x86_64 libguestfs-1.38.1-1.el7.x86_64 Steps: 1.Convert a rhel7 guest which has RNG device and Memory Ballooning Device by virt-v2v using -o rhv 2.Check converted guest's ovf after finishing conversion and there are RNG device and memory Ballooning Device in ovf, and these devices have specified spec-params. # cat 207a4c12-072f-4873-8ada-efc448187c99/207a4c12-072f-4873-8ada-efc448187c99.ovf <Item> <rasd:Caption>RNG Device</rasd:Caption> <rasd:InstanceId>12631d09-c5d9-4b6d-8926-670e4fe252b7</rasd:InstanceId> <rasd:ResourceType>0</rasd:ResourceType> <Type>rng</Type> <Device>virtio</Device> <SpecParams> <source>urandom</source> </SpecParams> </Item> <Item> <rasd:Caption>Memory Ballooning Device</rasd:Caption> <rasd:InstanceId>118d2331-8623-4aa5-a445-664f198d328f</rasd:InstanceId> <rasd:ResourceType>0</rasd:ResourceType> <Type>balloon</Type> <Device>memballoon</Device> <SpecParams> <model>virtio</model> </SpecParams> </Item> 3.Guest could boot into os normally after importing from export domain to data domain Hi rjones, V2V will delete RNG and Memory Ballooning Device from guest during conversion if libguestfs<=1.38.0, so I have to add RNG and Memory Ballooning to converted guest on rhv4.2 manually as scenario2 to reproduce the bug, do you think these reproduce steps of scenario2 are reasonable? Thanks Hi mxie, virt-v2v outputs the RNG and memory balloon devices to the OVF if the kernel in the guest supports virtio-rng and virtio-balloon. The rng and balloon devices in the libvirt XML are ignored. Can you please attach the log of virt-v2v at the step 1.2 with -v -x? Created attachment 1432952 [details]
v2v-memory-rng-7.5.z.log
(In reply to mxie from comment #5) > V2V will delete RNG and Memory Ballooning Device from guest during > conversion if libguestfs<=1.38.0, so I have to add RNG and Memory Ballooning > to converted guest on rhv4.2 manually as scenario2 to reproduce the bug, do > you think these reproduce steps of scenario2 are reasonable? It is a bit stretched as test case, but could work. Another option is to pick an older build from brew, for example libguestfs-1.38.0-1.el7, so it produces the OVF with memory balloon and random devices but without the fix. I can reproduce the bug with below builds: virt-v2v-1.38.0-1.el7.x86_64 libguestfs-1.38.0-1.el7.x86_64 Reproduce steps: 1. Convert a rhel7 guest to rhv4.2 by virt-v2v using -o rhv # virt-v2v rhel7.5 -o rhv -os 10.66.144.40:/home/nfs_export -on no-rng-mem [ 0.0] Opening the source -i libvirt rhel7.5 [ 0.0] Creating an overlay to protect the source from being modified [ 0.8] Initializing the target -o rhv -os 10.66.144.40:/home/nfs_export [ 1.1] Opening the overlay [ 439.7] Inspecting the overlay [ 588.1] Checking for sufficient free disk space in the guest [ 588.1] Estimating space required on target for each disk [ 588.1] Converting Red Hat Enterprise Linux Server 7.5 (Maipo) to run on KVM virt-v2v: This guest has virtio drivers installed. [ 824.0] Mapping filesystem data to avoid copying unused and blank areas [ 826.4] Closing the overlay [ 828.2] Checking if the guest needs BIOS or UEFI to boot [ 828.2] Assigning disks to buses [ 828.2] Copying disk 1/1 to /tmp/v2v.7SSPvV/ea9cb06f-8bf9-4fc8-a247-478e754d898a/images/1bfbce40-c01b-4cea-b7ff-ed5f112069ee/6d4177bf-1bd6-4776-8e4b-edc0e2ce5127 (qcow2) (100.00/100%) [ 979.7] Creating output metadata [ 979.8] Finishing off 2. Check converted guest's ovf after finishing conversion and could find RNG deivce and memory Ballooning Device without specified spec-params .... <Item> <rasd:Caption>RNG Device</rasd:Caption> <rasd:InstanceId>109c8226-6081-4437-8db2-de729f76260c</rasd:InstanceId> <rasd:ResourceType>0</rasd:ResourceType> <Type>rng</Type> <Device>virtio</Device> </Item> <Item> <rasd:Caption>Memory Ballooning Device</rasd:Caption> <rasd:InstanceId>59b27b33-0a24-47bb-bca8-336bded25c28</rasd:InstanceId> <rasd:ResourceType>0</rasd:ResourceType> <Type>balloon</Type> <Device>memballoon</Device> </Item> <Item> ..... 3.Failed to ran guest and get same error with bug in engine.log 2018-05-10 16:35:33,880+08 ERROR [org.ovirt.engine.core.vdsbroker.CreateVDSCommand] (EE-ManagedThreadFactory-engine-Thread-186792) [f3946278-e735-4650-8bbf-16408fb3a712] Failed to create VM: java.lang.NullPointerException at org.ovirt.engine.core.vdsbroker.builder.vminfo.LibvirtVmXmlBuilder.writeRng(LibvirtVmXmlBuilder.java:1431) [vdsbroker.jar:] Verify the bug with below builds: virt-v2v-1.38.2-3.el7.x86_64 libguestfs-1.38.2-3.el7.x86_64 libvirt-4.3.0-1.el7.x86_64 qemu-kvm-rhev-2.12.0-3.el7.x86_64 Steps: 1. Convert a rhel7 guest to rhv4.2 by virt-v2v # virt-v2v -ic vpx://root.73.141/data/10.73.75.219?no_verify=1 esx6.7-rhel7.5-x86_64 -o rhv -os 10.66.144.40:/home/nfs_export -b ovirtmgmt --password-file /tmp/passwd [ 0.0] Opening the source -i libvirt -ic vpx://root.73.141/data/10.73.75.219?no_verify=1 esx6.7-rhel7.5-x86_64 [ 2.0] Creating an overlay to protect the source from being modified [ 3.1] Initializing the target -o rhv -os 10.66.144.40:/home/nfs_export [ 3.4] Opening the overlay [ 26.6] Inspecting the overlay [ 206.8] Checking for sufficient free disk space in the guest [ 206.8] Estimating space required on target for each disk [ 206.8] Converting Red Hat Enterprise Linux Server 7.5 (Maipo) to run on KVM virt-v2v: This guest has virtio drivers installed. [1544.8] Mapping filesystem data to avoid copying unused and blank areas [1551.4] Closing the overlay [1554.8] Checking if the guest needs BIOS or UEFI to boot [1554.8] Assigning disks to buses [1554.8] Copying disk 1/1 to /tmp/v2v.7RYevN/ea9cb06f-8bf9-4fc8-a247-478e754d898a/images/934071de-bc9f-4f53-9eaa-57430651a46a/e5367eeb-1471-4335-a542-e816bc4cfb28 (raw) (100.00/100%) [2332.5] Creating output metadata [2332.6] Finishing off 2. Check converted guest's ovf at export domain after finishing conversion and could find RNG deivce and memory Ballooning Device with specified spec-params #cat 355f261f-65f3-4ce1-9e46-4926c0e6dd11/355f261f-65f3-4ce1-9e46-4926c0e6dd11.ovf .... <Item> <rasd:Caption>RNG Device</rasd:Caption> <rasd:InstanceId>5022155a-3b1a-4a10-a6ff-ef80ba742f30</rasd:InstanceId> <rasd:ResourceType>0</rasd:ResourceType> <Type>rng</Type> <Device>virtio</Device> <SpecParams> <source>urandom</source> </SpecParams> </Item> <Item> <rasd:Caption>Memory Ballooning Device</rasd:Caption> <rasd:InstanceId>ec609589-b500-465b-8311-cd76e1bec452</rasd:InstanceId> <rasd:ResourceType>0</rasd:ResourceType> <Type>balloon</Type> <Device>memballoon</Device> <SpecParams> <model>virtio</model> </SpecParams> </Item> .... 3.Import guest from export domain to data domain, power on guest normally and checkpoints of guest are passed Result: Virt-v2v could add RNG Device and Memory Ballooning Device with specified spec-params for guest during conversion, so move the bug from ON_QA to VERIFIED 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-2018:3021 |