Skip to content

feat(cinder): add VAST data volume backend support#3837

Open
Donny Arief Oktavian (donnyao) wants to merge 3 commits intomainfrom
feat/cinder-vast-backend
Open

feat(cinder): add VAST data volume backend support#3837
Donny Arief Oktavian (donnyao) wants to merge 3 commits intomainfrom
feat/cinder-vast-backend

Conversation

@donnyao
Copy link
Copy Markdown
Contributor

Summary

Adds support for the VAST Data volume backend in Cinder, introduced in OpenStack 2026.1.

Changes

plugins/filter/storage.py

  • New VolumeBackendVast class with:
    • Required: address, subsystem, vippool_name
    • Auth: api_token or username + password (validated at model level)
    • Optional: tenant_name
    • Uses cinder.volume.drivers.vastdata.driver.VASTVolumeDriver
    • Inherits _HostAttachedVolumeBackend (iSCSI enablement, trimmed dependency graph)
  • Registered in the VolumeBackend discriminated union

tests/unit/plugins/filter/test_storage.py

  • Tests for API token auth, username/password auth, optional tenant name, and missing credentials validation

doc/source/deploy/storage.rst

  • New VAST data section documenting all configuration fields

Example configuration

atmosphere_storage:
  volumes:
    default: vast
    backends:
      vast:
        type: vast
        address: 10.0.0.5
        api_token: my-api-token
        subsystem: openstack-subsystem
        vippool_name: openstack-vips
  backup:
    type: none
  ephemeral:
    type: local

Add VolumeBackendVast to the storage filter plugin, enabling
atmosphere_storage configuration for the VAST Data Cinder driver
(cinder.volume.drivers.vastdata.driver.VASTVolumeDriver).

Supports authentication via API token or username/password, with
required subsystem and VIP pool name fields, and optional tenant name.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: donnyao <ao.donny@gmail.com>
Document the VAST data volume backend type in storage.rst, covering
API token and username/password authentication, required fields, and
the optional tenant_name parameter.

Also add VAST to the vale vocabulary as a proper noun.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: donnyao <ao.donny@gmail.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: donnyao <ao.donny@gmail.com>
Copy link
Copy Markdown
Contributor

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

Adds a new Cinder volume backend type (vast) to support the VAST Data driver introduced in OpenStack 2026.1, including schema validation, Helm values generation, docs, and release notes.

Changes:

  • Introduces VolumeBackendVast (token or username/password auth) and registers it in the VolumeBackend discriminated union.
  • Adds unit tests covering VAST backend rendering and credential validation.
  • Documents the new backend and adds “VAST” to the Vale vocabulary, plus a release note entry.

Reviewed changes

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

Show a summary per file
File Description
plugins/filter/storage.py Adds the vast volume backend model and maps it to Cinder driver config keys.
tests/unit/plugins/filter/test_storage.py Adds tests for token/userpass auth paths, tenant name, and missing-credential validation.
doc/source/deploy/storage.rst Documents vast backend configuration fields and example YAML.
releasenotes/notes/cinder-vast-data-backend-c4aa359f26d6911e.yaml Announces the new VAST Data backend support.
.github/styles/config/vocabularies/Base/accept.txt Adds “VAST” to the Vale accepted vocabulary.

assert result["conf"]["backends"]["vast"]["vast_tenant_name"] == "my-tenant"

def test_vast_backend_missing_credentials_raises(self):
with pytest.raises(Exception):
Copy link

Copilot AI Apr 21, 2026

Choose a reason for hiding this comment

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

This test uses pytest.raises(Exception), which can mask unrelated failures and makes the intent unclear. Since StorageConfig.model_validate(...) wraps model-level ValueErrors into a pydantic.ValidationError, assert ValidationError here (and ideally match the message) so you're specifically testing the missing-credentials validation.

Suggested change
with pytest.raises(Exception):
with pytest.raises(
ValidationError, match=r"api_token|san_login|san_password"
):

Copilot uses AI. Check for mistakes.
Comment on lines +206 to +210
VAST data (``vast``)
====================

VAST Data volume backend. Supports authentication via API token or username
and password. You must provide ``subsystem`` and ``vippool_name``.
Copy link

Copilot AI Apr 21, 2026

Choose a reason for hiding this comment

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

The section title uses "VAST data" while the section body and release note use the product name "VAST Data". Please make the capitalization consistent throughout this section (title + description) so documentation reads consistently and avoids style-lint churn.

Copilot uses AI. Check for mistakes.
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.

2 participants