File migrate-uri.patch of Package openstack-nova
Index: nova/virt/libvirt/driver.py
===================================================================
--- nova/virt/libvirt/driver.py.orig
+++ nova/virt/libvirt/driver.py
@@ -37,6 +37,7 @@ import os
import shutil
import tempfile
import time
+import urlparse
import uuid
import eventlet
@@ -839,7 +840,7 @@ class LibvirtDriver(driver.ComputeDriver
return uri
@staticmethod
- def _live_migration_uri(dest):
+ def _live_migration_uri_template():
# Only Xen and QEMU support live migration, see
# https://libvirt.org/migration.html#scenarios for reference
uris = {
@@ -851,8 +852,19 @@ class LibvirtDriver(driver.ComputeDriver
uri = CONF.libvirt.live_migration_uri or uris.get(virt_type)
if uri is None:
raise exception.LiveMigrationURINotAvailable(virt_type=virt_type)
+ return uri
+
+ @staticmethod
+ def _live_migration_uri(dest):
+ uri = LibvirtDriver._live_migration_uri_template()
return uri % dest
+ @staticmethod
+ def _migrate_uri(dest):
+ uri = LibvirtDriver._live_migration_uri_template()
+ netloc = urlparse.urlparse(uri).netloc % dest
+ return 'tcp://%s' % netloc
+
def instance_exists(self, instance):
"""Efficient override of base instance_exists method."""
try:
@@ -6058,6 +6070,7 @@ class LibvirtDriver(driver.ComputeDriver
'bandwidth': CONF.libvirt.live_migration_bandwidth,
'destination_xml': new_xml_str,
'migrate_disks': device_names,
+ 'migrate_uri': str(self._migrate_uri(dest)),
}
# NOTE(pkoniszewski): Because of precheck which blocks
# tunnelled block live migration with mapped volumes we
@@ -6078,7 +6091,7 @@ class LibvirtDriver(driver.ComputeDriver
else:
dom.migrateToURI2(
self._live_migration_uri(dest),
- None,
+ self._migrate_uri(dest),
new_xml_str,
migration_flags,
None,