oVirt 4.5.4-1 OVA export generates incomplete XML tag in vm.ovf

Hi, we can't import some OVA VMs into oVirt, that was previously exported in oVirt. Further investigations and testing showed, that in some vm.ovf files the last closing tag is missing ( </ovf:Envelope instead of </ovf:Envelope> ). Intense testing showed the following occurrence: on test DC (4.4.10.7-1): - about half of the VMs have that problem (about 9 VMs) - VMs where the export is working properly are ok, no matter how often i do export - VMs who's vm.ovf is wrong stay that way, no matter how often i do export on production DC (4.4.10.7-1): - all VMs have that problem (49 VMs) - an imported "good" VM formerly exported on test DC, now have a wrong vm.ovf too after re-exporting on production DC - vm.ovf of all VMs stay incorrect, no matter how often i do export on develop DC (4.5.4-1): - the only VM have that problem (1 VM) - vm.ovf of VMs stay incorrect, no matter how often i do export Environment: all DC have independent hardware and are built exactly the same way with the same components oVirt is with hosted-engine test and production: oVirt: 4.4.10.7-1 engine OS: Cent OS Stream 8 host OS: RHEL 8.7 develop: oVirt: 4.5.4-1 engine OS: Cent OS Stream 8 (latest updates till September 1st) host OS: RHEL 8.8 (latest updates till September 1st) Is that a known problem? Is there a way to fix this? regards, Lars

On Mon, Sep 4, 2023 at 9:49 AM <lars.stolpe@bvg.de> wrote:
Hi,
we can't import some OVA VMs into oVirt, that was previously exported in oVirt. Further investigations and testing showed, that in some vm.ovf files the last closing tag is missing ( </ovf:Envelope instead of </ovf:Envelope> ).
Intense testing showed the following occurrence: on test DC (4.4.10.7-1): - about half of the VMs have that problem (about 9 VMs) - VMs where the export is working properly are ok, no matter how often i do export - VMs who's vm.ovf is wrong stay that way, no matter how often i do export
on production DC (4.4.10.7-1): - all VMs have that problem (49 VMs) - an imported "good" VM formerly exported on test DC, now have a wrong vm.ovf too after re-exporting on production DC - vm.ovf of all VMs stay incorrect, no matter how often i do export
on develop DC (4.5.4-1): - the only VM have that problem (1 VM) - vm.ovf of VMs stay incorrect, no matter how often i do export
Environment: all DC have independent hardware and are built exactly the same way with the same components oVirt is with hosted-engine
test and production: oVirt: 4.4.10.7-1 engine OS: Cent OS Stream 8 host OS: RHEL 8.7
develop: oVirt: 4.5.4-1 engine OS: Cent OS Stream 8 (latest updates till September 1st) host OS: RHEL 8.8 (latest updates till September 1st)
Is that a known problem?
Nope
Is there a way to fix this?
We use the same components that we use for OVAs also for writing OVFs of snapshots and for writing domain XMLs so I doubt the problem is on the ovirt-engine side (as we would have seen more severe issues) We store the OVF in the OVA with a Python script that runs on the host so I'd suggest to look for a message that starts with "writing ovf:" in its log [1] to see whether the script was provided with the complete XML from ovirt-engine If the complete XML was provided, you can change the pack_ova.py script on the ovirt-engine side to debug why it's not stored properly in the tar (OVA) file [1] https://github.com/oVirt/ovirt-engine/blob/c4fe7d6fb652c83c638d446bb861cfeac...
regards, Lars _______________________________________________ Users mailing list -- users@ovirt.org To unsubscribe send an email to users-leave@ovirt.org Privacy Statement: https://www.ovirt.org/privacy-policy.html oVirt Code of Conduct: https://www.ovirt.org/community/about/community-guidelines/ List Archives: https://lists.ovirt.org/archives/list/users@ovirt.org/message/GDCFY7J72CR3DF...

On Mon, Sep 4, 2023 at 10:54 AM Arik Hadas <ahadas@redhat.com> wrote:
On Mon, Sep 4, 2023 at 9:49 AM <lars.stolpe@bvg.de> wrote:
Hi,
we can't import some OVA VMs into oVirt, that was previously exported in oVirt. Further investigations and testing showed, that in some vm.ovf files the last closing tag is missing ( </ovf:Envelope instead of </ovf:Envelope> ).
Intense testing showed the following occurrence: on test DC (4.4.10.7-1): - about half of the VMs have that problem (about 9 VMs) - VMs where the export is working properly are ok, no matter how often i do export - VMs who's vm.ovf is wrong stay that way, no matter how often i do export
on production DC (4.4.10.7-1): - all VMs have that problem (49 VMs) - an imported "good" VM formerly exported on test DC, now have a wrong vm.ovf too after re-exporting on production DC - vm.ovf of all VMs stay incorrect, no matter how often i do export
on develop DC (4.5.4-1): - the only VM have that problem (1 VM) - vm.ovf of VMs stay incorrect, no matter how often i do export
Environment: all DC have independent hardware and are built exactly the same way with the same components oVirt is with hosted-engine
test and production: oVirt: 4.4.10.7-1 engine OS: Cent OS Stream 8 host OS: RHEL 8.7
develop: oVirt: 4.5.4-1 engine OS: Cent OS Stream 8 (latest updates till September 1st) host OS: RHEL 8.8 (latest updates till September 1st)
Is that a known problem?
Nope
Is there a way to fix this?
We use the same components that we use for OVAs also for writing OVFs of snapshots and for writing domain XMLs so I doubt the problem is on the ovirt-engine side (as we would have seen more severe issues)
We store the OVF in the OVA with a Python script that runs on the host so I'd suggest to look for a message that starts with "writing ovf:" in its log [1] to see whether the script was provided with the complete XML from ovirt-engine
If the complete XML was provided, you can change the pack_ova.py script on the ovirt-engine side to debug why it's not stored properly in the tar (OVA) file
[1] https://github.com/oVirt/ovirt-engine/blob/c4fe7d6fb652c83c638d446bb861cfeac...
Lars, since you have environments that this issue reproduces on consistently, could you please check if the issue is resolved by replacing that write_ovf function in the link above with: def write_ovf(entity, ova_file, ovf): print("writing ovf: %s" % ovf) ovf2 = ovf if python2 else ovf.encode() tar_info = create_tar_info(entity + ".ovf", len(ovf2)) buf = (tar_info.tobuf() if python2 else tar_info.tobuf(format=tarfile.GNU_FORMAT)) ova_file.write(buf) ova_file.write(ovf2) pad_to_block_size(ova_file)
regards, Lars _______________________________________________ Users mailing list -- users@ovirt.org To unsubscribe send an email to users-leave@ovirt.org Privacy Statement: https://www.ovirt.org/privacy-policy.html oVirt Code of Conduct: https://www.ovirt.org/community/about/community-guidelines/ List Archives: https://lists.ovirt.org/archives/list/users@ovirt.org/message/GDCFY7J72CR3DF...

Further investigations revealed actually two independent causes. 1. German umlauts (ä/ö/ü) in the description field lead reproducible to missing letters at the end of the exported vm.ovf file (sometimes one last character, sometimes the last two) A short test (only one) revealed, that the suggested changes to pack_ova.py fixed that problem. 2. If there are more than 26 .ova files in a directory, the import dialog throw the same error message, as if there was no file existent at all.
participants (2)
-
Arik Hadas
-
lars.stolpe@bvg.de