mirror of
https://github.com/virt-manager/virt-manager.git
synced 2025-02-25 18:55:27 -06:00
xmlbuilder: Serialize child objects even if they aren't in PROP_ORDER
This was just a bug
This commit is contained in:
parent
a23f1794d0
commit
85e81df01a
@ -1047,6 +1047,7 @@ class XMLBuilder(object):
|
|||||||
def _do_add_parse_bits(self, node, ctx):
|
def _do_add_parse_bits(self, node, ctx):
|
||||||
# Set all defaults if the properties have one registered
|
# Set all defaults if the properties have one registered
|
||||||
xmlprops = self._all_xml_props()
|
xmlprops = self._all_xml_props()
|
||||||
|
childprops = self._all_child_props()
|
||||||
|
|
||||||
for prop in xmlprops.values():
|
for prop in xmlprops.values():
|
||||||
prop._set_default(self)
|
prop._set_default(self)
|
||||||
@ -1054,19 +1055,25 @@ class XMLBuilder(object):
|
|||||||
# Set up preferred XML ordering
|
# Set up preferred XML ordering
|
||||||
do_order = self._proporder[:]
|
do_order = self._proporder[:]
|
||||||
for key in reversed(self._XML_PROP_ORDER):
|
for key in reversed(self._XML_PROP_ORDER):
|
||||||
|
if key not in xmlprops and key not in childprops:
|
||||||
|
raise RuntimeError("programming error: key '%s' must be "
|
||||||
|
"xml prop or child prop" % key)
|
||||||
if key in do_order:
|
if key in do_order:
|
||||||
do_order.remove(key)
|
do_order.remove(key)
|
||||||
do_order.insert(0, key)
|
do_order.insert(0, key)
|
||||||
elif key not in xmlprops:
|
elif key in childprops:
|
||||||
do_order.insert(0, key)
|
do_order.insert(0, key)
|
||||||
|
|
||||||
|
for key in childprops.keys():
|
||||||
|
if key not in do_order:
|
||||||
|
do_order.append(key)
|
||||||
|
|
||||||
# Alter the XML
|
# Alter the XML
|
||||||
for key in do_order:
|
for key in do_order:
|
||||||
if key in xmlprops:
|
if key in xmlprops:
|
||||||
xmlprops[key]._set_xml(self, self._propstore[key], node)
|
xmlprops[key]._set_xml(self, self._propstore[key], node)
|
||||||
continue
|
elif key in childprops:
|
||||||
|
for obj in util.listify(getattr(self, key)):
|
||||||
for obj in util.listify(getattr(self, key)):
|
obj._add_parse_bits(node, ctx)
|
||||||
obj._add_parse_bits(node, ctx)
|
|
||||||
|
|
||||||
return self._xmlstate.get_node_xml(ctx)
|
return self._xmlstate.get_node_xml(ctx)
|
||||||
|
Loading…
Reference in New Issue
Block a user