Remove compatibility check from migrate_data

Since compute API 4.8 (Mitaka) we send the LiveMigrateData as an ovo.
Since Queens we have compute RPC 5.0. We don't expect clients setting the
RPC pin older than 4.22 (Pike). So it is safe to remove the migrate
data compatibility checks from the code.

Change-Id: I5c84f3c9b4137c84c36bb4e755ffad9c0e9f8a2b
This commit is contained in:
Balazs Gibizer 2020-05-21 14:36:29 +02:00
parent bfdca19bb8
commit ee84b2688e
5 changed files with 25 additions and 65 deletions

View File

@ -11175,6 +11175,7 @@ class LibvirtConnTestCase(test.NoDBTestCase,
graphics_listen_addr_vnc='10.0.0.1',
graphics_listen_addr_spice='10.0.0.2',
serial_listen_addr='127.0.0.1',
serial_listen_ports=[1234],
target_connect_addr=target_connection,
bdms=[],
block_migration=False)
@ -11207,7 +11208,9 @@ class LibvirtConnTestCase(test.NoDBTestCase,
}
migrate_data = objects.LibvirtLiveMigrateData(
target_connect_addr=target_connection,
block_migration=False)
block_migration=False,
serial_listen_addr='127.0.0.1',
serial_listen_ports=[1234])
dom_mock = mock.MagicMock()
guest = libvirt_guest.Guest(dom_mock)
drvr._live_migration_operation(self.context, instance,
@ -11514,7 +11517,10 @@ class LibvirtConnTestCase(test.NoDBTestCase,
mock.patch.object(guest, 'get_xml_desc',
return_value=initial_xml)):
config = libvirt_migrate.get_updated_guest_xml(guest,
objects.LibvirtLiveMigrateData(bdms=[bdmi]),
objects.LibvirtLiveMigrateData(
bdms=[bdmi],
serial_listen_addr='127.0.0.1',
serial_listen_ports=[1234]),
drvr._get_volume_config)
parser = etree.XMLParser(remove_blank_text=True)
config = etree.fromstring(config, parser)
@ -11711,7 +11717,10 @@ class LibvirtConnTestCase(test.NoDBTestCase,
mock.patch.object(guest, 'get_xml_desc',
return_value=initial_xml)):
config = libvirt_migrate.get_updated_guest_xml(guest,
objects.LibvirtLiveMigrateData(bdms=[bdmi]),
objects.LibvirtLiveMigrateData(
bdms=[bdmi],
serial_listen_addr = '127.0.0.1',
serial_listen_ports = [1234]),
drvr._get_volume_config)
self.assertEqual(target_xml, config)
@ -11743,7 +11752,10 @@ class LibvirtConnTestCase(test.NoDBTestCase,
return_value=initial_xml)):
config = libvirt_migrate.get_updated_guest_xml(
guest,
objects.LibvirtLiveMigrateData(bdms=[bdmi]),
objects.LibvirtLiveMigrateData(
bdms=[bdmi],
serial_listen_addr='127.0.0.1',
serial_listen_ports=[1234]),
drvr._get_volume_config)
self.assertEqual(target_xml, config)
@ -11861,6 +11873,7 @@ class LibvirtConnTestCase(test.NoDBTestCase,
graphics_listen_addr_vnc='0.0.0.0',
graphics_listen_addr_spice='0.0.0.0',
serial_listen_addr='127.0.0.1',
serial_listen_ports=[1234],
target_connect_addr=target_connection,
bdms=[],
block_migration=False)
@ -11891,6 +11904,7 @@ class LibvirtConnTestCase(test.NoDBTestCase,
graphics_listen_addr_vnc='0.0.0.0',
graphics_listen_addr_spice='0.0.0.0',
serial_listen_addr='127.0.0.1',
serial_listen_ports=[1234],
target_connect_addr=target_connection,
bdms=[],
block_migration=True)
@ -11964,6 +11978,7 @@ class LibvirtConnTestCase(test.NoDBTestCase,
graphics_listen_addr_vnc='0.0.0.0',
graphics_listen_addr_spice='0.0.0.0',
serial_listen_addr='127.0.0.1',
serial_listen_ports=[1234],
target_connect_addr=target_connection,
bdms=[],
block_migration=True)
@ -12009,6 +12024,7 @@ class LibvirtConnTestCase(test.NoDBTestCase,
graphics_listen_addr_vnc='0.0.0.0',
graphics_listen_addr_spice='0.0.0.0',
serial_listen_addr='127.0.0.1',
serial_listen_ports=[1234],
target_connect_addr=target_connection,
bdms=[],
block_migration=True)
@ -12060,6 +12076,7 @@ class LibvirtConnTestCase(test.NoDBTestCase,
graphics_listen_addr_vnc='10.0.0.1',
graphics_listen_addr_spice='10.0.0.2',
serial_listen_addr='127.0.0.1',
serial_listen_ports=[1234],
target_connect_addr=target_connection,
bdms=[],
block_migration=False)

View File

@ -66,34 +66,6 @@ class UtilityMigrationTestCase(test.NoDBTestCase):
'vnc': '127.0.0.1',
'spice': None}, addrs)
def test_serial_listen_addr(self):
data = objects.LibvirtLiveMigrateData(
serial_listen_addr='127.0.0.1')
addr = migration.serial_listen_addr(data)
self.assertEqual('127.0.0.1', addr)
def test_serial_listen_addr_emtpy(self):
data = objects.LibvirtLiveMigrateData()
addr = migration.serial_listen_addr(data)
self.assertIsNone(addr)
def test_serial_listen_addr_None(self):
data = objects.LibvirtLiveMigrateData()
data.serial_listen_addr = None
addr = migration.serial_listen_addr(data)
self.assertIsNone(addr)
def test_serial_listen_ports(self):
data = objects.LibvirtLiveMigrateData(
serial_listen_ports=[1, 2, 3])
ports = migration.serial_listen_ports(data)
self.assertEqual([1, 2, 3], ports)
def test_serial_listen_ports_emtpy(self):
data = objects.LibvirtLiveMigrateData()
ports = migration.serial_listen_ports(data)
self.assertEqual([], ports)
@mock.patch('lxml.etree.tostring')
@mock.patch.object(migration, '_update_memory_backing_xml')
@mock.patch.object(migration, '_update_perf_events_xml')

View File

@ -604,7 +604,7 @@ class _VirtDriverTestCase(_FakeDriverBackendTestCase):
migration = objects.Migration(context=fake_context, id=1)
migrate_data = objects.LibvirtLiveMigrateData(
migration=migration, bdms=[], block_migration=False,
serial_listen_addr='127.0.0.1')
serial_listen_addr='127.0.0.1', serial_listen_ports=[1234])
self.connection.live_migration(self.ctxt, instance_ref, 'otherhost',
lambda *a, **b: None,
lambda *a, **b: None,

View File

@ -8744,9 +8744,7 @@ class LibvirtDriver(driver.ComputeDriver):
else:
migration_flags = self._live_migration_flags
serial_listen_addr = libvirt_migrate.serial_listen_addr(
migrate_data)
if not serial_listen_addr:
if not migrate_data.serial_listen_addr:
# In this context we want to ensure that serial console is
# disabled on source node. This is because nova couldn't
# retrieve serial listen address from destination node, so we

View File

@ -53,33 +53,6 @@ def graphics_listen_addrs(migrate_data):
return listen_addrs
def serial_listen_addr(migrate_data):
"""Returns listen address serial from a LibvirtLiveMigrateData"""
listen_addr = None
# NOTE (markus_z/dansmith): Our own from_legacy_dict() code can return
# an object with nothing set here. That can happen based on the
# compute RPC version pin. Until we can bump that major (which we
# can do just before Ocata releases), we may still get a legacy
# dict over the wire, converted to an object, and thus is may be unset
# here.
if migrate_data.obj_attr_is_set('serial_listen_addr'):
# NOTE (markus_z): The value of 'serial_listen_addr' is either
# an IP address (as string type) or None. There's no need of a
# conversion, in fact, doing a string conversion of None leads to
# 'None', which is an invalid (string type) value here.
listen_addr = migrate_data.serial_listen_addr
return listen_addr
# TODO(sahid): remove me for Q*
def serial_listen_ports(migrate_data):
"""Returns ports serial from a LibvirtLiveMigrateData"""
ports = []
if migrate_data.obj_attr_is_set('serial_listen_ports'):
ports = migrate_data.serial_listen_ports
return ports
def get_updated_guest_xml(guest, migrate_data, get_volume_config,
get_vif_config=None, new_resources=None):
xml_doc = etree.fromstring(guest.get_xml_desc(dump_migratable=True))
@ -176,8 +149,8 @@ def _update_graphics_xml(xml_doc, migrate_data):
def _update_serial_xml(xml_doc, migrate_data):
listen_addr = serial_listen_addr(migrate_data)
listen_ports = serial_listen_ports(migrate_data)
listen_addr = migrate_data.serial_listen_addr
listen_ports = migrate_data.serial_listen_ports
def set_listen_addr_and_port(source, listen_addr, serial_listen_ports):
# The XML nodes can be empty, which would make checks like