Bug 1028107 - 'virsh dumpxml <lxc container>' created xml does not validate against schema
'virsh dumpxml <lxc container>' created xml does not validate against schema
Status: CLOSED CURRENTRELEASE
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: libvirt (Show other bugs)
7.0
Unspecified Unspecified
unspecified Severity unspecified
: rc
: ---
Assigned To: Ján Tomko
Virtualization Bugs
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2013-11-07 11:46 EST by michal novacek
Modified: 2014-06-17 20:58 EDT (History)
7 users (show)

See Also:
Fixed In Version: libvirt-1.1.1-12.el7
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2014-06-13 06:19:20 EDT
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)
dumped xml file that does not validate with virt-xml-validate command (1.48 KB, text/plain)
2013-11-07 11:46 EST, michal novacek
no flags Details

  None (edit)
Description michal novacek 2013-11-07 11:46:57 EST
Created attachment 821253 [details]
dumped xml file that does not validate with virt-xml-validate command

Description of problem:
I have lxc container hapily running under libvirt. Creating xml of it with
'virsh dumpxml' creates xml that does not validate against schema using
virt-xml-validate. In my opinion the problem is that xml file is accepted by
'virsh define' without checking its validity against the schema. I'm not sure
why this is not done but I do believe that only valid xml files should be used
for domain creation.

Version-Release number of selected component (if applicable):
libvirt-client-1.1.1-11.el7.x86_64

How reproducible: always

Steps to Reproduce:
1. take attached lxc.xml file 
2. virsh -c lxc:/// define lxc.xml
3. virsh -c lxc:/// start lxc1
4. virsh -c lxc:/// dumpxml lxc1 > /tmp/a.xml
5. virt-xml-validate /tmp/a.xml

Actual results: dumpxml output would not validate

Expected results: dumpxml output valid.
Comment 2 Eric Blake 2013-11-07 12:15:21 EST
For back-compat reasons, we cannot reject .xml files that don't validate by default; but there IS an open request to add a flag, where if the flag is specified, we do a validation before allowing use of the xml.

But failing to validate output from dumpxml is ALWAYS a bug, so we should definitely fix that issue.
Comment 3 Ján Tomko 2013-11-07 12:28:58 EST
Proposed upstream patch fixing the RNG schema:
https://www.redhat.com/archives/libvir-list/2013-November/msg00258.html
Comment 4 Ján Tomko 2013-11-07 12:45:40 EST
Now fixed upstream:
commit eab51940bd9d3b5f8b73f52c50ba6d00648f0909
Author:     Ján Tomko <jtomko@redhat.com>
AuthorDate: 2013-11-07 18:14:32 +0100
Commit:     Ján Tomko <jtomko@redhat.com>
CommitDate: 2013-11-07 18:43:15 +0100

    Allow root directory in filesystem source dir schema
    
    Use absDirPath instead of absFilePath.
    
    https://bugzilla.redhat.com/show_bug.cgi?id=1028107

git describe: v1.1.4-46-geab5194
Comment 7 Luwen Su 2013-11-15 01:45:03 EST
Use the default xml created by virt-manager

a.xml:

<domain type='lxc' id='3211'>
  <name>test</name>
  <uuid>02ea2ce6-55c7-4c4b-aef2-cddf9edecc8f</uuid>
  <memory unit='KiB'>1048576</memory>
  <currentMemory unit='KiB'>1048576</currentMemory>
  <vcpu placement='static'>1</vcpu>
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='x86_64'>exe</type>
    <init>/bin/sh</init>
  </os>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/libexec/libvirt_lxc</emulator>
    <filesystem type='mount' accessmode='passthrough'>
      <source dir='/'/>
      <target dir='/'/>
    </filesystem>
    <interface type='network'>
      <mac address='00:16:3e:54:f2:8c'/>
      <source network='default'/>
      <target dev='vnet0'/>
    </interface>
    <console type='pty' tty='/dev/pts/1'>
      <source path='/dev/pts/1'/>
      <target type='lxc' port='0'/>
      <alias name='console0'/>
    </console>
  </devices>
  <seclabel type='none' model='selinux'/>
</domain>


Reproduced on libvirt-1.1.1-11.el7.x86_64:

#virt-xml-validate /tmp/a.xml 
Relax-NG validity error : Extra element devices in interleave
/tmp/a.xml:1: element domain: Relax-NG validity error : Element domain failed to validate content
/tmp/a.xml fails to validate


Verified on libvirt-1.1.1-12.el7.x86_64:

#virt-xml-validate /tmp/a.xml 
/tmp/a.xml validates


So set VERIFIED
Comment 8 Ludek Smid 2014-06-13 06:19:20 EDT
This request was resolved in Red Hat Enterprise Linux 7.0.

Contact your manager or support representative in case you have further questions about the request.

Note You need to log in before you can comment on or make changes to this bug.