From f1bd417861aaa584c85db1c97818d81c1309c6af Mon Sep 17 00:00:00 2001 From: Tobias Urdin Date: Wed, 12 Mar 2025 17:03:26 +0100 Subject: [PATCH] Add device ID and device owner to port unset This adds support to unset the device_id and device_owner property on a port. Change-Id: I43b1ea63e3a119f57162948e128a85f8ba323d41 --- openstackclient/network/v2/port.py | 16 ++++++++ .../tests/unit/network/v2/test_port.py | 40 +++++++++++++++++++ ...-device-id-and-owner-9fce242155c82992.yaml | 5 +++ 3 files changed, 61 insertions(+) create mode 100644 releasenotes/notes/port-unset-device-id-and-owner-9fce242155c82992.yaml diff --git a/openstackclient/network/v2/port.py b/openstackclient/network/v2/port.py index 3579194bf7..01e2e4faa5 100644 --- a/openstackclient/network/v2/port.py +++ b/openstackclient/network/v2/port.py @@ -1317,6 +1317,18 @@ class UnsetPort(common.NeutronUnsetCommandWithExtraArgs): default=False, help=_("Clear hints for the port."), ) + parser.add_argument( + '--device', + action='store_true', + default=False, + help=_("Clear device ID for the port."), + ) + parser.add_argument( + '--device-owner', + action='store_true', + default=False, + help=_("Clear device owner for the port."), + ) _tag.add_tag_option_to_parser_for_unset(parser, _('port')) parser.add_argument( 'port', @@ -1383,6 +1395,10 @@ class UnsetPort(common.NeutronUnsetCommandWithExtraArgs): attrs['binding:host_id'] = None if parsed_args.hints: attrs['hints'] = None + if parsed_args.device: + attrs['device_id'] = '' + if parsed_args.device_owner: + attrs['device_owner'] = '' attrs.update( self._parse_extra_properties(parsed_args.extra_properties) diff --git a/openstackclient/tests/unit/network/v2/test_port.py b/openstackclient/tests/unit/network/v2/test_port.py index 3f521a42ed..d66eb1bf4e 100644 --- a/openstackclient/tests/unit/network/v2/test_port.py +++ b/openstackclient/tests/unit/network/v2/test_port.py @@ -3015,3 +3015,43 @@ class TestUnsetPort(TestPort): **{'hints': None}, ) self.assertIsNone(result) + + def test_unset_device(self): + testport = network_fakes.create_one_port() + self.network_client.find_port = mock.Mock(return_value=testport) + arglist = [ + '--device', + testport.name, + ] + verifylist = [ + ('device', True), + ('port', testport.name), + ] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + result = self.cmd.take_action(parsed_args) + + self.network_client.update_port.assert_called_once_with( + testport, + **{'device_id': ''}, + ) + self.assertIsNone(result) + + def test_unset_device_owner(self): + testport = network_fakes.create_one_port() + self.network_client.find_port = mock.Mock(return_value=testport) + arglist = [ + '--device-owner', + testport.name, + ] + verifylist = [ + ('device_owner', True), + ('port', testport.name), + ] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + result = self.cmd.take_action(parsed_args) + + self.network_client.update_port.assert_called_once_with( + testport, + **{'device_owner': ''}, + ) + self.assertIsNone(result) diff --git a/releasenotes/notes/port-unset-device-id-and-owner-9fce242155c82992.yaml b/releasenotes/notes/port-unset-device-id-and-owner-9fce242155c82992.yaml new file mode 100644 index 0000000000..e14baacdd3 --- /dev/null +++ b/releasenotes/notes/port-unset-device-id-and-owner-9fce242155c82992.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + Added ``--device`` and ``--device-owner`` parameter to the + ``port unset`` command.