This blueprint introduces a new state called enroll, which we previously agreed to introduce in the new state machine spec.
Currently nodes on creation are put into available state, which is designed as a replacement for NOSTATE. Such nodes will instantly be available to Nova for deployment, provided they have all the required properties.
However, the new state machine lets the operator perform inspection on a node and zapping of a node. The state machine allows for them to be done before a node reaches the available state.
Even worse, the cleaning feature introduced in Kilo cycle should also happen before a node becomes available.
Add a new state enroll, from which a node can transition into the manageable state by an action called manage.
manage transition will cause power and management interfaces to be validated on the node. Also an attempt will be made to get the power state on a node to actually verify the supplied power credentials.
On success, the node will go to the manageable state. On failure, it will go back to the enroll state and last_error will be set.
Disable the sync_power_state for nodes in the enroll state, as nodes in this state are not expected to have valid power credentials.
Introduce a new API microversion, making newly created nodes appear in the enroll state instead of the available state.
After that the client-server interaction will be the following:
Document that we are going to make a breaking move to the enroll state by default.
Update DevStack gate to explicitly request the new microversion and fix the tests.
Release a new version of ironicclient defaulting to this new microversion. Clearly document this breaking change in upgrade notes.
We can ask people to manually move nodes to the manageable state before inspection or zapping. We also won’t validate power and management interfaces.
No functionality impact expected.
With the new microversion, nodes will appear in the enroll state. Two more steps should be taken to make them available for deploy: manage and provide. Cleaning will happen, if enabled.