summaryrefslogtreecommitdiff
path: root/ironic/tests/unit/api/controllers/v1/test_node.py
diff options
context:
space:
mode:
authorTzu-Mainn Chen <tzumainn@redhat.com>2020-05-28 21:56:21 +0000
committerTzu-Mainn Chen <tzumainn@redhat.com>2020-06-15 20:56:23 +0000
commite8f6fdd56d7eccbdeba3ff3d1101a8dc6a8be72f (patch)
tree117dc641f46eb63f80d2522c9e8a7beea0118f3e /ironic/tests/unit/api/controllers/v1/test_node.py
parentc717f0e49444041337133ca655296e749d2f19ad (diff)
downloadironic-e8f6fdd56d7eccbdeba3ff3d1101a8dc6a8be72f.tar.gz
Allow node vif attach to specify port_uuid or portgroup_uuid
Update the function that checks for free ports/portgroups to accept a port_like_obj_id parameter to match. This parameter comes from the vif_info dictionary. Story: 2007723 Task: 39872 Change-Id: I82efa90994325aa37cca865920d656f510a691b2
Diffstat (limited to 'ironic/tests/unit/api/controllers/v1/test_node.py')
-rw-r--r--ironic/tests/unit/api/controllers/v1/test_node.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/ironic/tests/unit/api/controllers/v1/test_node.py b/ironic/tests/unit/api/controllers/v1/test_node.py
index 99f3cf34f..e6c59c060 100644
--- a/ironic/tests/unit/api/controllers/v1/test_node.py
+++ b/ironic/tests/unit/api/controllers/v1/test_node.py
@@ -6177,6 +6177,51 @@ class TestAttachDetachVif(test_api_base.BaseApiTest):
self.assertTrue(ret.json['error_message'])
@mock.patch.object(objects.Node, 'get_by_uuid')
+ @mock.patch.object(rpcapi.ConductorAPI, 'vif_attach')
+ def test_vif_attach_port_uuid_and_portgroup_uuid(self, mock_attach,
+ mock_get):
+ vif_id = uuidutils.generate_uuid()
+ request_body = {
+ 'id': vif_id,
+ 'port_uuid': 'port-uuid',
+ 'portgroup_uuid': 'portgroup-uuid'
+ }
+
+ mock_get.return_value = self.node
+
+ ret = self.post_json('/nodes/%s/vifs' % self.node.uuid,
+ request_body, expect_errors=True,
+ headers={api_base.Version.string:
+ "1.67"})
+
+ self.assertEqual(http_client.BAD_REQUEST, ret.status_int)
+ self.assertTrue(ret.json['error_message'])
+
+ @mock.patch.object(objects.Node, 'get_by_uuid')
+ @mock.patch.object(rpcapi.ConductorAPI, 'vif_attach')
+ def test_vif_attach_port_uuid_and_portgroup_uuid_old(self, mock_attach,
+ mock_get):
+ vif_id = uuidutils.generate_uuid()
+ request_body = {
+ 'id': vif_id,
+ 'port_uuid': 'port-uuid',
+ 'portgroup_uuid': 'portgroup-uuid'
+ }
+
+ mock_get.return_value = self.node
+
+ ret = self.post_json('/nodes/%s/vifs' % self.node.uuid,
+ request_body,
+ headers={api_base.Version.string:
+ self.vif_version})
+
+ self.assertEqual(http_client.NO_CONTENT, ret.status_code)
+ mock_get.assert_called_once_with(mock.ANY, self.node.uuid)
+ mock_attach.assert_called_once_with(mock.ANY, self.node.uuid,
+ vif_info=request_body,
+ topic='test-topic')
+
+ @mock.patch.object(objects.Node, 'get_by_uuid')
@mock.patch.object(rpcapi.ConductorAPI, 'vif_detach')
def test_vif_detach(self, mock_detach, mock_get):
vif_id = uuidutils.generate_uuid()