Skip to content

Introduction of Netapp Ontap iSCSI pool type - #14192

Open
piyush5netapp wants to merge 2 commits into
apache:mainfrom
NetApp:ontap-new-iscsi-pool-type
Open

piyush5netapp wants to merge 2 commits into
apache:mainfrom
NetApp:ontap-new-iscsi-pool-type

Conversation

@piyush5netapp

@piyush5netapp piyush5netapp commented Sep 17, 2026

Copy link
Copy Markdown
Contributor

Description

This PR introduces the new pool type "OntapiSCSI" for Netapp Ontap. We have also introduced the management as well as agent side of code to support this new pool type.

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?

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

@piyush5netapp
piyush5netapp marked this pull request as ready for review September 17, 2026 11:09
@winterhazel winterhazel added this to the 24.0 milestone Sep 19, 2026
@piyush5netapp

Copy link
Copy Markdown
Contributor Author

@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.

Copilot AI 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.

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 High severity · 1 Medium severity

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);
!(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

codecov Bot commented Sep 21, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 66.66667% with 12 lines in your changes missing coverage. Please review.
✅ Project coverage is 19.92%. Comparing base (27722a5) to head (58d70a2).
⚠️ Report is 11 commits behind head on main.

Files with missing lines Patch % Lines
...ck/storage/driver/OntapPrimaryDatastoreDriver.java 70.83% 2 Missing and 5 partials ⚠️
...torage/motion/StorageSystemDataMotionStrategy.java 0.00% 2 Missing ⚠️
...ud/hypervisor/kvm/storage/KVMStorageProcessor.java 0.00% 2 Missing ⚠️
server/src/main/java/com/cloud/api/ApiDBUtils.java 0.00% 1 Missing ⚠️
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     
Flag Coverage Δ
uitests 3.71% <ø> (ø)
unittests 21.19% <66.66%> (+0.01%) ⬆️

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

☔ View full report in Codecov by Harness.
📢 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.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

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.

3 participants