Skip to content

Commit

Permalink
Merge "libvirt: Ignore LibvirtConfigObject kwargs"
Browse files Browse the repository at this point in the history
  • Loading branch information
Zuul authored and openstack-gerrit committed Jul 19, 2022
2 parents bf347a1 + f708fee commit 9d8a8d8
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 24 deletions.
11 changes: 8 additions & 3 deletions nova/tests/unit/virt/libvirt/test_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -1535,7 +1535,10 @@ def test_config_graphics(self):
class LibvirtConfigGuestHostdev(LibvirtConfigBaseTest):

def test_config_pci_guest_host_dev(self):
obj = config.LibvirtConfigGuestHostdev(mode='subsystem', type='pci')
obj = config.LibvirtConfigGuestHostdev()
obj.mode = 'subsystem'
obj.type = 'pci'

xml = obj.to_xml()
expected = """
<hostdev mode="subsystem" type="pci" managed="yes"/>
Expand Down Expand Up @@ -3949,8 +3952,10 @@ def test_config_secret_iscsi(self):

class LibvirtConfigGuestVPMEMTest(LibvirtConfigBaseTest):
def test_config_vpmem(self):
obj = config.LibvirtConfigGuestVPMEM(
devpath='/dev/dax0.0', size_kb=4096 * units.Ki, align_kb=2048)
obj = config.LibvirtConfigGuestVPMEM()
obj.source_path = '/dev/dax0.0'
obj.target_size = 4096 * units.Ki
obj.align_size = 2048

xml = obj.to_xml()
self.assertXmlEqual(xml, """
Expand Down
54 changes: 35 additions & 19 deletions nova/virt/libvirt/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,12 @@ class LibvirtConfigObject(object):
def __init__(self, **kwargs):
super(LibvirtConfigObject, self).__init__()

self.root_name = kwargs.get("root_name")
self.ns_prefix = kwargs.get('ns_prefix')
self.ns_uri = kwargs.get('ns_uri')
self.root_name = kwargs.pop("root_name")
self.ns_prefix = kwargs.pop("ns_prefix", None)
self.ns_uri = kwargs.pop("ns_uri", None)

# handle programmer error
assert not kwargs

def _new_node(self, node_name, **kwargs):
if self.ns_uri is None:
Expand Down Expand Up @@ -1532,7 +1535,8 @@ def parse_dom(self, xmldoc):

class LibvirtConfigGuestDiskEncryptionSecret(LibvirtConfigObject):
def __init__(self, **kwargs):
super(LibvirtConfigGuestDiskEncryptionSecret, self).__init__(**kwargs)
super(LibvirtConfigGuestDiskEncryptionSecret, self).__init__(
root_name='diskencryptionsecret', **kwargs)
self.type = None
self.uuid = None

Expand All @@ -1552,7 +1556,8 @@ class LibvirtConfigGuestDiskEncryption(LibvirtConfigObject):
"""

def __init__(self, **kwargs):
super(LibvirtConfigGuestDiskEncryption, self).__init__(**kwargs)
super(LibvirtConfigGuestDiskEncryption, self).__init__(
root_name='diskencryption', **kwargs)
self.format = None
self.secret = None

Expand All @@ -1575,7 +1580,8 @@ def format_dom(self):
class LibvirtConfigGuestDiskMirror(LibvirtConfigObject):

def __init__(self, **kwargs):
super(LibvirtConfigGuestDiskMirror, self).__init__(**kwargs)
super(LibvirtConfigGuestDiskMirror, self).__init__(
root_name='diskmirror', **kwargs)
self.ready = None

def parse_dom(self, xmldoc):
Expand All @@ -1585,6 +1591,8 @@ def parse_dom(self, xmldoc):
class LibvirtConfigGuestIDMap(LibvirtConfigObject):

def __init__(self, **kwargs):
if 'root_name' not in kwargs:
kwargs['root_name'] = 'id'
super(LibvirtConfigGuestIDMap, self).__init__(**kwargs)
self.start = 0
self.target = 0
Expand Down Expand Up @@ -2168,13 +2176,14 @@ def __init__(self, **kwargs):

class LibvirtConfigGuestHostdev(LibvirtConfigGuestDevice):
def __init__(self, **kwargs):
super(LibvirtConfigGuestHostdev, self).\
__init__(root_name="hostdev", **kwargs)
self.mode = kwargs.get('mode')
self.type = kwargs.get('type')
super(LibvirtConfigGuestHostdev, self).__init__(
root_name="hostdev", **kwargs,
)
self.mode = None
self.type = None
# managed attribute is only used by PCI devices but mediated devices
# need to say managed=no
self.managed = kwargs.get('managed', 'yes')
self.managed = "yes"

def format_dom(self):
dev = super(LibvirtConfigGuestHostdev, self).format_dom()
Expand All @@ -2194,8 +2203,11 @@ def parse_dom(self, xmldoc):
class LibvirtConfigGuestHostdevPCI(LibvirtConfigGuestHostdev):
def __init__(self, **kwargs):
super(LibvirtConfigGuestHostdevPCI, self).\
__init__(mode='subsystem', type='pci',
**kwargs)
__init__(**kwargs)

self.mode = 'subsystem'
self.type = 'pci'

# These are returned from libvirt as hexadecimal strings with 0x prefix
# even if they have a different meaningful range: domain 16 bit,
# bus 8 bit, slot 5 bit, and function 3 bit
Expand Down Expand Up @@ -2252,10 +2264,14 @@ def parse_dom(self, xmldoc):

class LibvirtConfigGuestHostdevMDEV(LibvirtConfigGuestHostdev):
def __init__(self, **kwargs):
super(LibvirtConfigGuestHostdevMDEV, self).__init__(
mode='subsystem', type='mdev', managed='no', **kwargs)
super(LibvirtConfigGuestHostdevMDEV, self).__init__(**kwargs)

self.mode = 'subsystem'
self.type = 'mdev'
self.managed = 'no'

# model attribute is only supported by mediated devices
self.model = kwargs.get('model', 'vfio-pci')
self.model = 'vfio-pci'
self.uuid = None

def format_dom(self):
Expand Down Expand Up @@ -3585,11 +3601,11 @@ def __init__(self, **kwargs):

self.model = "nvdimm"
self.access = "shared"
self.source_path = kwargs.get("devpath", "")
self.align_size = kwargs.get("align_kb", 0)
self.source_path = ""
self.align_size = 0
self.pmem = True

self.target_size = kwargs.get("size_kb", 0)
self.target_size = 0
self.target_node = 0
self.label_size = 2 * units.Ki

Expand Down
6 changes: 4 additions & 2 deletions nova/virt/libvirt/driver.py
Original file line number Diff line number Diff line change
Expand Up @@ -7013,8 +7013,10 @@ def _guest_add_vpmems(self, guest, vpmems):
size_kb = vpmem.size // units.Ki
align_kb = vpmem.align // units.Ki

vpmem_config = vconfig.LibvirtConfigGuestVPMEM(
devpath=vpmem.devpath, size_kb=size_kb, align_kb=align_kb)
vpmem_config = vconfig.LibvirtConfigGuestVPMEM()
vpmem_config.source_path = vpmem.devpath
vpmem_config.target_size = size_kb
vpmem_config.align_size = align_kb

# max memory size needs contain vpmem size
guest.max_memory_size += size_kb
Expand Down

0 comments on commit 9d8a8d8

Please sign in to comment.