Skip to content

CloudStack Volume support with ONTAP storage#13053

Open
rajiv-jain-netapp wants to merge 108 commits into
apache:mainfrom
NetApp:sync/apache-main-apr-2026
Open

CloudStack Volume support with ONTAP storage#13053
rajiv-jain-netapp wants to merge 108 commits into
apache:mainfrom
NetApp:sync/apache-main-apr-2026

Conversation

@rajiv-jain-netapp

@rajiv-jain-netapp rajiv-jain-netapp commented Apr 22, 2026

Copy link
Copy Markdown

Description

Co-authored-by: Sandeep Locharla sandeep.locharla@netapp.com
Co-authored-by: Piyush Srivastava piyush5@netapp.com
Co-authored-by: Surya Gupta suryag@netapp.com

This PR...

  1. Supports cloudstack-volume usecases support for NFS3 and iSCSI protocols.
  2. Support for cloudStack-volume create/delete/attach/detach/snapshot-create.
  3. Instance create/delete/snapshot-create support
  4. Snapshot-create would not support
    1. memory snapshot
    2. user input for quicing option during snapshot creation

Types of changes

  • Breaking change (fix or feature that would cause existing functionality to change)
  • New feature (non-breaking change which adds functionality)
  • Bug fix (non-breaking change which fixes an issue)
  • Enhancement (improves an existing feature and functionality)
  • Cleanup (Code refactoring and cleanup, that may add test cases)
  • Build/CI
  • Test (unit or integration test code)

Feature/Enhancement Scale or Bug Severity

Feature/Enhancement Scale

  • Major
  • Minor

Bug Severity

  • BLOCKER
  • Critical
  • Major
  • Minor
  • Trivial

Screenshots (if appropriate):

How Has This Been Tested?

Testing Done:

  1. VM create
Screenshot 2026-04-21 at 8 23 41 PM
  1. Validate the respective CloudStack volume
Screenshot 2026-04-21 at 8 24 08 PM
  1. Storage view for the cloudStack volumes
Screenshot 2026-04-21 at 8 32 03 PM
  1. VM snapshot support
Screenshot 2026-04-21 at 8 34 48 PM
  1. Storage view, post snapshot create
Screenshot 2026-04-21 at 8 35 16 PM
  1. CloudStack UI list view for snapshot
Screenshot 2026-04-21 at 8 35 47 PM
  1. CloudStack volume snapshot support
Screenshot 2026-04-21 at 8 36 34 PM
  1. Storage view, post snapshot create
Screenshot 2026-04-21 at 8 37 09 PM
  1. CloudStack UI list view for snapshot
Screenshot 2026-04-21 at 8 43 32 PM

How did you try to break this feature and the system with this change?

Jain, Rajiv and others added 30 commits October 3, 2025 14:02
… added EOF fixes + correcting license header
Initial primary storage pool plugin skeleton
Feignconfiguration and volume feignClient along with desired POJOs with cstack 28
* CSTACKEX-29 Cluster, SVM and Aggr Feign Client

* CSTACKEX-29 Change the endpoint method name in feign client

* CSTACKEX-29 Make the alignment proper

* CSTACKEX-29 Added License Info

* CSTACKEX-29 Resolve Review Comments

* CSTACKEX-29 Remove Component Annotation from datastoredriverclass

* CSTACKEX-29 Resolve Style check issues

* CSTACKEX-29 Resolve ALL Style issues

* CSTACKEX-29 Resolve Precommits Issues

* CSTACKEX-29 Added Method comments and change the ontap response class name

---------

Co-authored-by: Gupta, Surya <Surya.Gupta@netapp.com>
* CSTACKEX-31 NAS and Job Feign Client and POJOs

* CSTACKEX-31 Fixed Checks Issues

* CSTACKEX-31 Resolve Review Comments

* CSTACKEX-31 Resolve Review Comments

* CSTACKEX-31 Resolve Review Comments

* CSTACKEX-31 Added Aggr and size to volume model

* CSTACKEX-31 Change the export policy endpoint path

* CSTACKEX-31 Fixed check styles

---------

Co-authored-by: Gupta, Surya <Surya.Gupta@netapp.com>
* CSTACKEX-30 SAN Feign Client

* CSTACKEX-30 Fixed check style issues

* CSTACKEX-30 Fixed review comments

---------

Co-authored-by: Gupta, Surya <Surya.Gupta@netapp.com>
* CSTACKEX-7: ONTAP Primary storage pool

---------

Co-authored-by: Locharla, Sandeep <Sandeep.Locharla@netapp.com>
CSTACKEX-34: Upgrade to framework classes design
* CSTACKEX-35 Create Async

* CSTACKEX-35 Added Null and empty check

* CSTACKEX-35 Resolved review comments

* CSTACKEX-35 Removed Type Casting for logger

---------

Co-authored-by: Gupta, Surya <Surya.Gupta@netapp.com>
* CSTACKEX-1: Feign changes and fixes for getting storage pool creation to work

* CSTACKEX-01: Create Primary Storage pool changes with working code

* CSTACKEX-01: Addressed all review comments and updated some code

* CSTACKEX-01: Made some changes to fix some errors seen during testing

* CSTACKEX-01: Addressed additional comments

---------

Co-authored-by: Locharla, Sandeep <Sandeep.Locharla@netapp.com>
### Description
Storage Pool Creation is failing "message": "Unexpected argument
\"svm.iscsiEnabled\"

<!-- For new features, provide link to FS, dev ML discussion etc. -->
<!-- In case of bug fix, the expected and actual behaviours, steps to
reproduce. -->

<!-- When "Fixes: #<id>" is specified, the issue/PR will automatically
be closed when this PR gets merged -->
<!-- For addressing multiple issues/PRs, use multiple "Fixes: #<id>" -->
<!-- Fixes: # -->

<!---
*******************************************************************************
-->
<!--- NOTE: AUTOMATION USES THE DESCRIPTIONS TO SET LABELS AND PRODUCE
DOCUMENTATION. -->
<!--- PLEASE PUT AN 'X' in only **ONE** box -->
<!---
*******************************************************************************
-->

### Types of changes

- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [ ] New feature (non-breaking change which adds functionality)
- [x] Bug fix (non-breaking change which fixes an issue)
- [ ] Enhancement (improves an existing feature and functionality)
- [ ] Cleanup (Code refactoring and cleanup, that may add test cases)
- [ ] Build/CI
- [ ] Test (unit or integration test code)

### Feature/Enhancement Scale or Bug Severity

#### Feature/Enhancement Scale

- [x] Major
- [ ] Minor

#### Bug Severity

- [ ] BLOCKER
- [ ] Critical
- [ ] Major
- [ ] Minor
- [ ] Trivial

### Screenshots (if appropriate):

<img width="1471" height="145" alt="image"
src="https://github.com/user-attachments/assets/f894ec2d-0769-4f6d-8ad3-13b3e6b2b5cc"
/>

<img width="2292" height="1672" alt="image"
src="https://github.com/user-attachments/assets/403bce30-c9a2-44ec-a783-cf65c1fa2bd9"
/>



### How Has This Been Tested?

1- Disable the NFS and ISCSI protocol on svm and checked the storage
pool creation: It threw the appropriate error on UI, below is the
screenshot
2- Enable the NFS and ISCSI protocol on svm: Storage pool creation went
fine


#### How did you try to break this feature and the system with this
change?

<!-- see how your change affects other areas of the code, etc. -->

<!-- Please read the
[CONTRIBUTING](https://github.com/apache/cloudstack/blob/main/CONTRIBUTING.md)
document -->

Co-authored-by: Gupta, Surya <Surya.Gupta@netapp.com>
@winterhazel

Copy link
Copy Markdown
Member

@piyush5netapp and @rajiv-jain-netapp, could you have a look at the pending comments?

@rajiv-jain-netapp commented about providing responses to some of them, but I did not receive any responses, maybe they were added to a review and not submitted?

@nvazquez nvazquez left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks @rajiv-jain-netapp please find a first round of review comments

@rajiv-jain-netapp

Copy link
Copy Markdown
Author

@nvazquez took care of your comments, please check and confirm further.

@nvazquez nvazquez left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks @rajiv-jain-netapp - code LGTM

@rajiv-jain-netapp

Copy link
Copy Markdown
Author

Thanks @rajiv-jain-netapp - code LGTM

thank you @nvazquez

List<VolumeVO> volumes = volumeDao.findByInstance(vmId);
for (VolumeVO volume : volumes) {
StoragePoolVO storagePoolVO = storagePool.findById(volume.getPoolId());
if (storagePoolVO.isManaged() && DataStoreProvider.ONTAP_PLUGIN_NAME.equals(storagePoolVO.getStorageProviderName())) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

@rajiv-jain-netapp
This check is used in several places, so it would be good to extract it into a separate method.

I also noticed that NetworkFileSystem or Iscsi storage pools are created (#12563). However, as you've pointed out, CloudStack supports many operations on traditional NFS storage, and some of those operations are not supported by NetApp ONTAP.

Have you considered introducing a new storage pool type, for example NetAppNFS or NetAppIscsi ? That might make it easier to distinguish the capabilities and handle NetApp-specific behavior.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

@rajiv-jain-netapp
I am not sure if you saw this comment

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Hi @weizhouapache , we have it pipelined for this task of adding NetApp-specific protocols. IN the interest of deadlines for 4.23. We proceeded with default protocols.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

@nvazquez

Copy link
Copy Markdown
Contributor

Thanks @rajiv-jain-netapp, in addition to this PR can you please raise a documentation PR to the repository https://github.com/apache/cloudstack-documentation?

@ingox

ingox commented Jun 15, 2026

Copy link
Copy Markdown
Collaborator

Hi @rajiv-jain-netapp,

I'm interested in how this works.

What hypervisors are supported for iSCSI? KVM as well?

Is a separate volume being created for each disk in CloudStack?

Best regards,
Ingo

@rajiv-jain-netapp

Copy link
Copy Markdown
Author

Hi @rajiv-jain-netapp,

I'm interested in how this works.

What hypervisors are supported for iSCSI? KVM as well?

Is a separate volume being created for each disk in CloudStack?

Best regards, Ingo

Hey @ingox , thanks for the comment.
What hypervisors are supported for iSCSI? KVM as well?
[Rajiv] yes KVM hypervisor would be enabled and supported with iSCSI.

Is a separate volume being created for each disk in CloudStack?
[Rajiv] For iSCSI, a LUN is created for each CloudStack volume (disk), whereas for NFS, the corresponding entity is created as a file. Based on customer feedback and beta validation, we plan to introduce additional flexibility to allow users to choose whether a dedicated storage volume should be provisioned for each CloudStack volume (disk).

@ingox

ingox commented Jun 16, 2026

Copy link
Copy Markdown
Collaborator

Hi @rajiv-jain-netapp,
I'm interested in how this works.
What hypervisors are supported for iSCSI? KVM as well?
Is a separate volume being created for each disk in CloudStack?
Best regards, Ingo

Hey @ingox , thanks for the comment. What hypervisors are supported for iSCSI? KVM as well? [Rajiv] yes KVM hypervisor would be enabled and supported with iSCSI.

Is a separate volume being created for each disk in CloudStack? [Rajiv] For iSCSI, a LUN is created for each CloudStack volume (disk), whereas for NFS, the corresponding entity is created as a file. Based on customer feedback and beta validation, we plan to introduce additional flexibility to allow users to choose whether a dedicated storage volume should be provisioned for each CloudStack volume (disk).

@rajiv-jain-netapp thank you for your reply. How about DR and snap mirror functionality? Is it possible to group a number of disks to a protection group and mirror them to the DR side? Those disks can be all disks of a host or all the disks of all hosts which belong to one system (like App server, DB server, ...)

@rajiv-jain-netapp

Copy link
Copy Markdown
Author

Update: We are working on documentation in parallel. Meanwhile, wanted to check in case any further comments for us to address for approval, followed by a merge.

@nvazquez

Copy link
Copy Markdown
Contributor

Thanks @rajiv-jain-netapp so far there is only one pending review comment: #13053 (comment), can you please check it?

@venkythegreat

Copy link
Copy Markdown

Thanks @rajiv-jain-netapp so far there is only one pending review comment: #13053 (comment), can you please check it?

Rajiv responded to this above.. Apologies , it was in draft state and not committed.

@weizhouapache

Copy link
Copy Markdown
Member

Hi @weizhouapache , we have it pipelined for this task of adding NetApp-specific protocols. IN the interest of deadlines for 4.23. We proceeded with default protocols.

thanks @rajiv-jain-netapp for the reply.

From a long-term maintenance perspective, I think introducing new storage pool types would be preferable. That said, I understand the time constraints for this release.

If you decide to keep the current implementation for now, I am fine with it. I do hope you can revisit and improve this in the next release.

cc @DaanHoogland @harikrishna-patnala

@rajiv-jain-netapp

rajiv-jain-netapp commented Jun 26, 2026

Copy link
Copy Markdown
Author

Hi @rajiv-jain-netapp,
I'm interested in how this works.
What hypervisors are supported for iSCSI? KVM as well?
Is a separate volume being created for each disk in CloudStack?
Best regards, Ingo

Hey @ingox , thanks for the comment. What hypervisors are supported for iSCSI? KVM as well? [Rajiv] yes KVM hypervisor would be enabled and supported with iSCSI.
Is a separate volume being created for each disk in CloudStack? [Rajiv] For iSCSI, a LUN is created for each CloudStack volume (disk), whereas for NFS, the corresponding entity is created as a file. Based on customer feedback and beta validation, we plan to introduce additional flexibility to allow users to choose whether a dedicated storage volume should be provisioned for each CloudStack volume (disk).

@rajiv-jain-netapp thank you for your reply. How about DR and snap mirror functionality? Is it possible to group a number of disks to a protection group and mirror them to the DR side? Those disks can be all disks of a host or all the disks of all hosts which belong to one system (like App server, DB server, ...)
@ingox Yes, I have one extension to the snapshot workflows to come soon, And this would seed the DR solutions in the subsequent releases.

@rajiv-jain-netapp

Copy link
Copy Markdown
Author

Hi @weizhouapache , we have it pipelined for this task of adding NetApp-specific protocols. IN the interest of deadlines for 4.23. We proceeded with default protocols.

thanks @rajiv-jain-netapp for the reply.

From a long-term maintenance perspective, I think introducing new storage pool types would be preferable. That said, I understand the time constraints for this release.

If you decide to keep the current implementation for now, I am fine with it. I do hope you can revisit and improve this in the next release.

cc @DaanHoogland @harikrishna-patnala

yes @weizhouapache , we will add types and update all with the next set of features.

@DaanHoogland

Copy link
Copy Markdown
Contributor

From a long-term maintenance perspective, I think introducing new storage pool types would be preferable. That said, I understand the time constraints for this release.

If you decide to keep the current implementation for now, I am fine with it. I do hope you can revisit and improve this in the next release.

cc @DaanHoogland @harikrishna-patnala

all good for my sake, @weizhouapache . cc @winterhazel

@weizhouapache

Copy link
Copy Markdown
Member

@nvazquez @winterhazel
could you please check if your comments have been addressed ?

please let me know if this PR is good to you.

@nvazquez

Copy link
Copy Markdown
Contributor

Yes @weizhouapache all good from my side, have previously approved: #13053 (review)

@weizhouapache weizhouapache left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

code lgtm

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.