![Jim Rollenhagen](/assets/img/avatar_default.png)
If the fsm is advanced while a task is holding a shared lock, and then the task upgrades the lock to an exclusive lock, the fsm object for the task still is in the old state. If the now-exclusive lock attempts to (correctly)advance the state machine, it may explode, thinking it's in the old state and the transition is invalid. Use a getter/setter for self.node in the TaskManager object, so that whenever we set a node object (like we do when upgrading a lock), the fsm will be re-initialized and in sync with reality. The task manager also still has a crutch for nodes in the NOSTATE provision_state, for compatibility with Juno, which was to be removed in Kilo, but nobody did. Instead of moving this crutch into the setter as well, we remove it (and its unit test) here. We also update the unit test nodes to use provision_state AVAILABLE by default, as around 1000 unit tests use the default and begin failing in the task manager if the default is NOSTATE. Last, we remove NOSTATE from states.ALLOWED_DELETE_STATES, as we should never have a node in NOSTATE by now, and deleting the crutch causes the test for this attribute to fail. Change-Id: I0a0277742d512a8ad6e41f25d1c04c13fcf8d6a2 Closes-Bug: #1619232
Ironic
Ironic consists of an API and plug-ins for managing and provisioning physical machines in a security-aware and fault-tolerant manner. It can be used with nova as a hypervisor driver, or standalone service using bifrost. By default, it will use PXE and IPMI to interact with bare metal machines. Ironic also supports vendor-specific plug-ins which may implement additional functionality.
Ironic is distributed under the terms of the Apache License, Version 2.0. The full terms and conditions of this license are detailed in the LICENSE file.
Project resources
- Documentation: http://docs.openstack.org/developer/ironic
- Source: http://git.openstack.org/cgit/openstack/ironic
- Bugs: http://bugs.launchpad.net/ironic
- Wiki: https://wiki.openstack.org/wiki/Ironic
- APIs: http://developer.openstack.org/api-ref/baremetal/index.html
Project status, bugs, and requests for feature enhancements (RFEs) are tracked on Launchpad: http://launchpad.net/ironic
For information on how to contribute to ironic, see http://docs.openstack.org/developer/ironic/dev/code-contribution-guide.html