A service for managing and provisioning Bare Metal servers.
Go to file
Julia Kreger 062872bce0 Remove locks before RPC bus is started
A partner performing some testing recognized a case where if a request
is sent to the Ironic Conductor while it is in the process of starting,
and the request makes it into be processed, yet latter the operation
fails with errors such as NodeNotLocked exception. Notably they were
able to reproduce this by requesting the attachment or detachment of
a VIF at the same time as restarting the conductor.

In part, this condition is due to to the conductor being restarted
where the conductors table includes the node being restarted and
the webserver has not possibly had a chance to observe that the
conductor is in the process of restarting as the hash ring is
still valid.

In short - Incoming RPC requests can come in during the initialization
window and as such we should not remove locks while the conductor could
possibly already be receiving work.

As such, we've added a ``prepare_host`` method which initializes
the conductor database connection and removes the stale locks.
Under normal operating conditions, the database client is reused.

rhbz# 1847305

Change-Id: I8e759168f1dc81cdcf430f3e33be990731595ec3
(cherry picked from commit b8e4aba1ec)
2020-07-29 17:33:06 +00:00
api-ref Add node lessee field 2020-04-07 15:33:42 +00:00
devstack Force RAX hosts to run tinyipa 2020-07-24 17:31:02 +00:00
doc fix error word confiuration to configuration in docs 2020-07-09 04:01:36 -04:00
etc Drop rootwrap.d/ironic-lib.filters file 2020-03-16 23:05:36 +01:00
ironic Remove locks before RPC bus is started 2020-07-29 17:33:06 +00:00
playbooks Native zuulv3 grenade job for ironic 2020-05-10 17:13:33 +00:00
releasenotes Remove locks before RPC bus is started 2020-07-29 17:33:06 +00:00
tools Stop using md5 for __repr__ of objects 2020-07-09 16:04:20 +00:00
zuul.d Stop running test_schedule_to_all_nodes in the multinode job 2020-07-21 16:51:21 +02:00
.gitignore Migrate to stestr as unit tests runner 2017-09-22 08:56:34 +00:00
.gitreview Update .gitreview for stable/ussuri 2020-04-30 09:19:08 +00:00
.mailmap Add my new address to .mailmap 2020-04-13 07:29:37 -07:00
.stestr.conf Migrate to stestr as unit tests runner 2017-09-22 08:56:34 +00:00
CONTRIBUTING.rst Project Contributing updates for Goal 2020-02-20 02:01:21 +00:00
LICENSE Added project infrastructure needs. 2013-05-02 14:55:43 -04:00
README.rst Add ironic-specs link to readme.rst 2019-08-30 17:16:09 +08:00
babel.cfg Run extract_messages 2013-07-22 09:51:10 +02:00
bindep.txt Add librsvg2* to bindep 2019-12-23 17:04:00 +05:30
driver-requirements.txt Pin the python-ibmcclient upper bounds due to six usage 2020-05-15 14:26:15 +02:00
lower-constraints.txt Merge "Stop configuring install_command in tox." 2020-04-27 22:14:01 +00:00
reno.yaml tell reno to ignore the kilo branch 2020-02-07 16:42:15 -05:00
requirements.txt Stop configuring install_command in tox. 2020-04-21 12:52:07 +02:00
setup.cfg Merge "Implement the bios-interface for idrac-wsman driver" 2020-04-24 10:25:37 +00:00
setup.py Cleanup Python 2.7 support 2020-04-03 17:49:23 +02:00
test-requirements.txt Pin the python-ibmcclient upper bounds due to six usage 2020-05-15 14:26:15 +02:00
tox.ini Fix pep8 2020-05-13 11:40:16 +02:00

README.rst

Ironic

Team and repository tags

image

Overview

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 in StoryBoard: https://storyboard.openstack.org/#!/project/943

For information on how to contribute to ironic, see https://docs.openstack.org/ironic/latest/contributor