Skip to content

feat(data engine): Add the VolumeAttributesClass feature#444

Merged
tiagolobocastro merged 1 commit intoopenebs:developfrom
rybas-dv:develop
Feb 26, 2026
Merged

feat(data engine): Add the VolumeAttributesClass feature#444
tiagolobocastro merged 1 commit intoopenebs:developfrom
rybas-dv:develop

Conversation

@rybas-dv
Copy link
Copy Markdown
Contributor

@rybas-dv rybas-dv commented Feb 3, 2026

Why is this PR required? What issue does it fix?:
The OEP discussed the process of implementing the VAC, in this PR a possible implementation.

What this PR does?:
This PR adds the ability to support VAC to the controller for k8s clusters with and without VAC support.

Does this PR require any upgrade changes?:
Kubernetes CSI Sidecar Containers version need to be updated.

If the changes in this PR are manually verified, list down the scenarios covered::

Any additional information for your reviewer? :
Please help me understand how to implement integration tests to verify that VAC applied on cgroup /sys/fs/cgroup/ correctly.

Checklist:

  • Fixes #
  • PR Title follows the convention of <type>(<scope>): <subject>
  • Has the change log section been updated?
  • Commit has unit tests
  • Commit has integration tests
  • (Optional) Are upgrade changes included in this PR? If not, mention the issue/PR to track:
  • (Optional) If documentation changes are required, which issue on https://github.com/openebs/openebs-docs is used to track them:

@rybas-dv rybas-dv requested a review from a team as a code owner February 3, 2026 16:17
@rybas-dv
Copy link
Copy Markdown
Contributor Author

rybas-dv commented Feb 3, 2026

I checked these options manually on cluster 1.34.3 without integration testing:

apiVersion: storage.k8s.io/v1
kind: VolumeAttributesClass
metadata:
  name: lvm-qos-low
driverName: local.csi.openebs.io
parameters:
  qosIopsLimit: "20"
  qosBandwithPerSec: "20000"
---
apiVersion: storage.k8s.io/v1
kind: VolumeAttributesClass
metadata:
  name: lvm-qos-high
driverName: local.csi.openebs.io
parameters:
  qosIopsLimit: "50000"
  qosBandwithPerSec: "5000000"
---
apiVersion: storage.k8s.io/v1
kind: VolumeAttributesClass
metadata:
  name: lvm-qos-comment
driverName: local.csi.openebs.io
parameters:
  # qosIopsLimit: ""
  qosBandwithPerSec: "7000000"
---
apiVersion: storage.k8s.io/v1
kind: VolumeAttributesClass
metadata:
  name: lvm-qos-iops-max
driverName: local.csi.openebs.io
parameters:
  qosIopsLimit: "max"
  qosBandwithPerSec: "7000000"
---
apiVersion: storage.k8s.io/v1
kind: VolumeAttributesClass
metadata:
  name: lvm-qos-zero
driverName: local.csi.openebs.io
parameters:
  qosIopsLimit: "0"
  qosBandwithPerSec: "7000000"
---
apiVersion: storage.k8s.io/v1
kind: VolumeAttributesClass
metadata:
  name: lvm-qos-mi
driverName: local.csi.openebs.io
parameters:
  qosIopsLimit: "10"
  qosBandwithPerSec: "7000Mi"
---
apiVersion: storage.k8s.io/v1
kind: VolumeAttributesClass
metadata:
  name: lvm-qos-duplicate
driverName: local.csi.openebs.io
parameters:
  qosIopsLimit: "10"
  qosIopslimit: "20"
  qosBandwithPerSec: "7000Mi"
---
apiVersion: storage.k8s.io/v1
kind: VolumeAttributesClass
metadata:
  name: lvm-qos-directional
driverName: local.csi.openebs.io
parameters:
  qosIopsReadLimit: "100"
  qosIopsWriteLimit: "200"
  qosBandwithReadPerSec: "7000Mi"
  qosBandwithWritePerSec: "8000Mi"
---
apiVersion: storage.k8s.io/v1
kind: VolumeAttributesClass
metadata:
  name: lvm-qos-unlim
driverName: local.csi.openebs.io
parameters:
  qosIopsLimit: "max"
  qosBandwithPerSec: "max"
---
apiVersion: storage.k8s.io/v1
kind: VolumeAttributesClass
metadata:
  name: lvm-qos-conflict
driverName: local.csi.openebs.io
parameters:
  qosIopsLimit: "max"
  qosIopsReadLimit: "1000"
---
apiVersion: storage.k8s.io/v1
kind: VolumeAttributesClass
metadata:
  name: lvm-qos-wrong-key
driverName: local.csi.openebs.io
parameters:
  wrong: "1"

Comment thread deploy/helm/charts/templates/rbac.yaml
Comment thread deploy/helm/charts/values.yaml
Comment thread pkg/lvm/iolimiter_cgroup.go Outdated
Comment thread pkg/lvm/iolimiter_cgroup.go Outdated
Comment thread pkg/driver/params.go
Comment thread pkg/driver/controller.go
Comment thread pkg/driver/params.go
Comment thread pkg/lvm/iolimiter_cgroup.go
@codecov
Copy link
Copy Markdown

codecov bot commented Feb 7, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 98.46%. Comparing base (ac7b565) to head (2dbedcb).
⚠️ Report is 2 commits behind head on develop.

Additional details and impacted files
@@           Coverage Diff            @@
##           develop     #444   +/-   ##
========================================
  Coverage    98.46%   98.46%           
========================================
  Files            2        2           
  Lines          979      979           
========================================
  Hits           964      964           
  Misses           8        8           
  Partials         7        7           
Flag Coverage Δ
bddtests 98.46% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Comment thread pkg/apis/openebs.io/lvm/v1alpha1/lvmvolume.go
Comment thread pkg/builder/volbuilder/volume.go Outdated
Comment thread pkg/driver/controller.go
Comment thread pkg/driver/params.go
Comment thread pkg/driver/params.go
Comment thread pkg/mgmt/volume/volume.go
Copy link
Copy Markdown
Member

@tiagolobocastro tiagolobocastro left a comment

Choose a reason for hiding this comment

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

Thanks @rybas-dv for your great work and your patience in the discussions

Comment thread pkg/lvm/iolimiter_cgroup.go
Comment thread pkg/lvm/iolimiter_cgroup_test.go Outdated
@rybas-dv
Copy link
Copy Markdown
Contributor Author

Thanks @rybas-dv for your great work and your patience in the discussions

Thank you for what you do, it's very important. I was glad to make my small contribution.

@abhilashshetty04
Copy link
Copy Markdown
Member

@rybas-dv , Can you please squash commits.

Signed-off-by: rybas.dmitriy <dirybas@rambler.ru>
@tiagolobocastro tiagolobocastro merged commit cc5a077 into openebs:develop Feb 26, 2026
9 checks passed
@tiagolobocastro
Copy link
Copy Markdown
Member

@rybas-dv fyi there was missing code gen in ci, so this us being added in my pr: fe7be39
ptal if you can

@rybas-dv
Copy link
Copy Markdown
Contributor Author

rybas-dv commented Feb 26, 2026

@rybas-dv fyi there was missing code gen in ci, so this us being added in my pr: fe7be39 ptal if you can

Thanks for this. I did the previous version manually and missed this point. I built the operator and tested it locally with your additions, and it also works correctly.

@tiagolobocastro
Copy link
Copy Markdown
Member

@rybas-dv fyi there was missing code gen in ci, so this us being added in my pr: fe7be39 ptal if you can

Thanks for this. I did the previous version manually and missed this point. I built the operator with your additions and it works correctly.

Awesome thank you, I'll go ahead and merge my pr then.

There was prior changes missing as well (for the ThinPool)! I've added the auto-generate steps to the CI, so hopefully should be good from on on.

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.

4 participants