diff options
author | Tzu-Mainn Chen <tzumainn@redhat.com> | 2020-05-28 21:56:21 +0000 |
---|---|---|
committer | Tzu-Mainn Chen <tzumainn@redhat.com> | 2020-06-15 20:56:23 +0000 |
commit | e8f6fdd56d7eccbdeba3ff3d1101a8dc6a8be72f (patch) | |
tree | 117dc641f46eb63f80d2522c9e8a7beea0118f3e /ironic/tests/unit/api/controllers/v1/test_node.py | |
parent | c717f0e49444041337133ca655296e749d2f19ad (diff) | |
download | ironic-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.py | 45 |
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() |