From 4e359baf4d99b306e83b496ffefa8bc0a9224b6a Mon Sep 17 00:00:00 2001 From: Vasyl Saienko Date: Mon, 31 Oct 2016 14:25:33 +0200 Subject: [PATCH] OSC add capability to remove node/chassis_uuid Allow to unset the field chassis_uuid from a node using the 'openstack baremetal node unset --chassis-uuid ' command. Bump last known API version to 1.25 Change-Id: Ifd82bc58667d0958fc5007b3562437b34b12a620 Related-Bug: #1563263 --- ironicclient/osc/plugin.py | 2 +- ironicclient/osc/v1/baremetal_node.py | 9 +++++++++ .../tests/unit/osc/v1/test_baremetal_node.py | 19 +++++++++++++++++++ ...-removal-possibility-5bc0bc3a7953eaa5.yaml | 5 +++++ 4 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 releasenotes/notes/add-chassis_uuid-removal-possibility-5bc0bc3a7953eaa5.yaml diff --git a/ironicclient/osc/plugin.py b/ironicclient/osc/plugin.py index 345326515..ba47d6030 100644 --- a/ironicclient/osc/plugin.py +++ b/ironicclient/osc/plugin.py @@ -25,7 +25,7 @@ LOG = logging.getLogger(__name__) API_VERSION_OPTION = 'os_baremetal_api_version' API_NAME = 'baremetal' -LAST_KNOWN_API_VERSION = 22 +LAST_KNOWN_API_VERSION = 25 API_VERSIONS = { '1.%d' % i: 'ironicclient.v1.client.Client' for i in range(1, LAST_KNOWN_API_VERSION + 1) diff --git a/ironicclient/osc/v1/baremetal_node.py b/ironicclient/osc/v1/baremetal_node.py index 3927d83e6..17520334c 100644 --- a/ironicclient/osc/v1/baremetal_node.py +++ b/ironicclient/osc/v1/baremetal_node.py @@ -1038,6 +1038,12 @@ class UnsetBaremetalNode(command.Command): help='Instance information to unset on this baremetal node ' '(repeat option to unset multiple instance informations)', ) + parser.add_argument( + "--chassis-uuid", + dest='chassis_uuid', + action='store_true', + help=_('Unset chassis UUID on this baremetal node'), + ) return parser @@ -1077,6 +1083,9 @@ class UnsetBaremetalNode(command.Command): properties.extend(utils.args_array_to_patch('remove', ['instance_info/' + x for x in parsed_args.instance_info])) + if parsed_args.chassis_uuid: + properties.extend(utils.args_array_to_patch('remove', + ['chassis_uuid'])) if properties: baremetal_client.node.update(parsed_args.node, properties) diff --git a/ironicclient/tests/unit/osc/v1/test_baremetal_node.py b/ironicclient/tests/unit/osc/v1/test_baremetal_node.py index 02d427801..a7ef88844 100644 --- a/ironicclient/tests/unit/osc/v1/test_baremetal_node.py +++ b/ironicclient/tests/unit/osc/v1/test_baremetal_node.py @@ -1651,6 +1651,25 @@ class TestBaremetalUnset(TestBaremetal): [{'path': '/name', 'op': 'remove'}] ) + def test_baremetal_unset_chassis_uuid(self): + arglist = [ + 'node_uuid', + '--chassis-uuid', + ] + verifylist = [ + ('node', 'node_uuid'), + ('chassis_uuid', True) + ] + + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + self.cmd.take_action(parsed_args) + + self.baremetal_mock.node.update.assert_called_once_with( + 'node_uuid', + [{'path': '/chassis_uuid', 'op': 'remove'}] + ) + class TestValidate(TestBaremetal): def setUp(self): diff --git a/releasenotes/notes/add-chassis_uuid-removal-possibility-5bc0bc3a7953eaa5.yaml b/releasenotes/notes/add-chassis_uuid-removal-possibility-5bc0bc3a7953eaa5.yaml new file mode 100644 index 000000000..4286bbc9e --- /dev/null +++ b/releasenotes/notes/add-chassis_uuid-removal-possibility-5bc0bc3a7953eaa5.yaml @@ -0,0 +1,5 @@ +--- +features: + - Add possibility to remove chassis_uuid for node by adding + '--chassis-uuid' argument to 'openstack baremetal node unset' + command.