summaryrefslogtreecommitdiff
path: root/ironic/tests/unit/drivers/modules/network/test_common.py
diff options
context:
space:
mode:
authorVasyl Saienko <vsaienko@mirantis.com>2017-02-13 13:11:27 +0200
committerVasyl Saienko <vsaienko@mirantis.com>2017-02-13 11:30:13 +0000
commita951e452e14b37d7ea25a90e5ec2bfe6bd64b105 (patch)
tree77b61a531163bf27640a54895d794485be4a9e5b /ironic/tests/unit/drivers/modules/network/test_common.py
parent13b16c2757ad9c913e5d7ed5ffa459f14c1e6dd3 (diff)
downloadironic-a951e452e14b37d7ea25a90e5ec2bfe6bd64b105.tar.gz
Walk over all objects when doing VIF detach
We apply specific rules when doing VIF attach, do not duplicate them in vif_detach just walk over all port and portgroup objects. This also fixes an issue when VIF was attached to port manually (set vif_port_id key in port.extra) and it is impossible to detach such VIF via v1/nodes/<node_ident>/vifs API. Closes-Bug: #1663660 Change-Id: I70fe87bb4ae15a506fec705d10beaed572c0b45e
Diffstat (limited to 'ironic/tests/unit/drivers/modules/network/test_common.py')
-rw-r--r--ironic/tests/unit/drivers/modules/network/test_common.py16
1 files changed, 16 insertions, 0 deletions
diff --git a/ironic/tests/unit/drivers/modules/network/test_common.py b/ironic/tests/unit/drivers/modules/network/test_common.py
index 67d17f528..f826d0bb8 100644
--- a/ironic/tests/unit/drivers/modules/network/test_common.py
+++ b/ironic/tests/unit/drivers/modules/network/test_common.py
@@ -381,6 +381,22 @@ class TestVifPortIDMixin(db_base.DbTestCase):
self.assertFalse('vif_port_id' in pg.extra)
self.assertFalse(common.TENANT_VIF_KEY in pg.internal_info)
+ def test_vif_detach_in_extra_portgroup_manually_attached_to_port(self):
+ vif_id = uuidutils.generate_uuid()
+ pg = obj_utils.create_test_portgroup(
+ self.context, node_id=self.node.id)
+ port = obj_utils.create_test_port(
+ self.context, node_id=self.node.id, address='52:54:00:cf:2d:01',
+ portgroup_id=pg.id, uuid=uuidutils.generate_uuid(),
+ extra={'vif_port_id': vif_id}
+ )
+ with task_manager.acquire(self.context, self.node.id) as task:
+ self.interface.vif_detach(task, vif_id)
+ port.refresh()
+ pg.refresh()
+ self.assertFalse('vif_port_id' in port.extra)
+ self.assertFalse(common.TENANT_VIF_KEY in pg.internal_info)
+
def test_vif_detach_in_internal_info_portgroup(self):
vif_id = uuidutils.generate_uuid()
pg = obj_utils.create_test_portgroup(