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

This commit is contained in:
Zuul 2018-10-02 20:00:45 +00:00 committed by Gerrit Code Review
commit c22fbafe0c
5 changed files with 16 additions and 8 deletions

View File

@ -2780,7 +2780,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)
@ -2836,7 +2837,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:
@ -2901,7 +2903,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 = compute_utils.get_nw_info_for_instance(instance)
if bdms is None:

View File

@ -525,7 +525,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

@ -338,12 +338,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

@ -2377,9 +2377,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

@ -11706,7 +11706,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()