Red Hat Bugzilla – Bug 1245525
libvirt should reject metadata elements not belonging to any namespace
Last modified: 2016-11-03 14:20:14 EDT
Description of problem: libvirt should reject to configure reduntant metadata element in the guest's xml while these elements aren't in namespace Version-Release number of selected component (if applicable): libvirt-1.2.17-2.el7.x86_64 How reproducible: 100% Steps 1.Prepare a shutoff guest # virsh list --all Id Name State ---------------------------------------------------- - 7.0 shut off 2.Edit guest's xml, add multi same metadata in guest's xml, It will generate many redundant records in guest's xml # virsh dumpxml 7.0 -- <metadata> <herp2erp xmlns:foobar="http://foo.bar3/" xmlns:herp2="http://herp.derp/"/> <herp2erp xmlns:foobar="http://foo.bar3/" xmlns:herp2="http://herp.derp/"/> <herp2erp xmlns:foobar="http://foo.bar3/" xmlns:herp2="http://herp.derp/"/> <herp2erp xmlns:foobar="http://foo.bar3/" xmlns:herp2="http://herp.derp/"/> <herp2erp xmlns:foobar="http://foo.bar3/" xmlns:herp2="http://herp.derp/"/> <herp2erp xmlns:foobar="http://foo.bar3/" xmlns:herp2="http://herp.derp/"/> <herp2erp xmlns:foobar="http://foo.bar3/" xmlns:herp2="http://herp.derp/"/> </metadata> Actual results: Generate the redundant record in guest's xml while configure many same metadatas in guest's xml Expected results: libvirt should reject to configure reduntant metadata element in the guest's xml libvirt should reject to configure reduntant metadata element in the guest's xml
The problem is that the metadata elements don't belong to any namespace, but they should.
Fixed upstream: commit 51a4178f24a7a7a88a36915b8b358a8321e3ef58 Author: Peter Krempa <pkrempa@redhat.com> Date: Mon Oct 5 09:58:30 2015 +0200 conf: Remove <metadata> elements with no namespace Our docs state that subelements of <metadata> shall have a namespace and the medatata APIs expect that too. To avoid inaccessible <metadata> sub-elements, just remove those that don't conform to the documentation. Apart from adding the new condition this patch renames the function and refactors the code flow to allow the changes.
Verify this bug with libvirt-1.3.2-1.el7.x86_64 1.Prepare a shutoff guest # virsh list --all Id Name State ---------------------------------------------------- - virt-tests-vm3 shut off 2.Edit guest's xml, add multi same invalid metadata in guest's xml, libvirt will remove the invalid sub-elements from <metadata> element in guest's xml # virsh edit virt-tests-vm3 -- <metadata> <herp2erp xmlns:foobar="http://foo.bar3/" xmlns:herp2="http://herp.derp/"/> <herp2erp xmlns:foobar="http://foo.bar3/" xmlns:herp2="http://herp.derp/"/> <herp2erp xmlns:foobar="http://foo.bar3/" xmlns:herp2="http://herp.derp/"/> <herp2erp xmlns:foobar="http://foo.bar3/" xmlns:herp2="http://herp.derp/"/> <herp2erp xmlns:foobar="http://foo.bar3/" xmlns:herp2="http://herp.derp/"/> <herp2erp xmlns:foobar="http://foo.bar3/" xmlns:herp2="http://herp.derp/"/> <herp2erp xmlns:foobar="http://foo.bar3/" xmlns:herp2="http://herp.derp/"/> </metadata> #virsh dumpxml virt-tests-vm3 -- <metadata/> 3.Edit guest's xml, add multi same valid metadata in guest's xml, save the guest's xml, only 1 record will generated #virsh edit virt-tests-vm3 -- <metadata> <foobar:herp2erp xmlns:foobar="http://foo.bar3/"/> <foobar:herp2erp xmlns:foobar="http://foo.bar3/"/> <foobar:herp2erp xmlns:foobar="http://foo.bar3/"/> <foobar:herp2erp xmlns:foobar="http://foo.bar3/"/> <foobar:herp2erp xmlns:foobar="http://foo.bar3/"/> <foobar:herp2erp xmlns:foobar="http://foo.bar3/"/> <foobar:herp2erp xmlns:foobar="http://foo.bar3/"/> </metadata> #virsh dumpxml virt-tests-vm3 <metadata> <foobar:herp2erp xmlns:foobar="http://foo.bar3/"/> </metadata> 4.Do some basic check the metadata command, all command could get expect result. # virsh metadata virt-tests-vm3 --uri http://foo.bar3/ <herp2erp/> # virsh metadata virt-tests-vm3 --uri http://foo.bar3/ --edit --key foobar <herp2erp1/> # virsh metadata virt-tests-vm3 --uri http://foo.bar3/ <herp2erp1/> # virsh metadata virt-tests-vm3 --uri http://foo.bar3/ --remove Metadata removed # virsh metadata virt-tests-vm3 --uri http://foo.bar3/ error: metadata not found: Requested metadata element is not present According to upper steps, mark this bug 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://rhn.redhat.com/errata/RHSA-2016-2577.html