Merge "Fix instance evacuation with PCI devices" into stable/pike

This commit is contained in:
Zuul 2018-10-01 21:59:14 +00:00 committed by Gerrit Code Review
commit 363b59436f
5 changed files with 16 additions and 8 deletions

View File

@ -2824,7 +2824,8 @@ class ComputeManager(manager.Manager):
self._do_rebuild_instance_with_claim(
claim_ctxt, context, instance, orig_image_ref,
image_ref, injected_files, new_pass, orig_sys_metadata,
bdms, recreate, on_shared_storage, preserve_ephemeral)
bdms, recreate, on_shared_storage, preserve_ephemeral,
migration)
except exception.ComputeResourcesUnavailable as e:
LOG.debug("Could not rebuild instance on this host, not "
"enough resources available.", instance=instance)
@ -2884,7 +2885,8 @@ class ComputeManager(manager.Manager):
def _do_rebuild_instance(self, context, instance, orig_image_ref,
image_ref, injected_files, new_pass,
orig_sys_metadata, bdms, recreate,
on_shared_storage, preserve_ephemeral):
on_shared_storage, preserve_ephemeral,
migration):
orig_vm_state = instance.vm_state
if recreate:
@ -2956,7 +2958,7 @@ class ComputeManager(manager.Manager):
# TODO(cfriesen): this network_api call and the one above
# are so similar, we should really try to unify them.
self.network_api.setup_instance_network_on_host(
context, instance, self.host)
context, instance, self.host, migration)
network_info = instance.get_network_info()
if bdms is None:

View File

@ -520,7 +520,8 @@ class API(base_api.NetworkAPI):
self.network_rpcapi.migrate_instance_finish(context, **args)
def setup_instance_network_on_host(self, context, instance, host):
def setup_instance_network_on_host(self, context, instance, host,
migration=None):
"""Setup network for specified instance on host."""
self.migrate_instance_finish(context, instance,
{'source_compute': None,

View File

@ -339,12 +339,15 @@ class NetworkAPI(base.Base):
"""Finish migrating the network of an instance."""
raise NotImplementedError()
def setup_instance_network_on_host(self, context, instance, host):
def setup_instance_network_on_host(self, context, instance, host,
migration=None):
"""Setup network for specified instance on host.
:param context: The request context.
:param instance: nova.objects.instance.Instance object.
:param host: The host which network should be setup for instance.
:param migration: The migration object if the instance is being
tracked with a migration.
"""
raise NotImplementedError()

View File

@ -2423,9 +2423,11 @@ class API(base_api.NetworkAPI):
"""Create a private DNS domain with optional nova project."""
raise NotImplementedError()
def setup_instance_network_on_host(self, context, instance, host):
def setup_instance_network_on_host(self, context, instance, host,
migration=None):
"""Setup network for specified instance on host."""
self._update_port_binding_for_instance(context, instance, host)
self._update_port_binding_for_instance(context, instance, host,
migration)
def cleanup_instance_network_on_host(self, context, instance, host):
"""Cleanup network for specified instance on host."""

View File

@ -12095,7 +12095,7 @@ class EvacuateHostTestCase(BaseTestCase):
mock_setup_networks_on_host.assert_called_once_with(
ctxt, self.inst, self.inst.host)
mock_setup_instance_network_on_host.assert_called_once_with(
ctxt, self.inst, self.inst.host)
ctxt, self.inst, self.inst.host, migration)
_test_rebuild(vm_is_stopped=vm_states_is_stopped)