tests for node description
Adds API tests for node description to verify the its availability,
set and unset.
Change-Id: Id3f129a3b7c32d7d95cdf3bb1d2f5d309da21813
Story: 2003089
Task: 23178
diff --git a/ironic_tempest_plugin/services/baremetal/v1/json/baremetal_client.py b/ironic_tempest_plugin/services/baremetal/v1/json/baremetal_client.py
index e6c02b2..43c2af6 100644
--- a/ironic_tempest_plugin/services/baremetal/v1/json/baremetal_client.py
+++ b/ironic_tempest_plugin/services/baremetal/v1/json/baremetal_client.py
@@ -248,7 +248,7 @@
"""
node = {}
- for field in ('resource_class', 'name'):
+ for field in ('resource_class', 'name', 'description'):
if kwargs.get(field):
node[field] = kwargs[field]
@@ -475,7 +475,8 @@
'protected_reason',
# TODO(dtantsur): maintenance is set differently
# in newer API versions.
- 'maintenance')
+ 'maintenance',
+ 'description')
if not patch:
patch = self._make_patch(node_attributes, **kwargs)
diff --git a/ironic_tempest_plugin/tests/api/admin/test_nodes.py b/ironic_tempest_plugin/tests/api/admin/test_nodes.py
index 31a9d61..2709905 100644
--- a/ironic_tempest_plugin/tests/api/admin/test_nodes.py
+++ b/ironic_tempest_plugin/tests/api/admin/test_nodes.py
@@ -175,6 +175,11 @@
_, loaded_node = self.client.show_node(self.node['uuid'])
self.assertNotIn('conductor', loaded_node)
+ @decorators.idempotent_id('5e7f4c54-8216-42d3-83cc-7bd776ffd16f')
+ def test_description_hidden(self):
+ _, loaded_node = self.client.show_node(self.node['uuid'])
+ self.assertNotIn('description', loaded_node)
+
class TestNodesResourceClass(base.BaseBaremetalTest):
@@ -975,3 +980,35 @@
_, nodes = self.client.list_nodes(conductor=hostname)
self.assertIn(self.node['uuid'],
[n['uuid'] for n in nodes['nodes']])
+
+
+class TestNodeDescription(base.BaseBaremetalTest):
+ """Tests for the description field."""
+
+ min_microversion = '1.51'
+
+ def setUp(self):
+ super(TestNodeDescription, self).setUp()
+
+ _, self.chassis = self.create_chassis()
+ _, self.node = self.create_node(self.chassis['uuid'])
+
+ @decorators.idempotent_id('66d0da49-e5ac-4f49-b065-9d2207d8a3af')
+ def test_description_exposed(self):
+ _, loaded_node = self.client.show_node(self.node['uuid'])
+ self.assertIn('description', loaded_node)
+
+ @decorators.idempotent_id('85b4a4b5-37e5-4b60-8dc7-f5a26dfa78a3')
+ def test_node_description_set_unset(self):
+ self.client.update_node(self.node['uuid'], description='meow')
+ _, self.node = self.client.show_node(self.node['uuid'])
+ self.assertEqual('meow', self.node['description'])
+
+ self.client.update_node(self.node['uuid'], description=None)
+ _, self.node = self.client.show_node(self.node['uuid'])
+ self.assertIsNone(self.node['description'])
+
+ @decorators.idempotent_id('3d649bb3-a58b-4b9e-8dfa-41ab634b1153')
+ def test_create_node_with_description(self):
+ _, body = self.create_node(self.chassis['uuid'], description='meow')
+ self.assertEqual('meow', body['description'])