ironic-specs/priorities/2023-1-workitems.rst
Doug Goldstein a92f7f9c2f
add codespell to run via pre-commit
Added running codespell via pre-commit. Corrected all the spelling
mistakes as well. It seemed better to correct them than to leave them
incorrect in past specs and priorities since it looks more professional.

Change-Id: If96abb56726a4d8164ebdd5de4dc5ba09bc734a5
Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
2024-11-09 12:44:58 -05:00

6.9 KiB

2023.1 Project Work Items

Most Ironic contributors have a large number of responsibilities, including but not limited to, keeping CI working across all branches and projects, backporting bugfixes, and any downstream job responsibilities that do not include Ironic contribution.

Because of how much this work can vary over a six month release cycle, we've chosen to no longer specify timelines for specific work items. Instead, we will document work items we would like to see completed, and then allow the community to pick up and work on them as time permits.

We strongly encourage all corporate and individual contributors to dedicate resources to help maintain the commons; including CI and stable branches. The more contributors we have helping keep the commons healthy, the more time we have to work on new items.

This document represents our outlook for 2023.1, and will not be updated once published. For information or current status of items in progress, please see the Ironic Whiteboard at https://etherpad.openstack.org/p/IronicWhiteBoard. For information about items completed, please see the Ironic release notes.

Each item in the table includes:
  • Name of the work item, linked to the description
  • Category can be...
    • Maintenance: work that must be performed to keep Ironic working
    • Bugfix: work to enhance existing code to cover more corner cases and resolve bugs
    • Feature: a new Ironic feature that did not previously exist
  • Champions are the people most familiar with the technologies involved, and are a good resource if you'd like to implement the work item.
2023.1 Work Items
Name Category Champions
SQLAlchemy 2.0 Compatibility Maintenance TheJulia
Nova Ironic Driver sharding Bugfix JayF, johnthetubaguy, TheJulia
Cleaning up RAID created by tenants Bugfix dtantsur, ftarasenko
Remove default use of MD5 Bugfix TheJulia
Merging Inspector into Ironic Maintenance dtantsur, jjelinek
Active Steps Feature moshele, janders
Conductor Scaling & Locking Bugfix stevebaker

Goals Details

SQLAlchemy 2.0 Compatibility

Our DB layer is currently using SQLAlchemy 1.4 or older, and relies heavily on autocommit behaviors. Additionally as part of the migration to 2.0, SQLAlchemy now requires developers be more explicit about querying than in previous versions. There is a significant amount of work to be done as part of this migration, but the resulting DB layer in the code should be clearer as a result.

Nova Ironic Driver Sharding

The failure scenarios around the existing Nova Ironic driver are grim: when an instance is provisioned, it's permanently tied to the nova-compute that provisioned it and cannot be managed if that compute goes down. Additionally, at high scale, there are more race conditions due to the length of time it takes to query all Ironic nodes.

Instead, we will be adding support to Ironic, adding a sharding key which Nova can consume. This will allow us to split Ironic node management across a cluster of nova-compute services. Additionally, operators who want high availabililty will be able to setup active/passive failover on nova-compute services managing Ironic nodes.

Cleaning up RAID created by tenants

It has come to the Ironic community's attention that more and more cases are arising where customers of BMaaS systems are doing things such as setting up their own RAID sets. This can complicate undeploy/cleaning, and in some cases redeployment of the machine.

To address this, the Ironic community is considering changes to the overall cleaning workflow to disassemble discovered raid sets. While this is not yet clearly defined, we hope that doing so will improve operator's and end user's experiences.

Remove default use of MD5

The MD5 hashing algorithm is still supported in Ironic for image hashing. This is not ideal as MD5 is broken. This work will be a breaking change; forbidding use of MD5 hashes by default. Operators who wish to continue using MD5 for API compatibility reasons will be able to re-enable it via config.

Merging Inspector into Ironic

Ironic Inspector was originally created as a service external to Ironic. Now, it's used by a large number of Ironic operators around the world and should be integrated with the primary service. Now is a good time to do this work as well, as Ironic Inspector also needs to be updated to work with SQLAlchemy 2.0.

Active Steps

Ironic uses steps to perform actions on a node during deployment or cleaning. We'd like to extend this concept of steps to allow for maintenance on actively deployed nodes. This new Active Steps feature will allow operators to perform a firmware update -- or any other automated action on a provisioned, ACTIVE node.

Conductor Scaling & Locking

Traditionally, Ironic has taken an aggressive approach to locking nodes while work is being performed at the expense of operations failing when a conductor is shutdown or unavailable. This change will allow operators to gracefully shutdown a conductor from the cluster, ensuring that no in-progress actions will fail. As part of implementing and improving this, we will also need to narrow the situations in which Ironic will lock a node and improve our methods of locking.

Release Schedule

Contributors are reminded of our scheduled releases when they are choosing items to work on.

The dates below are a guide; please view https://releases.openstack.org/antelope/schedule.html for the full schedule relating to the release and https://docs.openstack.org/ironic/latest/contributor/releasing.html for Ironic specific release information.

Bugfix Release 1

The first bugfix release is scheduled to happen the first week of December.

Bugfix release 2

The second bugfix release is scheduled to happen the first week of February.

Deadline Week

There are multiple deadlines/freezes the week of February 13th: * Final release of client libraries must be performed * Requirements freeze * Soft string freeze - Ironic services are minimally translated; this generally doesn't apply to our services, such as API and Conductor, but may impact us via other projects which are translated. * Feature Freeze - Ironic does not typically have a feature freeze, but we may be impacted by other projects that do have a feature freeze at this date.

Final 2023.1 (Integrated) Release

The final releases for Ironic projects in 2023.1 must be cut by March 17th, 2023.