make virtual pmem feature compatible with python3

convert floating-point number to integer when generating
vpmem xml.

Co-Authored-By: Eric Fried <openstack@fried.cc>
Change-Id: I6e94150820bf31a8404ef257db2b64b0d2ee9763
Closes-Bug: 1845905
This commit is contained in:
LuyaoZhong 2019-09-29 08:54:41 +00:00 committed by Eric Fried
parent 961c294549
commit 6d5fdb4ef4
2 changed files with 44 additions and 2 deletions

View File

@ -25207,3 +25207,45 @@ class LibvirtPMEMNamespaceTests(test.NoDBTestCase):
drvr = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)
self.assertRaises(exception.VPMEMCleanupFailed,
drvr._cleanup_vpmems, vpmems)
def test_guest_add_vpmems_int_values(self):
"""Ensures XML is generated with integer size/align values.
See bug #1845905.
"""
guest = vconfig.LibvirtConfigGuest()
guest.virt_type = 'kvm'
guest.name = 'name'
guest.uuid = 'uuid'
guest.memory = 1024
vpmems = [self.vpmem_0]
drvr = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)
drvr._guest_add_vpmems(guest, vpmems)
expected = '''
<domain type="kvm">
<uuid>uuid</uuid>
<name>name</name>
<memory>1024</memory>
<maxMemory slots="1">4193280</maxMemory>
<vcpu>1</vcpu>
<os>
<type>None</type>
</os>
<devices>
<memory model="nvdimm" access="shared">
<source>
<path>/dev/dax0.0</path>
<alignsize>2048</alignsize>
<pmem/>
</source>
<target>
<size>4192256</size>
<node>0</node>
<label>
<size>2048</size>
</label>
</target>
</memory>
</devices>
</domain>'''
self.assertXmlEqual(expected, guest.to_xml())

View File

@ -5778,8 +5778,8 @@ class LibvirtDriver(driver.ComputeDriver):
guest.max_memory_size = guest.memory
guest.max_memory_slots = 0
for vpmem in vpmems:
size_kb = vpmem.size / units.Ki
align_kb = vpmem.align / units.Ki
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)