Remove 'incubated' documentation theme

Ironic is no longer incubated, so let's not use the incubated HTML
documentation theme anymore.

Change-Id: I202a549125144e10a93a62b5bbdd03370f7847be
Add a call to management.validate(task)

Makes sure _send_sensor_data calls the driver validate method before
calling get_sensor_data.

Change-Id: I859ff3d315765f463a433fe3c02cb975f98972d2
Closes-Bug: 1375103
ilo* drivers to use only ilo credentials

Currently IloVirtualMediaIscsiDriver and IloVirtualMediaAgentDriver
and pxe_ilo driver uses ipmitool for console and management interfaces.
This imposes user/operator to specify ipmi credentials along with ilo
credentials (which are same) during creation of node.

This fix proposes to update the ipmi credentials on the fly by inheriting
IPMI console and Management Interface.

Change-Id: I81c1311b05bd00bb8245ceb71a140f6bdd2e7daa
Closes-bug:#1367182
Add "affinity" tracking to nodes and conductors

Add "conductor_affinity" column to nodes table, containing a reference to the
`id` of the conductor service (not its hostname) that has most recently
performed some action which could require local state to be maintained
(eg, built a PXE config, or started a SOL session).

Using the `id` as a foreign key necessitates not deleting conductors
when unregistering them, but instead marking them offline. This also
helps in determining if a conductor service was only restarted (though
this patch does not implement graceful shutdown).

Thus, this patch also adds an "online" boolean column to the conductors
table to track whether a conductor is on- or offline, and updates
the register and unregister methods to use that field transparently.
It may be noted that this does not change the behavior of
register_conductor or unregister_conductor, though an optional
"update_existing" parameter has been added to register_conductor. This
replaces a DELETE query with an UPDATE query instead.

Co-Authored-By: David Shrewsbury <shrewsbury.dave@gmail.com>
Co-Authored-By: Lucas Alvares Gomes <lucasagomes@gmail.com>

Related-bug: #1279331
Change-Id: I8e8b5cc00fc9f565ad2fb442e9a26077342e0a25
Merge "Add "affinity" tracking to nodes and conductors"
Merge "Add a call to management.validate(task)"
Open Kilo development

Bump pre-version to 2015.1 to formally open master branch to Kilo
development.

Change-Id: I02697038476e6c165b44f92b065a9d0b410f78a7
Add periodic task to rebuild conductor local state

This adds a periodic task which can rebuild the conductor's local state
(PXE config files, etc) when conductors join or leave the cluster.

For any node which is newly mapped to the conductor, this will
trigger calling prepare() and take_over() on that node's deploy
interface.

This uses the periodic_max_worker setting like other periodic jobs,
starting the take over process in separate threads. Thus, in a large
cluster, it may take some time for all nodes to settle down.
It also adds a new CONF option to control the timing of this job.

There is a lot of room for improvement and optimization in this, however
getting a fix in place is critical to the Juno release.

NOTE: This does not re-establish any console sessions.

Co-Authored-By: Lucas Alvares Gomes <lucasagomes@gmail.com>
Change-Id: I0dbe9a5a98ec5fd0c69f32d7590d8141da5a23c2
Closes-bug: #1279331
Make hash ring mapping be more consistent

Nejc Saje reported on the openstack-dev list that our hash ring was not
stable as hosts were added or removed. This is a significant issue since
the hash ring is meant to minimize the impact of adding or removing
conductors to only approximately the change in capacity.

IMPORTANT: When this patch is added to a running Ironic environment it
will cause ring calculations to change. This will cause most existing
node -> conductor mappings to be invalid, which will cause existing
deployed nodes to be unable to reboot (if using a netbooting driver like
pxe_ipmi). The cluster will self-correct over time as the periodic task
_sync_hash_ring() rebuilds PXE environments.

NOTE: The meaning of the hash_partition_exponent configuration setting
had to be changed - if we define the total number of partitions of the
ring via it then adding a host simultaneously removes some partitions of
each existing host as well as adding new partitions from the new host -
this results in more perturbation. Instead we use it to define the
number of partitions per host. Existing deployments will continue to
work, but may be able to reduce some CPU overhead by shrinking their
setting.

Change-Id: Iad3c9f6b460e9162ca91d5719e42f7950f2f18df
Closes-Bug: #1365334
DocImpact: See above.
UpgradeImpact: See above.
Merge "ilo* drivers to use only ilo credentials"
Merge "Open Kilo development"
Remove kombu as a dependency for Ironic

It was required before oslo.messaging now kombu is not used anymore in
our code database.

Change-Id: If9c52c4fce52b913e404cd41a81d187986041df0
Merge "Remove 'incubated' documentation theme"
Cleans up some Sphinx rST warnings in Ironic

The names of parameters in docstrings should not have leading astrisk
characters, because it confuses the rST parser.

Change-Id: I8c3574b03903a23c10ef2afcb793c6766a486007
Partial-Bug: 1277282
Validate the power interface before deployment

This patch makes the do_node_deploy() validate the drivers power interface
before start deploying a node because powering the node on/off is part
of the deployment.

Change-Id: Ic52c49ac6c8631f81eb50b69a5bdb56a113a72b4
Closes-Bug: #1378301
Merge "Validate the power interface before deployment"
KeyError from AgentVendorInterface._heartbeat()

A KeyError exception could be raised in AgentVendorInterface._heartbeat()
if kwargs['agent_url'] doesn't exist. It *should* always exist, but just
in case, reraising a MissingParameterValue exception with a more specific
msg would be helpful in debugging.

Change-Id: I5e7971e7e8062d7917cc34eb9e0178778ed5035a
Closes-Bug: #1378440
Move database fixture to a separate test case

This change moves database fixture from ironic.tests.base.TestCase to
ironic.tests.db.base.DbTestCase and adds dbapi field there. Also it
adds ironic admin context to ironic.tests.base.TestCase, as context
may be used without db fixture.

Closes-bug: #1376285

Change-Id: I008e44da315767afb6282000a01f0b39698f9768
Clear hash ring cache in get_topic_for*

This causes the hash ring to be reset on each API request, avoiding
an issue where a new conductor never joins the ring until the API
service is restarted.

Closes-Bug: 1378570

Change-Id: Ic57370163f2f833efab662837036298f29f4ca90
Imported Translations from Transifex

Change-Id: I4ea4f5bec76e16c3287795ec21f112a29240c292