5.7 KiB
Add Inspect Wait State
https://bugs.launchpad.net/ironic/+bug/1725211
The spec proposes adding a new inspect wait
state to
ironic state machine.
Problem description
The in-band inspection is an asynchronous process1 that isn't currently handled through a "waiting" state. This is a discrepancy from the rest of the asynchronous ironic states and may comprise a problem for future features such as aborting the introspection2 or merging ironic and ironic-inspector3;
Proposed change
Let's therefore have a new passive state in the
ironic state machine, the inspect wait
state.
For asynchronous inspection like ironic inspector driver, ironic
conductor will move node from manageable
to
inspecting
state when an inspect request is issued, then
the ironic conductor moves node to inspect wait
state if
InspectInterface.inspect_hardware
returns
INSPECTING
or INSPECTWAIT
. The behavior of
returning INSPECTING
will be deprecated and logged as a
warning. After deprecation period, returning INSPECTING
will cause node be moved to inspect failed
state.
Add a new option [conductor]inspect_wait_timeout
to
guard the inspect wait
state, the default value is 1800
seconds as same as [conductor]inspect_timeout
. If the
hardware inspection is timed out in the state of
inspect wait
, node will be moved from
inspect wait
to inspect failed
.
The existing [conductor]inspect_timeout
will be
deprecated.
The inspect wait
state will be set as an allowed state
when updating ironic node, port and portgroup.
As ironic-inspector checks node provision state before starting
inspection, the inspect wait
state needs to be added to
ironic-inspector as a valid state.
Alternatives
There are no alternatives to this feature.
Data model impact
None
State Machine Impact
A new unstable state inspect wait
will be added to
ironic state machine.
Following state transitions will be added:
inspecting
toinspect wait
with eventwait
.inspect wait
toinspect failed
with eventfail
.inspect wait
tomanageable
with eventdone
.
REST API impact
API microversion will be bumped to hide the new
inspect wait
state to clients with older microversion, this
will be done in the update_state_in_older_versions
.
Node related API endpoints will be affected:
- POST /v1/nodes
- GET /v1/nodes
- GET /v1/nodes/detail
- GET /v1/nodes/{node_ident}
- PATCH /v1/nodes/{node_ident}
For clients with older microversion, the provision state of
inspect wait
will be changed to inspecting
,
there is no other impact to API behaviors.
Client (CLI) impact
As the compatibility is handled at ironic API, CLI is not affected.
"ironic" CLI
None
"openstack baremetal" CLI
None
RPC API impact
None
Driver API impact
None
Nova driver impact
None
Ramdisk impact
None
Security impact
None
Other end user impact
None
Scalability impact
None
Performance Impact
None
Other deployer impact
Add a new option [conductor]inspect_wait_timeout
to
guard timeout of state inspecting
, defaults to 1800
seconds.
Developer impact
This feature has no impact on synchronous inspection, that includes most of OOB drivers. For in-band inspection, the new state has to be considered.
After this spec is implemented, drivers based on asynchronous inspection have to be changed accordingly, that includes in-band inspection and out-of-band inspection (if there is any).
OneViewInspect
in the tree is implemented based on
ironic inspector interface, its state transition from
inspecting
to inspect wait
is handled by
ironic inspector, but inspect wait
state needs to be added
to status checking.
Implementation
Assignee(s)
- Primary assignee:
-
kaifeng
- Other contributors:
-
vetrisko
Work Items
- Add
inspect wait
state and state transitions to ironic state machine. - Apply state change in the
_check_status
of ironic inspector andOneViewInspect
driver. - Add new option
inspect_wait_timeout
, and deprecateinspect_timeout
. - Handle timeout of state
inspect wait
in the conductor periodic task_check_inspect_timeouts
, allow updating node, port and portgroup when node is in theinspect wait
state. - Handle API microversion compatibility.
- Add
inspect wait
to ironic-inspector as a valid state. - Update documents, see Documentation Impact for details.
Dependencies
None
Testing
Unit tests will be added, API change will be covered by tempest tests.
Upgrades and Backwards Compatibility
The API backwards compatibility is guarded by microvision.
Documentation Impact
The state diagram will be automatically generated from source. Update
ironic states document to address the new state, and the semantic change
of current inspecting
state.