A service for managing and provisioning Bare Metal servers.
Go to file
Dmitry Tantsur 5471157e4f Fixes a race condition in the hash ring code
The current hash ring code suffers from several problems:

1. The cache is reset on any get_topic_for call, which means that the
   cache is not used between API calls. Previously it was done to work
   around the situation when a new conductor is not visible until the API
   process restarts. Currently we refresh the hash rings periodically.

   This patch removes resetting the cache. To avoid waiting 2 minutes to
   be able to use a new driver:
   1) the hash ring cache is always rebuilt when a ring is not found,
   2) the hash_ring_reset_interval option was changed to 15 seconds.

2. The reset of the cache races with the hot path in the get_ring call.
   It is possible that the reset happens after the class-level cache
   variable is checked but before it is used, yielding None.

   This patch stores the value of the class-level variable to a local
   variable before checking, thus ensuring None is never returned.

Finally, some logging was added to the modified code to make this kind
of problems more debugable in the future.

Change-Id: I6e18c6ec23a053b59c76fcadd52b13d84d81b4fb
Story: #2003966
Task: #26896
Partial-Bug: #1792872
2018-10-05 07:36:30 -04:00
api-ref Add documentation for BIOS settings 2018-07-27 13:23:37 +02:00
devstack Switch grenade nic driver to e1000 2018-09-24 15:50:19 +01:00
doc Merge "Add admin documentation for rescue mode in iLO driver" 2018-10-01 15:58:21 +00:00
etc Remove sample policy and config files 2018-02-02 11:21:29 +00:00
ironic Fixes a race condition in the hash ring code 2018-10-05 07:36:30 -04:00
playbooks Merge "Switch ironic-tempest-dsvm-functional-python2 to zuulv3" 2018-10-01 15:20:52 +00:00
releasenotes Fixes a race condition in the hash ring code 2018-10-05 07:36:30 -04:00
tools Remove tox checkconfig 2018-09-29 15:09:12 +08:00
zuul.d Merge "Switch ironic-tempest-dsvm-functional-python2 to zuulv3" 2018-10-01 15:20:52 +00:00
.gitignore Migrate to stestr as unit tests runner 2017-09-22 08:56:34 +00:00
.gitreview Added project infrastructure needs. 2013-05-02 14:55:43 -04:00
.mailmap Update mailmap for Joe Gordon 2013-10-28 10:19:15 +00:00
.stestr.conf Migrate to stestr as unit tests runner 2017-09-22 08:56:34 +00:00
babel.cfg Run extract_messages 2013-07-22 09:51:10 +02:00
bindep.txt change python-libguestfs to python-guestfs for ubuntu 2018-03-12 03:32:11 +00:00
CONTRIBUTING.rst Update Launchpad references to Storyboard 2018-04-09 12:37:14 -07:00
driver-requirements.txt Fix async keyword for Python 3.7 2018-09-05 16:18:35 +02:00
LICENSE Added project infrastructure needs. 2013-05-02 14:55:43 -04:00
lower-constraints.txt Pass prep_boot_part_uuid to install_bootloader for ppc64* partition images 2018-07-31 19:52:29 +00:00
README.rst Correct headings in README.rst 2018-09-27 13:51:54 +02:00
requirements.txt Pass prep_boot_part_uuid to install_bootloader for ppc64* partition images 2018-07-31 19:52:29 +00:00
setup.cfg Add "noop" management and use it in the "ipmi" hardware type 2018-08-07 13:25:50 +00:00
setup.py Updated from global requirements 2017-03-02 11:45:27 +00:00
test-requirements.txt Fix stestr has no lower bound in test-requirements 2018-06-18 09:23:02 +07:00
tox.ini Remove tox checkconfig 2018-09-29 15:09:12 +08:00
vagrant.yaml Merge "Update the documentation links - code comments" 2017-08-15 14:48:41 +00:00
Vagrantfile Change vagrant.yml to vagrant.yaml 2015-08-07 09:51:32 +00:00

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