A service for managing and provisioning Bare Metal servers.
Go to file
Jim Rollenhagen 7f46a03fca Refactor driver loading to load a driver instance per node
This paves the way for composable drivers. It:

Creates a BareDriver class, which is a minimal subclass of BaseDriver,
with no interfaces attached.

Adds a method driver_factory.build_driver_for_task, that accepts a
task argument and builds an instance of BareDriver that does have
interfaces attached. These interfaces come from loading the driver in
node.driver, and attaching each of the core, standard, and vendor
interfaces to the BareDriver created. This also accepts a driver_name
argument, for loading a driver that is not the one specified in
node.driver (for example, when updating the driver for a node).
This method will eventually need to take arguments for each interface
that is broken out of the main driver singleton.

By doing this, we create a driver instance per node, instead of using
the monolithic driver singletons shared across nodes. Note that the
attached interfaces are references to the interfaces in the driver
singleton, and thus themselves still singletons. It is *which* interface
implementations are referenced that will vary by node.

This means that in the future, we can dynamically load and attach these
interfaces, with the implementation chosen being defined by a property
of the node.

This patch also does a small refactoring as to how the list of
interfaces attached to a driver are referenced, for cleanliness.

Change-Id: Ic2b2525f2abd0d252f36442097e68f73aeaec9f7
2016-03-01 23:41:06 +00:00
devstack Merge "DevStack: Add support for deploying nodes with pxe_ipmitool" 2016-02-23 12:16:52 +00:00
doc/source Update proliantutils version required for Mitaka release 2016-02-25 10:51:16 -08:00
etc Add deprecated_for_removal config info in ironic.conf.sample 2016-02-25 10:14:58 +00:00
ironic Refactor driver loading to load a driver instance per node 2016-03-01 23:41:06 +00:00
ironic_tempest_plugin Comment out test options that already exists on tempest's tree 2016-02-10 17:23:31 +00:00
releasenotes Merge "Add manual cleaning to documentation" 2016-02-25 17:05:50 +00:00
tools Merge "Show transitions initiated by API requests" 2016-02-09 10:45:14 +00:00
.gitignore Add reno for release notes management 2015-11-13 03:22:32 -08: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
.testr.conf Prepare for functional testing 2015-09-28 21:27:01 +00:00
babel.cfg Run extract_messages 2013-07-22 09:51:10 +02:00
CONTRIBUTING.rst Workflow documentation is now in infra-manual 2014-12-05 16:55:23 +01:00
driver-requirements.txt Update proliantutils version required for Mitaka release 2016-02-25 10:51:16 -08:00
LICENSE Added project infrastructure needs. 2013-05-02 14:55:43 -04:00
README.rst Slightly reword README 2015-10-19 14:23:21 +01:00
RELEASE-NOTES Add release notes for 4.0.0 2015-08-31 21:43:58 +00:00
requirements.txt Merge "Switch to Futurist library for asynchronous execution and periodic tasks" 2016-02-24 16:22:00 +00:00
setup.cfg Add ironic_tempest_plugin to the list of packages in setup.cfg 2016-02-23 16:47:38 +01:00
setup.py Updated from global requirements 2015-09-22 03:33:28 +00:00
test-requirements.txt Enable doc8 style checker for *.rst files 2016-02-02 12:38:20 +00:00
tox.ini Fix doc8's "duplicated target names" (D000) error 2016-02-03 15:22:35 +00:00
vagrant.yaml Added CORS support middleware to Ironic 2015-09-01 19:45:01 +00:00
Vagrantfile Change vagrant.yml to vagrant.yaml 2015-08-07 09:51:32 +00:00

Ironic

Ironic is an integrated OpenStack project which aims to provision bare metal machines instead of virtual machines, forked from the Nova Baremetal driver. It is best thought of as a bare metal hypervisor API and a set of plugins which interact with the bare metal hypervisors. By default, it will use PXE and IPMI together to provision and turn on/off machines, but Ironic also supports vendor-specific plugins which may implement additional functionality.

Project Resources

Project status, bugs, and blueprints are tracked on Launchpad:

http://launchpad.net/ironic

Anyone wishing to contribute to an OpenStack project should find a good reference here:

http://docs.openstack.org/infra/manual/developers.html