Software-defined storage provider

OpenStack Cinder Enhancements for a Software-Defined Storage Provider

Cloudification helped a storage software company get critical OpenStack changes accepted upstream after over 2 years of stalled reviews.

Upstream changes merged into OpenStack

Impact across Cinder, Nova, and os-brick

Some changes in review for nearly 3 years

Company

Bulgaria and the United States · 101–500 employees

The client is a company with operations in Bulgaria and the United States that develops software-defined storage systems. The company has between 101 and 500 employees.

The client’s product integrates with OpenStack. OpenStack Cinder is used for block storage, while a storage driver enables Cinder to interact with a specific storage system.

Challenge

Cloudification contributed to the development and enhancement of the OpenStack Cinder and Nova for the client’s storage system. The client was not able to get the changes accepted for more than 2 years before the project started.

The work involved not only changes related to the client’s own integration, but also changes intended for inclusion in the upstream OpenStack codebase and CI/CD.

Upstream OpenStack changes go through a public code review process with Core Reviewers and PTL (Project Technical Lead) of the component voting “+2” in OpenStack Gerrit review system for a change to be accepted. Once tests are passed and two “+2” votes are present, the changes are merged and become part of the corresponding OpenStack project in the upcoming release. Same changes are often backported to previous, supported releases.

Project highlight

The result can be verified publicly: the related changes are available in OpenDev Gerrit, the code review system used by OpenStack.

Project specifics

The work affected code related to the integration between the client’s storage system and OpenStack.

The public series of changes includes updates in the openstack/cinder, openstack/nova and openstack/os-brick repositories. Examples include:

improvements to create_cloned_volume()

fixes related to StorPool operations

a unit test fix for the rename volume operation

removal of the obsolete backup_volume()

changes related to volume attach and detach operations

This was a series of changes related to the StorPool storage integration in OpenStack that had to be merged in a specific order.

Solution

The Cloudification team worked on the development of the client’s storage integration with OpenStack and helped bring the prepared changes through to acceptance in upstream OpenStack.

The work affected OpenStack Cinder, Nova and os-brick covering several areas. These included improvements to volume cloning, including cloning across different storage pools, implementation of volume revert to snapshot, fixes to retype and attach/detach operations, and removal of obsolete methods.

Another part of the work focused on the integration architecture itself. In os-brick, volume attach and detach operations were moved to direct use of the StorPool API. Further accepted changes removed dependencies on the separate storpool and storpool.spopenstack Python packages and moved the required functionality into the OpenStack codebase itself.

Some of the changes remained in upstream review for a long time. For example, the first patchset for the change related to removing the obsolete backup_volume() method was uploaded in August 2021, while the change received Merged status in May 2024.

OpenDev Gerrit: examples of upstream changes to the StorPool integration accepted into OpenStack

Result

A series of changes related to the client’s storage integration with OpenStack were reviewed and accepted upstream.

The accepted changes affected openstack/cinder, openstack/nova and openstack/os-brick covering volume and snapshot operations, cloning across storage pools, attach/detach operations, and further development of the StorPool integration with OpenStack.

For the client, the result was a set of improvements to its storage integration that became part of the official OpenStack codebase crucial for the end-users of the solution. The review and commit history are publicly available in OpenDev Gerrit.

Technologies

Frame 1

OpenStack

Ubuntu

Ansible

Group 10

Python

Bash