feat: add Cinder volume storage backends and tests#801
Merged
hemanthnakkina merged 2 commits intoMay 28, 2026
Merged
Conversation
There was a problem hiding this comment.
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.
0ab161b to
fe64c08
Compare
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>
fe64c08 to
aa218f1
Compare
Signed-off-by: Ahmad Hassan <ahmad.hassan@canonical.com>
0e6c784 to
78433e7
Compare
hemanthnakkina
approved these changes
May 28, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add 32 storage backend implementations for Cinder volume drivers including init.py, backend.py, test files, conftest fixtures, and test_common entries.