Merge "Handle unbound vif plug errors on compute restart" into stable/queens
This commit is contained in:
commit
9cc0a58cf1
|
@ -962,11 +962,11 @@ class ComputeManager(manager.Manager):
|
|||
LOG.debug(e, instance=instance)
|
||||
except exception.VirtualInterfacePlugException:
|
||||
# NOTE(mriedem): If we get here, it could be because the vif_type
|
||||
# in the cache is "binding_failed". The only way to fix that is to
|
||||
# try and bind the ports again, which would be expensive here on
|
||||
# host startup. We could add a check to _heal_instance_info_cache
|
||||
# to handle this, but probably only if the instance task_state is
|
||||
# None.
|
||||
# in the cache is "binding_failed" or "unbound". The only way to
|
||||
# fix this is to try and bind the ports again, which would be
|
||||
# expensive here on host startup. We could add a check to
|
||||
# _heal_instance_info_cache to handle this, but probably only if
|
||||
# the instance task_state is None.
|
||||
LOG.exception('Virtual interface plugging failed for instance. '
|
||||
'The port binding:host_id may need to be manually '
|
||||
'updated.', instance=instance)
|
||||
|
|
|
@ -482,6 +482,18 @@ def _nova_to_osvif_vif_binding_failed(vif):
|
|||
raise NotImplementedError()
|
||||
|
||||
|
||||
# VIF_TYPE_UNBOUND = 'unbound'
|
||||
def _nova_to_osvif_vif_unbound(vif):
|
||||
"""Special handler for the "unbound" vif type.
|
||||
|
||||
The "unbound" vif type indicates a port has not been hooked up to backend
|
||||
network driver (OVS, linux bridge, ...). We raise NotImplementedError to
|
||||
indicate to the caller that we cannot handle this type of vif rather than
|
||||
the generic "Unsupported VIF type" error in nova_to_osvif_vif.
|
||||
"""
|
||||
raise NotImplementedError()
|
||||
|
||||
|
||||
def nova_to_osvif_vif(vif):
|
||||
"""Convert a Nova VIF model to an os-vif object
|
||||
|
||||
|
|
|
@ -1004,6 +1004,17 @@ class OSVIFUtilTestCase(test.NoDBTestCase):
|
|||
subnets=[]),)
|
||||
self.assertIsNone(os_vif_util.nova_to_osvif_vif(vif))
|
||||
|
||||
def test_nova_to_osvif_vif_unbound(self):
|
||||
vif = model.VIF(
|
||||
id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
|
||||
type="unbound",
|
||||
address="22:52:25:62:e2:aa",
|
||||
network=model.Network(
|
||||
id="b82c1929-051e-481d-8110-4669916c7915",
|
||||
label="Demo Net",
|
||||
subnets=[]),)
|
||||
self.assertIsNone(os_vif_util.nova_to_osvif_vif(vif))
|
||||
|
||||
def test_nova_to_osvif_vhostuser_vrouter(self):
|
||||
vif = model.VIF(
|
||||
id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
|
||||
|
|
Loading…
Reference in New Issue