From a10c3e39236d12f20f580ee108b6fbd7c03db848 Mon Sep 17 00:00:00 2001 From: Kaifeng Wang Date: Mon, 15 Jul 2024 18:44:50 +0800 Subject: [PATCH] Fix port create ignores the name field The newly added name argument support is not processed so that create a port with name does not take effect. Also amend a few unit tests. Change-Id: I8c05cd03557c01dfe83e0875ad653ff53d7dee42 --- ironicclient/osc/v1/baremetal_port.py | 2 +- .../tests/unit/osc/v1/test_baremetal_port.py | 55 +++++++++++++++++++ ...reate-with-port-name-9b3829405736a3c3.yaml | 4 ++ 3 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 releasenotes/notes/fix-create-with-port-name-9b3829405736a3c3.yaml diff --git a/ironicclient/osc/v1/baremetal_port.py b/ironicclient/osc/v1/baremetal_port.py index bd79eb18e..d6fc424a1 100644 --- a/ironicclient/osc/v1/baremetal_port.py +++ b/ironicclient/osc/v1/baremetal_port.py @@ -132,7 +132,7 @@ class CreateBaremetalPort(command.ShowOne): field_list = ['address', 'uuid', 'extra', 'node_uuid', 'pxe_enabled', 'local_link_connection', 'portgroup_uuid', - 'physical_network'] + 'physical_network', 'name'] fields = dict((k, v) for (k, v) in vars(parsed_args).items() if k in field_list and v is not None) fields = utils.args_array_to_dict(fields, 'extra') diff --git a/ironicclient/tests/unit/osc/v1/test_baremetal_port.py b/ironicclient/tests/unit/osc/v1/test_baremetal_port.py index 6140ec3c3..7c1504a76 100644 --- a/ironicclient/tests/unit/osc/v1/test_baremetal_port.py +++ b/ironicclient/tests/unit/osc/v1/test_baremetal_port.py @@ -272,6 +272,33 @@ class TestCreateBaremetalPort(TestBaremetalPort): 'is_smartnic': True} self.baremetal_mock.port.create.assert_called_once_with(**args) + def test_baremetal_port_create_name(self): + arglist = [ + baremetal_fakes.baremetal_port_address, + '--node', baremetal_fakes.baremetal_uuid, + '--name', 'portname1' + ] + + verifylist = [ + ('node_uuid', baremetal_fakes.baremetal_uuid), + ('address', baremetal_fakes.baremetal_port_address), + ('name', 'portname1') + ] + + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + # DisplayCommandBase.take_action() returns two tuples + self.cmd.take_action(parsed_args) + + # Set expected values + args = { + 'address': baremetal_fakes.baremetal_port_address, + 'node_uuid': baremetal_fakes.baremetal_uuid, + 'name': 'portname1' + } + + self.baremetal_mock.port.create.assert_called_once_with(**args) + class TestShowBaremetalPort(TestBaremetalPort): def setUp(self): @@ -427,6 +454,18 @@ class TestBaremetalPortUnset(TestBaremetalPort): 'port', [{'path': '/is_smartnic', 'op': 'add', 'value': 'False'}]) + def test_baremetal_port_unset_name(self): + arglist = ['port', '--name'] + verifylist = [('port', 'port'), + ('name', True)] + + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + self.cmd.take_action(parsed_args) + self.baremetal_mock.port.update.assert_called_once_with( + 'port', + [{'path': '/name', 'op': 'remove'}]) + class TestBaremetalPortSet(TestBaremetalPort): def setUp(self): @@ -595,6 +634,22 @@ class TestBaremetalPortSet(TestBaremetalPort): [{'path': '/is_smartnic', 'value': 'True', 'op': 'add'}]) + def test_baremetal_port_set_name(self): + arglist = [ + baremetal_fakes.baremetal_port_uuid, + '--name', 'portname2'] + verifylist = [ + ('port', baremetal_fakes.baremetal_port_uuid), + ('name', 'portname2')] + + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + self.cmd.take_action(parsed_args) + self.baremetal_mock.port.update.assert_called_once_with( + baremetal_fakes.baremetal_port_uuid, + [{'path': '/name', 'value': 'portname2', + 'op': 'add'}]) + class TestBaremetalPortDelete(TestBaremetalPort): def setUp(self): diff --git a/releasenotes/notes/fix-create-with-port-name-9b3829405736a3c3.yaml b/releasenotes/notes/fix-create-with-port-name-9b3829405736a3c3.yaml new file mode 100644 index 000000000..12e455681 --- /dev/null +++ b/releasenotes/notes/fix-create-with-port-name-9b3829405736a3c3.yaml @@ -0,0 +1,4 @@ +--- +fixes: + - | + Fixes the issue that create port with name does not take effect.