Add retired and retired_reason fields to baremetal node
Recently ironic added the retired and retired_reason fields to the node definition. Adding them here as base to support marking nodes for retirement. Change-Id: I2a80c7653a3e55c89f892d0a90d8c40ea80a482b
This commit is contained in:
parent
52a1a9460c
commit
5a6395b683
@ -53,8 +53,8 @@ class Node(_common.ListMixin, resource.Resource):
|
||||
is_maintenance='maintenance',
|
||||
)
|
||||
|
||||
# The allocation_uuid field introduced in 1.52 (Stein).
|
||||
_max_microversion = '1.52'
|
||||
# The retired and retired_reason fields introduced in 1.61 (Ussuri).
|
||||
_max_microversion = '1.61'
|
||||
|
||||
# Properties
|
||||
#: The UUID of the allocation associated with this node. Added in API
|
||||
@ -107,6 +107,9 @@ class Node(_common.ListMixin, resource.Resource):
|
||||
# Whether the node is protected from undeploying. Added in API microversion
|
||||
# 1.48.
|
||||
is_protected = resource.Body("protected", type=bool)
|
||||
#: Whether the node is marked for retirement. Added in API microversion
|
||||
#: 1.61.
|
||||
is_retired = resource.Body("retired", type=bool)
|
||||
#: Any error from the most recent transaction that started but failed to
|
||||
#: finish.
|
||||
last_error = resource.Body("last_error")
|
||||
@ -133,6 +136,9 @@ class Node(_common.ListMixin, resource.Resource):
|
||||
protected_reason = resource.Body("protected_reason")
|
||||
#: The current provisioning state of the node.
|
||||
provision_state = resource.Body("provision_state")
|
||||
#: The reason why the node is marked for retirement. Added in API
|
||||
#: microversion 1.61.
|
||||
retired_reason = resource.Body("retired_reason")
|
||||
#: The current RAID configuration of the node.
|
||||
raid_config = resource.Body("raid_config")
|
||||
#: The name of an service conductor host which is holding a lock on this
|
||||
|
@ -269,6 +269,62 @@ class TestBareMetalNode(base.BaseBaremetalTest):
|
||||
self.assertTrue(node.is_maintenance)
|
||||
self.assertEqual(reason, node.maintenance_reason)
|
||||
|
||||
def test_retired(self):
|
||||
reason = "I'm too old for this s...tuff!"
|
||||
|
||||
node = self.create_node()
|
||||
|
||||
# Set retired when node state available should fail!
|
||||
self.assertRaises(
|
||||
exceptions.ConflictException,
|
||||
self.conn.baremetal.update_node, node, is_retired=True)
|
||||
|
||||
# Set node state to manageable
|
||||
self.conn.baremetal.set_node_provision_state(node, 'manage',
|
||||
wait=True)
|
||||
self.assertEqual(node.provision_state, 'manageable')
|
||||
|
||||
# Set retired without reason
|
||||
node = self.conn.baremetal.update_node(node, is_retired=True)
|
||||
self.assertTrue(node.is_retired)
|
||||
self.assertIsNone(node.retired_reason)
|
||||
|
||||
# Verify set retired on server side
|
||||
node = self.conn.baremetal.get_node(node.id)
|
||||
self.assertTrue(node.is_retired)
|
||||
self.assertIsNone(node.retired_reason)
|
||||
|
||||
# Add the reason
|
||||
node = self.conn.baremetal.update_node(node, retired_reason=reason)
|
||||
self.assertTrue(node.is_retired)
|
||||
self.assertEqual(reason, node.retired_reason)
|
||||
|
||||
# Verify the reason on server side
|
||||
node = self.conn.baremetal.get_node(node.id)
|
||||
self.assertTrue(node.is_retired)
|
||||
self.assertEqual(reason, node.retired_reason)
|
||||
|
||||
# Unset retired
|
||||
node = self.conn.baremetal.update_node(node, is_retired=False)
|
||||
self.assertFalse(node.is_retired)
|
||||
self.assertIsNone(node.retired_reason)
|
||||
|
||||
# Verify on server side
|
||||
node = self.conn.baremetal.get_node(node.id)
|
||||
self.assertFalse(node.is_retired)
|
||||
self.assertIsNone(node.retired_reason)
|
||||
|
||||
# Set retired with reason
|
||||
node = self.conn.baremetal.update_node(node, is_retired=True,
|
||||
retired_reason=reason)
|
||||
self.assertTrue(node.is_retired)
|
||||
self.assertEqual(reason, node.retired_reason)
|
||||
|
||||
# Verify on server side
|
||||
node = self.conn.baremetal.get_node(node.id)
|
||||
self.assertTrue(node.is_retired)
|
||||
self.assertEqual(reason, node.retired_reason)
|
||||
|
||||
|
||||
class TestBareMetalNodeFields(base.BaseBaremetalTest):
|
||||
|
||||
|
@ -0,0 +1,4 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
Adds ``is_retired`` and ``retired_reason`` to the baremetal Node schema.
|
Loading…
x
Reference in New Issue
Block a user