Jim Rollenhagen 88fc516678 Refresh fsm in task when a shared lock is upgraded
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
2016-09-01 14:10:12 +00:00
2016-08-30 14:16:52 +00:00
2013-05-02 14:55:43 -04:00
2013-10-28 10:19:15 +00:00
2015-09-28 21:27:01 +00:00
2013-07-22 09:51:10 +02:00
2013-05-02 14:55:43 -04:00
2016-08-23 12:49:04 -07:00
2015-08-31 21:43:58 +00:00
2015-09-22 03:33:28 +00:00
2015-08-07 09:51:32 +00:00

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

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

Description
A service for managing and provisioning Bare Metal servers.
Readme 304 MiB
Languages
Python 98.1%
Shell 1.9%