From ba06bee63795963f9a0f3ddbc9fa07dd85788832 Mon Sep 17 00:00:00 2001 From: Kaifeng Wang Date: Mon, 20 May 2024 22:04:26 +0800 Subject: [PATCH] Support traits configuration on baremetal create CLI Allow traits to be specified and applied to the nodes to be created. Closes-Bug: #2065129 Change-Id: Idcfa489dcfe8061b99182cea8c9b96f827e4be74 --- ironicclient/tests/unit/v1/test_create_resources.py | 11 +++++++++++ ironicclient/v1/create_resources.py | 3 +++ .../traits-for-baremetal-create-36af46998feca011.yaml | 5 +++++ 3 files changed, 19 insertions(+) create mode 100644 releasenotes/notes/traits-for-baremetal-create-36af46998feca011.yaml diff --git a/ironicclient/tests/unit/v1/test_create_resources.py b/ironicclient/tests/unit/v1/test_create_resources.py index e1b6fab4c..f166b3129 100644 --- a/ironicclient/tests/unit/v1/test_create_resources.py +++ b/ironicclient/tests/unit/v1/test_create_resources.py @@ -255,6 +255,17 @@ class CreateMethodsTest(utils.BaseTestCase): ) self.client.node.create.assert_called_once_with(driver='fake') + def test_create_single_node_with_traits(self): + params = {'driver': 'fake', 'traits': ['CUSTOM_PERFORMANCE']} + self.client.node.create.return_value = mock.Mock(uuid='uuid') + self.assertEqual( + ('uuid', None), + create_resources.create_single_node(self.client, **params) + ) + self.client.node.create.assert_called_once_with(driver='fake') + self.client.node.set_traits.assert_called_once_with( + mock.ANY, ['CUSTOM_PERFORMANCE']) + def test_create_single_node_with_ports(self): params = {'driver': 'fake', 'ports': ['some ports here']} self.client.node.create.return_value = mock.Mock(uuid='uuid') diff --git a/ironicclient/v1/create_resources.py b/ironicclient/v1/create_resources.py index 75f6f0554..07a011941 100644 --- a/ironicclient/v1/create_resources.py +++ b/ironicclient/v1/create_resources.py @@ -150,7 +150,10 @@ def create_single_node(client, **params): """ params.pop('ports', None) params.pop('portgroups', None) + traits = params.pop('traits', None) ret = client.node.create(**params) + if traits: + client.node.set_traits(ret.uuid, traits) return ret.uuid diff --git a/releasenotes/notes/traits-for-baremetal-create-36af46998feca011.yaml b/releasenotes/notes/traits-for-baremetal-create-36af46998feca011.yaml new file mode 100644 index 000000000..6f9e3f35b --- /dev/null +++ b/releasenotes/notes/traits-for-baremetal-create-36af46998feca011.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + Traits can be specified and applied for nodes to be created + with the ``openstack baremetal create`` command.