This change adds a new data migration: migrate_to_hardware_types.
It works by walking through known classic drivers, detecting matching
hardware types and interfaces and updates nodes accordingly.
Nodes that cannot be updated (e.g. matching hardware type is not
enabled) are skipped. A new migration option reset_unsupported_interfaces
can be set to True to allow resetting optional interfaces to their
no-op versions.
The example implementation are provided for the community supported
IPMI and SNMP drivers, as well as for fake drivers based on them.
Change-Id: I732b44f2ab1ef73f56b352415ffd9cdd8a0e232b
Partial-Bug: #1690185
Adds API methods to support rescue and unrescue.
After rescuing a node, it will be left running a rescue ramdisk,
configured with the rescue_password, and listening with ssh on the
specified network interfaces.
Unrescuing a node will return the node to Active.
Change-Id: I3953ff0b1ca000f8ae83fb7b3c663f848a149345
Partial-bug: #1526449
Co-Authored-By: Jay Faulkner <jay@jvf.cc>
Co-Authored-By: Josh Gachnang <josh@pcsforeducation.com>
Co-Authored-By: Jesse J. Cook <jesse.j.cook@member.fsf.org>
Co-Authored-By: Mario Villaplana <mario.villaplana@gmail.com>
Co-Authored-By: Aparna <aparnavtce@gmail.com>
Co-Authored-By: Shivanand Tendulker <stendulker@gmail.com>
https://review.openstack.org/468288 added some unit tests for the
UEFI iSCSI boot for ILO, which fail when proliantutils is installed
in the virtualenv (it was not in the gate).
The reason for this is that they do not pass a value to the constructor
of ilo_error.IloError and ilo_error.IloCommandNotSupportedInBiosError,
which makes the unit tests fail, as seen when the package was built
in RDO [1].
This patch adds the required value, as used by other unit tests.
[1] - 7371477064_0520bb51
Change-Id: I50d919047ddb9edf1a1ae1a994a8f71e420718d9
Adds support to prepare rescue ramdisk to iRMC PXE boot interface,
which is a subclass of PXE boot interface by adding the new argument.
Also adds unit tests to confirm iRMC PXE boot interface passes the
same tests as generic PXE boot interface.
Change-Id: I1b4aeb207772a09cacf0bff910be4061ec5c74ee
Related-Bug: #1526449
This allows migration to be tuned to a specific deployment. For example,
when we will migrate nodes to hardware types, an option will be used
to specify what to do with missing interfaces.
Change-Id: Ie5045b20b7420fc9b5d864bfb18258a4d8b93334
Related-Bug: #1690185
This patch removes the caching from the code that validates neutron
network's name and UUID to solve a race caused by storing a network UUID
(which can now be different per node) on a singleton network interface
object.
Change-Id: Ib5fb1ff93ffecec4b5ffb033013d3ae09dcaf4bc
This change adds new methods in management interface and enhance
boot interface of 'ilo' hardware type to support boot from iSCSI
volume in UEFI boot mode.
Change-Id: I585e0ef90f4397af1f09920c3a1bc47ddbcb1a97
Related-Bug: #1526861
There is an aditional timeout parameter when powering on/off
an Ironic node that is not being used at ``oneview`` hardware
type.
Change-Id: Ie6006cd40c8b2895d7326eec680be071bb871838
Closes-Bug: 1722616
This patches fixes the get_boot_device methods for ``oneview``
hardware type to consider onetime boot option on the machine's iLO.
if onetime boot is set to 'Once' on iLO, the method will return
persistent as False (not persistent), True otherwise (persistent).
Change-Id: I48d8b01ff37263a19c889f242a7ce2a99eee597e
Closes-Bug: #1706725
This patch removes the ``python-oneviewclient`` library from
``oneview`` hardware type since it was migrated to ``hponeview``
and ``python-ilorest-library``.
Change-Id: I3393189abdff6a0e56f54375877cc310d72ff5b1
Closes-Bug: #1693788
Adds basic CRUD on traits, including set and delete of individual
traits.
Bumps the API microversion to 1.37.
NOTE: This patch does not implement the advanced filtering outlined in
the OpenStack API working group's tags guidelines[1]. That will be
implemented in a separate microversion as a follow up patch.
[1] http://specs.openstack.org/openstack/api-wg/guidelines/tags.html
Change-Id: I313fa01fbf20bf0ff19f102ea63b02e72ac2b856
Partial-Bug: #1722194
Co-Authored-By: Mark Goddard <mark@stackhpc.com>
Adds two new methods to the conductor RPC API, add_node_traits and
remove_node_traits, and provides implementations for them in the
conductor manager. add_node_traits can be used to add one or more traits
to a node, or to replace all the traits for a node. remove_node_traits
can be used to remove one or more traits from a node, or to remove all
traits from a node.
The conductor RPC API version is bumped to 1.44.
Change-Id: I0181df6a41e603874677246066d84bf4ac4f433c
Partial-Bug: #1722194
Seems that by default we now run cleaning
on all jobs. However, this is extremely wasteful
and time consuming. Also, if a cloud is IO resource
constrained, it can result in jobs failing erroneously
due to unpredictable IO performance, particularly with
the multinode jobs.
As such, slightly extend the wait timeout before we
fail for nodes not being ready, and flag multinode
jobs not to run cleaning.
Change-Id: I12011743fa197caef08a3d6d1297d662dfa7640a
In the node traits RPC object change [1], the _do_update_node method in
the sqlalchemy DB API was modified to use a select query joined with the
node_tags and node_traits tables in the node update DB operation. This
was done to ensure that the returned NodeModel had its tags and traits
attributes populated rather than lazy loaded. This was found not to work
on PostgreSQL, which presents the following error message [2]:
Exception during message handling: DBNotSupportedError:
(psycopg2.NotSupportedError) FOR UPDATE cannot be applied to the
nullable side of an outer join
This issue is resolved in this commit by reverting to the original query
without joins for the node update, and performing a joined query after
the update.
[1] https://review.openstack.org/#/c/532268/13
[2]
http://logs.openstack.org/69/532269/22/check/ironic-tempest-dsvm-pxe_ipmitool-postgres/562b2ea/logs/screen-ir-cond.txt.gz?level=ERROR#_Jan_23_23_59_05_062967
Change-Id: Ib0d49f7e781f1aa0c4496957b00f6c8e3da0ecc0
Related-Bug: #1722194
As part of the process to stop the use of ``python-oneviewclient``
in favor of ``python-hpOneView`` and ``python-ilorest-library``, the
validations of the ``python-oneviewclient`` have to be migrated to
the ``oneview`` hardware type.
Change-Id: I9031f6e9a59901d3241c6802938252bb63cfe6ca
Partial-Bug: #1693788
Adds a new traits object to expose traits DB operations to the API. It
also adds a new traits field into the node object, with the appropriate
version compatibility logic.
get_node_by_port_addresses is modified to ensure we correctly join in
the tags and traits in that DB call, this avoids a orphaned db object
lazy load style failure.
_set_from_db_object in the base object is modified such that the new
traits object doesn't have to include the dictionary style compatibility
mix-in.
Change-Id: I69403b9875a020fab7a7975810b57bf646417953
Partial-Bug: #1722194
Co-Authored-By: Mark Goddard <mark@stackhpc.com>
These values have priority over ones defined in ironic.conf. Also modify
validation code to only used network UUID cached on task.network if:
1. the requested XXX_network is UUID, not name
2. the requested XXX_network is the same as the cached one.
Co-Authored-By: Dmitry Tantsur <dtantsur@redhat.com>
Closes-Bug: #1614876
Change-Id: I4caec34d85304fe887bcc28b7528cceceb3acfe8
Migrate the code on ``oneview`` hardware type to stop using
``python-oneviewclient`` in order to use ``python-hpOneView``
and ``python-ilorest-library``. The library ``python-hpOneView``
is more recent and is being more actively developed and maintained.
Co-Authored-By: Hugo Nicodemos <nicodemos@lsd.ufcg.edu.br>
Co-Authored-By: Xavier <marcusrafael@lsd.ufcg.edu.br>
Change-Id: I2c5b1703603b1401be637b6172cc4297f705332f
Partial-Bug: #1693788