Repository navigation
Introduction of Netapp Ontap iSCSI pool type - #14192
piyush5netapp wants to merge 7 commits into
Conversation
|
@winterhazel @weizhouapache I have raised this PR for the introduction of new iscsi pool type for Netapp ONTAP. I remember you guys were also of the same opinion for a new pool type for Netapp ONTAP as part of some previous PR.. Please have a look at this PR and share your feedback. |
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Existing pools can break after upgrade, unsupported format validation can orphan LUNs, and template creation still rejects RAW ONTAP iSCSI volumes.
Get a fresh assessment by requesting another Copilot review.
Review effort: Lite
Findings: 2
Open (3)
What changed in this PR
Adds OntapiSCSI as a first-class ONTAP iSCSI storage-pool type across management, KVM agent, and data-motion paths.
Changes:
- Adds the new pool enum and lifecycle mapping.
- Adds KVM adaptor and RAW image-format handling.
- Extends validation and tests for ONTAP iSCSI behavior.
| File | Description |
|---|---|
api/src/main/java/com/cloud/storage/Storage.java |
Defines OntapiSCSI. |
server/src/main/java/com/cloud/api/ApiDBUtils.java |
Recognizes RAW ONTAP images. |
plugins/storage/volume/ontap/src/main/java/.../OntapPrimaryDatastoreLifecycle.java |
Maps iSCSI pools to the new type. |
plugins/storage/volume/ontap/src/main/java/.../OntapPrimaryDatastoreDriver.java |
Validates protocols and assigns formats. |
plugins/hypervisors/kvm/src/main/java/.../OntapIscsiStorageAdaptor.java |
Registers the KVM adaptor. |
plugins/hypervisors/kvm/src/main/java/.../KVMStorageProcessor.java |
Handles RAW ONTAP pools. |
engine/storage/datamotion/src/main/java/.../StorageSystemDataMotionStrategy.java |
Allows RAW ONTAP migration formats. |
api/src/test/java/com/cloud/storage/StorageTest.java |
Tests pool capabilities. |
plugins/storage/volume/ontap/src/test/java/.../OntapPrimaryDatastoreLifecycleTest.java |
Tests pool initialization. |
plugins/storage/volume/ontap/src/test/java/.../OntapPrimaryDatastoreDriverTest.java |
Tests format and validation behavior. |
plugins/hypervisors/kvm/src/test/java/.../OntapIscsiStorageAdaptorTest.java |
Tests adaptor discovery and RAW behavior. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
|
||
| volumeVO.setPoolType(storagePool.getPoolType()); | ||
| volumeVO.setPoolId(storagePool.getId()); | ||
| volumeVO.setFormat(getImageFormat(storagePool)); |
| break; | ||
| case ISCSI: | ||
| parameters.setType(Storage.StoragePoolType.Iscsi); | ||
| parameters.setType(Storage.StoragePoolType.OntapiSCSI); |
There was a problem hiding this comment.
@weizhouapache I have already considered this migration path and I am ready with the sql command. I currently dont see the upgrade code from 4.23.0.0 to 4.24.0.0 . I have that code almost ready with me. One thing I want to confirm is about the format of new release version i.e 4.24.0.0 or 24.0.0. since filename will be named accordingly.
There was a problem hiding this comment.
should the upgrade also fix the volumes on these pools? they keep the old pool type and still say qcow2, while new ones are raw
There was a problem hiding this comment.
yes, volumes on these pools as well pool both the field will be updated with the new value . I will tag you there once I raise the PR for the reviews.
There was a problem hiding this comment.
the 24.0.0 upgrade file is on main now (schema-42300to2400.sql). can we add the pool and volume update here? if this merges first, existing pools cant create volumes after an upgrade
| !(imageFormat == ImageFormat.RAW && (StoragePoolType.PowerFlex == poolType || | ||
| StoragePoolType.FiberChannel == poolType))) { | ||
| throw new CloudRuntimeException(String.format("Only the following image types are currently supported: %s, %s, %s, %s (for PowerFlex and FiberChannel)", | ||
| StoragePoolType.FiberChannel == poolType || StoragePoolType.OntapiSCSI == poolType))) { |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #14192 +/- ##
============================================
+ Coverage 19.91% 19.92% +0.01%
- Complexity 20175 20192 +17
============================================
Files 6372 6373 +1
Lines 577139 577168 +29
Branches 70682 70689 +7
============================================
+ Hits 114913 114982 +69
+ Misses 449664 449618 -46
- Partials 12562 12568 +6
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
Moving this back to draft PR as some more modification has been done on this. Will update and open for review again in few days. |
#115) ### Description enabling VM snapshot for ISCSI stopped vm's in UI using ontapiSCSI pool type This PR... <!--- Describe your changes in DETAIL - And how has behaviour functionally changed. --> <!-- 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 - [ ] Major - [ ] Minor #### Bug Severity - [ ] BLOCKER - [ ] Critical - [ ] Major - [X] Minor - [ ] Trivial ### Screenshots (if appropriate): ### How Has This Been Tested? 1) created a ISCSI vm and stopped IT 2) Took a snapshot in stopped state 3) powered On the VM then created a file on it and write in to it. 4) Powered of the vm and reverted to snapshot that was taken when it was in stopped state 5) after revert verified that file and contents are gone before reverting: <img width="724" height="159" alt="Screenshot 2026-10-08 at 12 03 39 PM" src="https://github.com/user-attachments/assets/3f5861d2-fde9-4775-9f07-2a778d16dd03" /> after reverting: <img width="825" height="475" alt="Screenshot 2026-10-08 at 12 02 09 PM" src="https://github.com/user-attachments/assets/b515bc19-e582-4850-90c6-e7628cfc9486" /> <!-- Please describe in detail how you tested your changes. --> <!-- Include details of your testing environment, and the tests you ran to --> #### 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 -->
…r serial number and by-id instead of by-path
…ap as new adapter for ontap exist now
@winterhazel @weizhouapache @nvazquez This PR is ready for review now. |
…p-new-iscsi-pool-type
…o OntapiSCSI (#128) ### Description This PR... <!--- Describe your changes in DETAIL - And how has behaviour functionally changed. --> <!-- 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) - [ ] 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? Storage pools before id name uuid pool_type scope path host_address port 1 cstack37.rtp.openenglab.netapp.com-local-26314b73 26314b73-6271-485a-b468-6d1591ca5438 Filesystem HOST /var/lib/libvirt/images 10.193.56.46 0 2 PM1 fe64543f-8ef0-3cc4-ba33-748a08497e4d NetworkFilesystem CLUSTER /export/primary 10.193.56.46 2049 3 cs_SAN1_423 9b339bfb-24d0-426f-8985-ac5390b7ae8a Iscsi CLUSTER iqn.1992-08.com.netapp:sn.45048fd9b65111f1b106005056bd83cf:vs.3 10.196.37.157 3260 4 cs_NFS1_423 5fa73067-a701-4f47-9c38-843d6290af8a NetworkFilesystem CLUSTER /cs_NFS1_423 10.196.37.149 2049 Volumes before id name volume_type state path pool_type pool_name 1 ROOT-1 ROOT Ready 3725f3ad-a19e-46be-b55f-d8912164ab2c Filesystem cstack37.rtp.openenglab.netapp.com-local-26314b73 2 ROOT-3 ROOT Ready 63ce314d-c174-42ce-976c-53a3f095ef9c Filesystem cstack37.rtp.openenglab.netapp.com-local-26314b73 5 ROOT-5 ROOT Ready b56bbff3-b9ba-47fd-83a0-be5ce073a2bd Filesystem cstack37.rtp.openenglab.netapp.com-local-26314b73 6 ROOT-6 ROOT Ready /iqn.1992-08.com.netapp:sn.45048fd9b65111f1b106005056bd83cf:vs.3/0 Iscsi cs_SAN1_423 7 DATA-6 DATADISK Ready /iqn.1992-08.com.netapp:sn.45048fd9b65111f1b106005056bd83cf:vs.3/1 Iscsi cs_SAN1_423 8 ROOT-7 ROOT Ready 6eb5387e-079a-48ee-bc8c-8a16c4e7f811 NetworkFilesystem cs_NFS1_423 9 DATA-7 DATADISK Ready 4f678975-5f23-4759-8a03-7ed5edfd422a NetworkFilesystem cs_NFS1_423 10 ROOT-8 ROOT Ready 49ebd17a-a59e-4508-8e71-31b533478a06 NetworkFilesystem PM1 11 DATA-8 DATADISK Ready 280512d8-41e8-4661-8007-1edd393ec0ff NetworkFilesystem PM1 12 ROOT-9 ROOT Ready 043ce7b1-cf32-4230-91b0-16f24955c3a5 NetworkFilesystem cs_NFS1_423 13 DATA-9 DATADISK Ready /iqn.1992-08.com.netapp:sn.45048fd9b65111f1b106005056bd83cf:vs.3/2 Iscsi cs_SAN1_423 14 ROOT-10 ROOT Ready 74bb224d-a3e0-45f9-b2ef-003b672548bf NetworkFilesystem PM1 15 DATA-10 DATADISK Ready /iqn.1992-08.com.netapp:sn.45048fd9b65111f1b106005056bd83cf:vs.3/3 Iscsi cs_SAN1_423 Volume_details before volume_id name value 3 lun.name /vol/cs_SAN1_423/ROOT_4 3 lun.uuid 21c4eea8-1763-4214-b925-d127c13c2176 6 lun.name /vol/cs_SAN1_423/ROOT_6 6 lun.uuid 42aa41e2-98f4-48bf-a6f0-11b1c446a3c7 7 lun.name /vol/cs_SAN1_423/DATA_6 7 lun.uuid 69b04101-92e1-4a34-8866-26306f3c99dd 13 lun.name /vol/cs_SAN1_423/DATA_9 13 lun.uuid e1ff542c-0b6a-475f-b54f-2e334ab33e88 15 lun.name /vol/cs_SAN1_423/DATA_10 15 lun.uuid 1f921951-c004-4c31-a8f8-7cec346aa34a Version gate + upgrade class fired (from MS log) 2026-10-15 17:32:36,360 INFO [c.c.u.DatabaseUpgradeChecker] (main:[]) (logid:) DB version = 4.23.0.0 Code Version = 24.0.0 2026-10-15 17:32:36,837 DEBUG [c.c.u.DatabaseUpgradeChecker] (main:[]) (logid:) Running upgrade Upgrade42300to2400 to upgrade from 4.23.0.0-24.0.0 to 24.0.0 2026-10-15 17:32:36,855 INFO [c.c.u.DatabaseUpgradeChecker] (main:[]) (logid:) Cleanup upgrade Upgrade42300to24000 to upgrade from 4.23.0.0-24.0.0 to 24.0.0 2026-10-15 17:32:36,856 DEBUG [c.c.u.DatabaseUpgradeChecker] (main:[]) (logid:) Cleanup script Upgrade42300to2400 is executed successfully 2026-10-15 17:32:38,122 DEBUG [c.c.u.d.Upgrade42300to24000] (main:[]) (logid:) Updating System Vm template IDs DB version after id version updated step 53 24.0.0 2026-10-15 12:02:36 Complete 52 4.23.0.0 2026-09-23 16:58:36 Complete 51 4.22.1.0 2026-09-23 16:58:30 Complete 50 4.22.0.0 2026-09-23 16:58:29 Complete 49 4.21.0.0 2026-09-23 16:58:28 Complete Storage pools after (iSCSI pool must be OntapiSCSI) id name pool_type scope storage_provider_name 1 cstack37.rtp.openenglab.netapp.com-local-26314b73 Filesystem HOST DefaultPrimary 2 PM1 NetworkFilesystem CLUSTER DefaultPrimary 3 cs_SAN1_423 OntapiSCSI CLUSTER NetApp ONTAP 4 cs_NFS1_423 NetworkFilesystem CLUSTER NetApp ONTAP Volumes after (iSCSI vols must be OntapiSCSI + RAW) id name volume_type state v_pool_type format path sp_pool_type pool_name 1 ROOT-1 ROOT Ready Filesystem QCOW2 3725f3ad-a19e-46be-b55f-d8912164ab2c Filesystem cstack37.rtp.openenglab.netapp.com-local-26314b73 2 ROOT-3 ROOT Ready Filesystem QCOW2 63ce314d-c174-42ce-976c-53a3f095ef9c Filesystem cstack37.rtp.openenglab.netapp.com-local-26314b73 5 ROOT-5 ROOT Ready Filesystem QCOW2 b56bbff3-b9ba-47fd-83a0-be5ce073a2bd Filesystem cstack37.rtp.openenglab.netapp.com-local-26314b73 6 ROOT-6 ROOT Ready OntapiSCSI RAW /iqn.1992-08.com.netapp:sn.45048fd9b65111f1b106005056bd83cf:vs.3/600a098078304d2d383f2f6b45734c67 OntapiSCSI cs_SAN1_423 7 DATA-6 DATADISK Ready OntapiSCSI RAW /iqn.1992-08.com.netapp:sn.45048fd9b65111f1b106005056bd83cf:vs.3/600a098078304d2d383f2f6b45734c68 OntapiSCSI cs_SAN1_423 8 ROOT-7 ROOT Ready NetworkFilesystem QCOW2 6eb5387e-079a-48ee-bc8c-8a16c4e7f811 NetworkFilesystem cs_NFS1_423 9 DATA-7 DATADISK Ready NetworkFilesystem QCOW2 4f678975-5f23-4759-8a03-7ed5edfd422a NetworkFilesystem cs_NFS1_423 10 ROOT-8 ROOT Ready NetworkFilesystem QCOW2 49ebd17a-a59e-4508-8e71-31b533478a06 NetworkFilesystem PM1 11 DATA-8 DATADISK Ready NetworkFilesystem QCOW2 280512d8-41e8-4661-8007-1edd393ec0ff NetworkFilesystem PM1 12 ROOT-9 ROOT Ready NetworkFilesystem QCOW2 043ce7b1-cf32-4230-91b0-16f24955c3a5 NetworkFilesystem cs_NFS1_423 13 DATA-9 DATADISK Ready OntapiSCSI RAW /iqn.1992-08.com.netapp:sn.45048fd9b65111f1b106005056bd83cf:vs.3/600a098078304d2d383f2f6b45734c69 OntapiSCSI cs_SAN1_423 14 ROOT-10 ROOT Ready NetworkFilesystem QCOW2 74bb224d-a3e0-45f9-b2ef-003b672548bf NetworkFilesystem PM1 15 DATA-10 DATADISK Ready OntapiSCSI RAW /iqn.1992-08.com.netapp:sn.45048fd9b65111f1b106005056bd83cf:vs.3/600a098078304d2d383f2f6b45734c6a OntapiSCSI cs_SAN1_423 Volume_details after (lun.* preserved + new lun.serial_number) volume_id name value 3 lun.name /vol/cs_SAN1_423/ROOT_4 3 lun.uuid 21c4eea8-1763-4214-b925-d127c13c2176 6 lun.name /vol/cs_SAN1_423/ROOT_6 6 lun.serial_number x0M-8?/kEsLg 6 lun.uuid 42aa41e2-98f4-48bf-a6f0-11b1c446a3c7 7 lun.name /vol/cs_SAN1_423/DATA_6 7 lun.serial_number x0M-8?/kEsLh 7 lun.uuid 69b04101-92e1-4a34-8866-26306f3c99dd 13 lun.name /vol/cs_SAN1_423/DATA_9 13 lun.serial_number x0M-8?/kEsLi 13 lun.uuid e1ff542c-0b6a-475f-b54f-2e334ab33e88 15 lun.name /vol/cs_SAN1_423/DATA_10 15 lun.serial_number x0M-8?/kEsLj 15 lun.uuid 1f921951-c004-4c31-a8f8-7cec346aa34a <!-- Please describe in detail how you tested your changes. --> <!-- Include details of your testing environment, and the tests you ran to --> #### 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: Srivastava, Piyush <Piyush.Srivastava@netapp.com>


Description
This PR does covers below mentioned things
Types of changes
Feature/Enhancement Scale or Bug Severity
Feature/Enhancement Scale
Bug Severity
Screenshots (if appropriate):
How Has This Been Tested?
All the VM, volume workflows has been tested for Netapp ONTAP provider. Compute only migration of a Live VM has been tested.
How did you try to break this feature and the system with this change?