diff options
author | Vasyl Saienko <vsaienko@mirantis.com> | 2017-02-13 13:11:27 +0200 |
---|---|---|
committer | Vasyl Saienko <vsaienko@mirantis.com> | 2017-02-13 11:30:13 +0000 |
commit | a951e452e14b37d7ea25a90e5ec2bfe6bd64b105 (patch) | |
tree | 77b61a531163bf27640a54895d794485be4a9e5b /ironic/tests/unit/drivers/modules/network/test_common.py | |
parent | 13b16c2757ad9c913e5d7ed5ffa459f14c1e6dd3 (diff) | |
download | ironic-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.py | 16 |
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( |