From 2daf4999b3a70b823d884fb3f57cb7f65195876f Mon Sep 17 00:00:00 2001 From: Sebastian Mitterle Date: Wed, 19 Jul 2023 03:40:18 -0400 Subject: [PATCH] nodedev_xml: extend MdevXML with attr elements Add support for attribute elements of the mediated device capability xml, e.g.: ``` ``` Signed-off-by: Sebastian Mitterle --- virttest/libvirt_xml/nodedev_xml.py | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/virttest/libvirt_xml/nodedev_xml.py b/virttest/libvirt_xml/nodedev_xml.py index e81a71bdeff..4571b23eafb 100644 --- a/virttest/libvirt_xml/nodedev_xml.py +++ b/virttest/libvirt_xml/nodedev_xml.py @@ -152,16 +152,42 @@ class MdevXML(CAPXML): """ class for capability whose type is mdev """ - __slots__ = ('type_id', 'uuid') + __slots__ = ('type_id', 'uuid', 'attrs') def __init__(self, virsh_instance=base.virsh): accessors.XMLAttribute('type_id', self, parent_xpath='/', tag_name='type', attribute='id') accessors.XMLElementText('uuid', self, parent_xpath='/', tag_name='uuid') + accessors.XMLElementList(property_name='attrs', + libvirtxml=self, + parent_xpath='/', + marshal_from=self.marshal_from_attrs, + marshal_to=self.marshal_to_attrs, + has_subclass=False) super(MdevXML, self).__init__(virsh_instance=virsh_instance) self.xml = (' ') + @staticmethod + def marshal_from_attrs(item, index, libvirtxml): + """Convert dictionary to an xml object""" + del index + del libvirtxml + if not isinstance(item, dict): + raise xcepts.LibvirtXMLError("Expected a dictionary of host" + " attributes, not a %s" + % str(item)) + return ('attr', dict(item)) + + @staticmethod + def marshal_to_attrs(tag, attr_dict, index, libvirtxml): + """Convert xml object to a dictionary" + del index + del libvirtxml + if tag != 'attr': + return None + return dict(attr_dict) + class StorageXML(CAPXML):