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)
|
LOG.debug(e, instance=instance)
|
||||||
except exception.VirtualInterfacePlugException:
|
except exception.VirtualInterfacePlugException:
|
||||||
# NOTE(mriedem): If we get here, it could be because the vif_type
|
# 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
|
# in the cache is "binding_failed" or "unbound". The only way to
|
||||||
# try and bind the ports again, which would be expensive here on
|
# fix this is to try and bind the ports again, which would be
|
||||||
# host startup. We could add a check to _heal_instance_info_cache
|
# expensive here on host startup. We could add a check to
|
||||||
# to handle this, but probably only if the instance task_state is
|
# _heal_instance_info_cache to handle this, but probably only if
|
||||||
# None.
|
# the instance task_state is None.
|
||||||
LOG.exception('Virtual interface plugging failed for instance. '
|
LOG.exception('Virtual interface plugging failed for instance. '
|
||||||
'The port binding:host_id may need to be manually '
|
'The port binding:host_id may need to be manually '
|
||||||
'updated.', instance=instance)
|
'updated.', instance=instance)
|
||||||
|
@ -482,6 +482,18 @@ def _nova_to_osvif_vif_binding_failed(vif):
|
|||||||
raise NotImplementedError()
|
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):
|
def nova_to_osvif_vif(vif):
|
||||||
"""Convert a Nova VIF model to an os-vif object
|
"""Convert a Nova VIF model to an os-vif object
|
||||||
|
|
||||||
|
@ -1004,6 +1004,17 @@ class OSVIFUtilTestCase(test.NoDBTestCase):
|
|||||||
subnets=[]),)
|
subnets=[]),)
|
||||||
self.assertIsNone(os_vif_util.nova_to_osvif_vif(vif))
|
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):
|
def test_nova_to_osvif_vhostuser_vrouter(self):
|
||||||
vif = model.VIF(
|
vif = model.VIF(
|
||||||
id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
|
id="dc065497-3c8d-4f44-8fb4-e1d33c16a536",
|
||||||
|
Loading…
Reference in New Issue
Block a user