Skip to content

feat: add Cinder volume storage backends and tests#801

Merged
hemanthnakkina merged 2 commits into
canonical:mainfrom
ahmad-can:feature/add-cinder-volume-storage-backends
May 28, 2026
Merged

feat: add Cinder volume storage backends and tests#801
hemanthnakkina merged 2 commits into
canonical:mainfrom
ahmad-can:feature/add-cinder-volume-storage-backends

Conversation

@ahmad-can
Copy link
Copy Markdown

Add 32 storage backend implementations for Cinder volume drivers including init.py, backend.py, test files, conftest fixtures, and test_common entries.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR expands Sunbeam’s Cinder storage backend catalog by adding many new backend implementations (each with a StorageBackendConfig model and StorageBackendBase subclass) and corresponding unit tests/fixtures to ensure consistent interface behavior and expected identifiers.

Changes:

  • Added new storage backend modules (e.g., Zadara, Yadro, Veritas Access, SolidFire, etc.) with typed Pydantic config models.
  • Added per-backend unit tests plus expanded shared backend test matrices.
  • Updated unit-test fixtures (conftest.py) to instantiate and parametrize the new backends.

Reviewed changes

Copilot reviewed 95 out of 95 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
sunbeam-python/tests/unit/sunbeam/storage/backends/test_zadara.py Adds unit tests for Zadara backend identifiers.
sunbeam-python/tests/unit/sunbeam/storage/backends/test_yadro.py Adds unit tests for Yadro backend identifiers.
sunbeam-python/tests/unit/sunbeam/storage/backends/test_veritasaccess.py Adds unit tests for Veritas Access backend identifiers.
sunbeam-python/tests/unit/sunbeam/storage/backends/test_toyouacs5000.py Adds unit tests for Toyou ACS5000 backend identifiers.
sunbeam-python/tests/unit/sunbeam/storage/backends/test_synology.py Adds unit tests for Synology backend identifiers.
sunbeam-python/tests/unit/sunbeam/storage/backends/test_stx.py Adds unit tests for Stx backend identifiers.
sunbeam-python/tests/unit/sunbeam/storage/backends/test_solidfire.py Adds richer SolidFire tests (config fields, secrets, validation).
sunbeam-python/tests/unit/sunbeam/storage/backends/test_sandstone.py Adds unit tests for Sandstone backend identifiers.
sunbeam-python/tests/unit/sunbeam/storage/backends/test_qnap.py Adds unit tests for QNAP backend identifiers.
sunbeam-python/tests/unit/sunbeam/storage/backends/test_prophetstor.py Adds unit tests for ProphetStor backend identifiers.
sunbeam-python/tests/unit/sunbeam/storage/backends/test_opene.py Adds unit tests for Open-E backend identifiers.
sunbeam-python/tests/unit/sunbeam/storage/backends/test_nimble.py Adds Nimble tests (enum typing, secrets, validation).
sunbeam-python/tests/unit/sunbeam/storage/backends/test_nexenta.py Adds unit tests for Nexenta backend identifiers.
sunbeam-python/tests/unit/sunbeam/storage/backends/test_netapp.py Adds unit tests for NetApp backend identifiers.
sunbeam-python/tests/unit/sunbeam/storage/backends/test_necv.py Adds unit tests for NEC V backend identifiers.
sunbeam-python/tests/unit/sunbeam/storage/backends/test_macrosan.py Adds unit tests for MacroSAN backend identifiers.
sunbeam-python/tests/unit/sunbeam/storage/backends/test_linstor.py Adds unit tests for LINSTOR backend identifiers.
sunbeam-python/tests/unit/sunbeam/storage/backends/test_kaminario.py Adds unit tests for Kaminario backend identifiers.
sunbeam-python/tests/unit/sunbeam/storage/backends/test_inspurinstorage.py Adds unit tests for Inspur InStorage backend identifiers.
sunbeam-python/tests/unit/sunbeam/storage/backends/test_inspuras13000.py Adds unit tests for Inspur AS13000 backend identifiers.
sunbeam-python/tests/unit/sunbeam/storage/backends/test_ibmstorwizesvc.py Adds unit tests for IBM Storwize SVC backend identifiers.
sunbeam-python/tests/unit/sunbeam/storage/backends/test_ibmibmstorage.py Adds unit tests for IBMStorage backend identifiers.
sunbeam-python/tests/unit/sunbeam/storage/backends/test_ibmgpfs.py Adds GPFS tests (secrets + validation).
sunbeam-python/tests/unit/sunbeam/storage/backends/test_ibmflashsystemiscsi.py Adds FlashSystem iSCSI tests (validation).
sunbeam-python/tests/unit/sunbeam/storage/backends/test_ibmflashsystemcommon.py Adds FlashSystem Common tests (secrets + validation).
sunbeam-python/tests/unit/sunbeam/storage/backends/test_hpexp.py Adds HPE XP tests (validation).
sunbeam-python/tests/unit/sunbeam/storage/backends/test_fujitsueternusdx.py Adds Fujitsu ETERNUS DX tests (validation + boolean typing).
sunbeam-python/tests/unit/sunbeam/storage/backends/test_dellpowervault.py Adds Dell PowerVault tests (protocol enum typing).
sunbeam-python/tests/unit/sunbeam/storage/backends/test_dellpowermax.py Adds Dell PowerMax tests (secrets + protocol validation).
sunbeam-python/tests/unit/sunbeam/storage/backends/test_datera.py Adds Datera tests (secrets + protocol default/validation).
sunbeam-python/tests/unit/sunbeam/storage/backends/test_datacore.py Adds DataCore tests (basic contract field presence).
sunbeam-python/tests/unit/sunbeam/storage/backends/test_common.py Expands shared “all backends” uniqueness/expectation matrices.
sunbeam-python/tests/unit/sunbeam/storage/backends/conftest.py Adds fixtures/imports and extends any_backend parametrization.
sunbeam-python/sunbeam/storage/backends/zadara/backend.py Implements Zadara backend + config model.
sunbeam-python/sunbeam/storage/backends/zadara/init.py Declares Zadara backend package.
sunbeam-python/sunbeam/storage/backends/yadro/backend.py Implements Yadro backend + config model.
sunbeam-python/sunbeam/storage/backends/yadro/init.py Declares Yadro backend package.
sunbeam-python/sunbeam/storage/backends/veritasaccess/backend.py Implements Veritas Access backend + config model.
sunbeam-python/sunbeam/storage/backends/veritasaccess/init.py Declares Veritas Access backend package.
sunbeam-python/sunbeam/storage/backends/toyouacs5000/backend.py Implements Toyou ACS5000 backend + config model.
sunbeam-python/sunbeam/storage/backends/toyouacs5000/init.py Declares Toyou ACS5000 backend package.
sunbeam-python/sunbeam/storage/backends/synology/backend.py Implements Synology backend + config model (with secret fields).
sunbeam-python/sunbeam/storage/backends/synology/init.py Declares Synology backend package.
sunbeam-python/sunbeam/storage/backends/stx/backend.py Implements Stx backend + config model.
sunbeam-python/sunbeam/storage/backends/stx/init.py Declares Stx backend package.
sunbeam-python/sunbeam/storage/backends/solidfire/backend.py Implements SolidFire backend + config model (ProvisioningCalc enum, secrets).
sunbeam-python/sunbeam/storage/backends/solidfire/init.py Declares SolidFire backend package.
sunbeam-python/sunbeam/storage/backends/sandstone/backend.py Implements Sandstone backend + config model.
sunbeam-python/sunbeam/storage/backends/sandstone/init.py Declares Sandstone backend package.
sunbeam-python/sunbeam/storage/backends/qnap/backend.py Implements QNAP backend + config model (secrets).
sunbeam-python/sunbeam/storage/backends/qnap/init.py Declares QNAP backend package.
sunbeam-python/sunbeam/storage/backends/prophetstor/backend.py Implements ProphetStor backend + config model.
sunbeam-python/sunbeam/storage/backends/prophetstor/init.py Declares ProphetStor backend package.
sunbeam-python/sunbeam/storage/backends/opene/backend.py Implements Open-E backend + config model.
sunbeam-python/sunbeam/storage/backends/opene/init.py Declares Open-E backend package.
sunbeam-python/sunbeam/storage/backends/nimble/backend.py Implements Nimble backend + config model (secrets, protocol enum).
sunbeam-python/sunbeam/storage/backends/nimble/init.py Declares Nimble backend package.
sunbeam-python/sunbeam/storage/backends/nexenta/backend.py Implements Nexenta backend + large config model (secrets).
sunbeam-python/sunbeam/storage/backends/nexenta/init.py Declares Nexenta backend package.
sunbeam-python/sunbeam/storage/backends/netapp/backend.py Implements NetApp backend + large config model (secrets).
sunbeam-python/sunbeam/storage/backends/netapp/init.py Declares NetApp backend package.
sunbeam-python/sunbeam/storage/backends/necv/backend.py Implements NEC V backend + config model.
sunbeam-python/sunbeam/storage/backends/necv/init.py Declares NEC V backend package.
sunbeam-python/sunbeam/storage/backends/macrosan/backend.py Implements MacroSAN backend + config model (secrets).
sunbeam-python/sunbeam/storage/backends/macrosan/init.py Declares MacroSAN backend package.
sunbeam-python/sunbeam/storage/backends/linstor/backend.py Implements LINSTOR backend + config model.
sunbeam-python/sunbeam/storage/backends/linstor/init.py Declares LINSTOR backend package.
sunbeam-python/sunbeam/storage/backends/kaminario/backend.py Implements Kaminario backend + config model.
sunbeam-python/sunbeam/storage/backends/kaminario/init.py Declares Kaminario backend package.
sunbeam-python/sunbeam/storage/backends/inspurinstorage/backend.py Implements Inspur InStorage backend + config model (secrets).
sunbeam-python/sunbeam/storage/backends/inspurinstorage/init.py Declares Inspur InStorage backend package.
sunbeam-python/sunbeam/storage/backends/inspuras13000/backend.py Implements Inspur AS13000 backend + config model (secrets).
sunbeam-python/sunbeam/storage/backends/inspuras13000/init.py Declares Inspur AS13000 backend package.
sunbeam-python/sunbeam/storage/backends/ibmstorwizesvc/backend.py Implements IBM Storwize SVC backend + config model (secrets).
sunbeam-python/sunbeam/storage/backends/ibmstorwizesvc/init.py Declares IBM Storwize SVC backend package.
sunbeam-python/sunbeam/storage/backends/ibmibmstorage/backend.py Implements IBMStorage backend + config model (secrets, validator).
sunbeam-python/sunbeam/storage/backends/ibmibmstorage/init.py Declares IBMStorage backend package.
sunbeam-python/sunbeam/storage/backends/ibmgpfs/backend.py Implements GPFS backend + config model (secrets).
sunbeam-python/sunbeam/storage/backends/ibmgpfs/init.py Declares GPFS backend package.
sunbeam-python/sunbeam/storage/backends/ibmflashsystemiscsi/backend.py Implements FlashSystem iSCSI backend + config model.
sunbeam-python/sunbeam/storage/backends/ibmflashsystemiscsi/init.py Declares FlashSystem iSCSI backend package.
sunbeam-python/sunbeam/storage/backends/ibmflashsystemcommon/backend.py Implements FlashSystem Common backend + config model (secrets).
sunbeam-python/sunbeam/storage/backends/ibmflashsystemcommon/init.py Declares FlashSystem Common backend package.
sunbeam-python/sunbeam/storage/backends/hpexp/backend.py Implements HPE XP backend + config model.
sunbeam-python/sunbeam/storage/backends/hpexp/init.py Declares HPE XP backend package.
sunbeam-python/sunbeam/storage/backends/fujitsueternusdx/backend.py Implements Fujitsu ETERNUS DX backend + config model.
sunbeam-python/sunbeam/storage/backends/fujitsueternusdx/init.py Declares Fujitsu ETERNUS DX backend package.
sunbeam-python/sunbeam/storage/backends/dellpowervault/backend.py Implements Dell PowerVault backend + config model.
sunbeam-python/sunbeam/storage/backends/dellpowervault/init.py Declares Dell PowerVault backend package.
sunbeam-python/sunbeam/storage/backends/dellpowermax/backend.py Implements Dell PowerMax backend + config model (secrets).
sunbeam-python/sunbeam/storage/backends/dellpowermax/init.py Declares Dell PowerMax backend package.
sunbeam-python/sunbeam/storage/backends/datera/backend.py Implements Datera backend + config model (secrets).
sunbeam-python/sunbeam/storage/backends/datera/init.py Declares Datera backend package.
sunbeam-python/sunbeam/storage/backends/datacore/backend.py Implements DataCore backend + config model (currently includes many Ceph/RBD options).
sunbeam-python/sunbeam/storage/backends/datacore/init.py Declares DataCore backend package.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread sunbeam-python/tests/unit/sunbeam/storage/backends/test_common.py Outdated
Comment thread sunbeam-python/tests/unit/sunbeam/storage/backends/test_common.py Outdated
Comment thread sunbeam-python/sunbeam/storage/backends/datacore/backend.py
@ahmad-can ahmad-can force-pushed the feature/add-cinder-volume-storage-backends branch 2 times, most recently from 0ab161b to fe64c08 Compare May 26, 2026 09:59
@hemanthnakkina hemanthnakkina requested a review from Copilot May 26, 2026 12:44
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 95 out of 95 changed files in this pull request and generated 2 comments.

Comment thread sunbeam-python/sunbeam/storage/backends/nexenta/backend.py
Comment thread sunbeam-python/sunbeam/storage/backends/inspuras13000/backend.py Outdated
Add 32 storage backend implementations for Cinder volume drivers
including __init__.py, backend.py, test files, conftest fixtures,
and test_common entries.

Signed-off-by: Ahmad Hassan <ahmad.hassan@canonical.com>
@ahmad-can ahmad-can force-pushed the feature/add-cinder-volume-storage-backends branch from fe64c08 to aa218f1 Compare May 26, 2026 13:19
@ahmad-can ahmad-can requested a review from Copilot May 26, 2026 13:29
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 100 out of 100 changed files in this pull request and generated 4 comments.

Comment thread sunbeam-python/tests/unit/sunbeam/storage/backends/conftest.py Outdated
Comment thread sunbeam-python/tests/unit/sunbeam/storage/backends/test_common.py Outdated
Comment thread sunbeam-python/tests/unit/sunbeam/storage/backends/test_common.py Outdated
Comment thread sunbeam-python/tests/unit/sunbeam/storage/backends/test_common.py Outdated
Signed-off-by: Ahmad Hassan <ahmad.hassan@canonical.com>
@ahmad-can ahmad-can force-pushed the feature/add-cinder-volume-storage-backends branch from 0e6c784 to 78433e7 Compare May 26, 2026 13:58
@hemanthnakkina hemanthnakkina merged commit 72a26f8 into canonical:main May 28, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants