Rolling upgrades works so this removes the warning from the
help for the [default]/pin_release_version config option.
Change-Id: I0ba440a4136267e676370377394cee534505fdcd
Partial-Bug: #1502887
This change addresses review feedback from change
I55229f0ab37e657b7668dd4fe402fe6b5a6cda40 in the release
note, as well as the parameter text. Accordingly, the sample
configuration has been updated.
Change-Id: Ieea574f1bcc9b6c663aeb8d89475c1dd8cf6964d
Addition of storage interface attachment and detachment
operations when:
* Node power is turned on/off, with a storage_interface
configured, and when the node is in ACTIVE state.
* Node deployment and node tear_down operations.
In addition to attachment and detachment, driver_internal_info
is now populated with a boot from volume target uuid, if a
volume is defined for the node.
Additionally, upon tear_down, the drivers now call a helper
to remove storage related dictionaries and destroy
volume target records.
The "cinder" storage interface has been enabled by default,
and further details on the storage interface's use are in
later patchsets for this feature.
Authored-By: Julia Kreger <juliaashleykreger@gmail.com>
Co-Authored-By: Joanna Taryma <joanna.taryma@intel.com>
Co-Authored-By: Michael Turek <mjturek@linux.vnet.ibm.com>
Change-Id: I0e22312e8cebb37b8f025da2baeca8eb635f35b7
Partial-Bug: #1559691
This extends versioned objects and uses the object's
convert_to_version() to perform conversions between different
versions of the object. This conversion is only done at the
"boundaries" of the api and conductor services. That is, when
reading/writing to the database and when serializing/deserializing
(for RPC). Internally, the services deal with the latest versions
of the objects.
Version column is introduced to make sure reading the DB object
versions happens transparently for the developer. An exception
is raised in case of a version compatibility error.
The version column is null at first and will be filled with the
appropriate versions by a data migration script in a following patch.
Change-Id: I34629a5cbab7ff3f246ea19c0cb766badc7061db
Partial-Bug: #1526283
Co-Authored-By: Ruby Loo <ruby.loo@intel.com>
To create a boot ISO for netboot with virtual media boot, ldlinux.c32
is required for syslinux 5.00 or later. This patch copies ldlinux.c32
in building ISO from general paths by default. A new configuration
parameter [DEFAULT]/ldlinux_c32 is added for another distribution
or feature changes.
Change-Id: I55229f0ab37e657b7668dd4fe402fe6b5a6cda40
Closes-Bug: #1694645
oslo.config 4.0 will check overridden value type by default[1],
which exposes a couple issues in Ironic:
- default_storage_interface is defined as ListOpt, when it should be
StrOpt.
- test_get_client_with_endpoint_override sets an invalid url for config
option url, which fails when checked by oslo.config.
[1] https://review.openstack.org/#/c/328692
Change-Id: Id166da73a41c8c46d9f3e239579d0cafb93bf69f
Closes-Bug: #1517839
Adds a warning to pin_release_version config to indicate that it
isn't being used yet since the rolling upgrades work isn't complete.
Also includes updates as a followup to
9bc06783ec, including adding a
release mapping for ironic version 8.0.
Change-Id: I2145f76a6802e8116b9ee2c1e23a88322b1bdeac
To support rolling upgrades, capping of RPC communication and Ironic
objects is required. Old RPC services and objects may still be running
while an upgrade is in progress. This makes sure that these old
services are called and all objects are used in a supported RPC and
objects version.
This patch adds the configuration option "pin_release_version". Setting
this option caps (downgrades) the internal RPC communication to the
specified version to enable communication with older services. When
doing a rolling upgrade from version X to Y, set this to X. It defaults
to using the newest (current) possible RPC behavior and object versions.
Change-Id: Ie2342d4051f85392a8b10d39ebffc287da57bf2b
Partial-Bug: #1526283
Co-Authored-By: Szymon Borkowski <szymon.borkowski@intel.com>
Co-Authored-By: Ruby Loo <ruby.loo@intel.com>
This adds additional constraints to the help messages for the
enabled_*_interfaces config options. It also checks if they are
empty at conductor startup, and if any are empty, errors out
with a better error message than previously provided.
Change-Id: I97fc318ce00291d5e43b70423930981c2f5a2de0
Partial-Bug: #1524745
Created a new Python module ironic.drivers.ipmi to contain all
supported IPMI-related drivers (both new and old).
Backward compatible aliases are left at old locations.
Change-Id: I526b8505d08b25b668af76d3fcd8f2feab31e420
Partial-Bug: #1524745
This registers the intersection of supported and enabled interfaces for
each hardware type enabled in the conductor at conductor startup, and
unregisters them at conductor shutdown. Validation is left as a todo for
now.
Change-Id: I14e88bfc304de9414de008d1cc8568dda9115ecc
Partial-Bug: #1524745
The description for the hash_partition_exponent configuration had dubious
grammar. A sentance has been reworded.
Change-Id: I161183f5974686e7c92f92697b61c58fb6f77a26
Closes-Bug: 1490406
In order to properly support booting and maintenance of
systems that boot from a remote storage device, we need an
interface to associate the driver with.
This commit adds a basic storage_interface and noop and fake
interfaces along with the appropriate handling for configuration
in the event that the driver list is blank, or is missing the
noop driver.
Co-Authored-By: Stephane Miller <stephane@alum.mit.edu>
Change-Id: Ib21eda88f207f18675c8580cd7fd37eab6fd70bf
Partial-Bug: #1559691
This change adds ironic.drivers.generic.GenericHardware which contains
useful defaults. Other hardware types are recommended to derive from it.
Add reasonable vendor-independent defaults to enabled_{deploy,raid,boot}_interfaces
configuration options. Add an entry point for "inspector" inspect implementation.
Also adding ironic.drivers.generic.ManualManagementHardware. This hardware
type is mostly introduced to make unit testing of GenericHardware possible.
However, it also has a potential use case: hardware not covered by
an existing driver or when an existing driver misbehaves. I personally
know people using fake_pxe currently in production for such use cases.
Change-Id: I328191524eb71c2ef51fec02c9cb28087dcf663b
Partial-Bug: #1524745
This change adds mode and properties fields into portgroup object
and adds a new API microversion to work with them.
It also makes portgroups' address field optional for all API
microversions.
Partial-Bug: #1618754
Change-Id: Id8c62fa56908040b0df16cc54c122ce2473a4587
This change introduces a new module ironic.drivers.hardware_types
with AbstractHardwareType class. It also updates driver_factory
code to support loading hardware types and creating dynamic drivers.
Interfaces validation code extended to cover hardware types.
This change also introduces the FakeHardware class for testing.
It is special-cased to bypass compatibility validation completely.
No hardware types are loaded on conductor start up yet, as hardware
types still do not participate in the hash ring. Thus, nodes with
hardware types cannot still be created via HTTP API.
Change-Id: If8e3342baf818a9e37aa82b43aec71898d48c29b
Partial-Bug: #1524745