Bug 1028107

Summary: 'virsh dumpxml <lxc container>' created xml does not validate against schema
Product: Red Hat Enterprise Linux 7 Reporter: michal novacek <mnovacek>
Component: libvirtAssignee: Ján Tomko <jtomko>
Status: CLOSED CURRENTRELEASE QA Contact: Virtualization Bugs <virt-bugs>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 7.0CC: acathrow, ajia, dyuan, eblake, jtomko, lsu, mzhan
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
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 10:19:20 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:
Attachments:
Description Flags
dumped xml file that does not validate with virt-xml-validate command none

Description michal novacek 2013-11-07 16:46:57 UTC
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 17:15:21 UTC
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 17:28:58 UTC
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 17:45:40 UTC
Now fixed upstream:
commit eab51940bd9d3b5f8b73f52c50ba6d00648f0909
Author:     Ján Tomko <jtomko>
AuthorDate: 2013-11-07 18:14:32 +0100
Commit:     Ján Tomko <jtomko>
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 06:45:03 UTC
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 10:19:20 UTC
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.