Skip to content

Conversation

@sandeeplocharla
Copy link

@sandeeplocharla sandeeplocharla commented Feb 1, 2026

Create & Delete, Enable & Disable, Enter & Cancel maintenance of Primary StoragePool with ONTAP storage

Co-authored-by: Rajiv Jain rajiv1@netapp.com
Co-authored-by: Piyush Srivastava piyush5@netapp.com
Co-authored-by: Surya Gupta suryag@netapp.com

Description

NetApp ONTAP Storage Plugin

Introduction

This document describes in brief the design and implementation of the NetApp ONTAP storage plugin for Apache CloudStack. The plugin enables CloudStack to use NetApp ONTAP as a primary storage provider.

ONTAP Terminology

Term Description
SVM Storage Virtual Machine - a logical storage container that provides data access to clients
FlexVolume A logical volume that can grow or shrink within an aggregate
Aggregate A collection of physical disks that provides storage for volumes
LIF Logical Interface - a network interface for client access (Management LIF for admin, Data LIF for storage traffic)
iGroup Initiator Group - a collection of host initiator IQNs used for iSCSI access control
Export Policy A set of rules that define NFS client access to volumes

Scope

Current Implementation

The following operations are currently implemented:

Operation Description
Create Primary Storage Pool Creates a FlexVolume on ONTAP and registers it as a primary storage pool in CloudStack
Delete Primary Storage Pool Removes the storage pool from CloudStack and deletes the FlexVolume from ONTAP
Attach Cluster/Zone Creates access groups (iGroups for iSCSI, export policies for NFS) and connects hosts
Enable/Disable Storage Pool Enables or disables the storage pool for use
Enter/Cancel Maintenance Places storage pool in maintenance mode or brings it back online

Supported Configurations

Configuration Supported Values
Hypervisor KVM
ONTAP Platform Unified
Protocols NFS 3.0, iSCSI
Storage Pool Scope Cluster, Zone

Storage Pool Lifecycle

Create Storage Pool

  1. Validate input parameters (SVM, protocol, credentials)
  2. Connect to ONTAP and verify SVM state and protocol enablement
  3. Create FlexVolume on ONTAP
  4. Register storage pool in CloudStack

Attach to Cluster/Zone

  1. Identify eligible hosts in the scope
  2. Create access group (iGroup or export policy)
  3. Connect each host to the storage pool

Delete Storage Pool

  1. Delete access groups from ONTAP
  2. Delete FlexVolume from ONTAP
  3. Remove storage pool from CloudStack

Configuration Parameters

Parameters are passed via URL in semicolon-separated key=value format:

Parameter Description
username ONTAP admin username
password ONTAP admin password
managementLIF ONTAP cluster management IP
svmName Storage Virtual Machine name
protocol NFS3 or ISCSI

There are few files under feign folder which aren't currently being consumed by the workflows being proposed for review. But, they are definitely required for upcoming workflows.

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

How Has This Been Tested?

  1. Management Server Operations:

    • Added a new zone using the Management server UI.
    • Verified functionality of core and advanced zone types.
  2. Primary Storage Pool Operations:

    • Create: Verified creation of primary storage pool.
    • Delete: Verified deletion of primary storage pool.
    • Enable/Disable: Tested enabling and disabling the storage pool.
    • Maintenance Mode: Verified entering and exiting maintenance mode.
    • Cancel Maintenance: Ensured maintenance cancellation works.

Testing Environment:

  • The test setup was conducted on an Ubuntu VM with the following components installed and configured:
    • Management server
    • Cloudstack agent and KVM
    • NFS server
    • iSCSI initiator
  • Testing has been done currently with a single host.
  • Following are snapshots from the test done:
    NFS3 Primary Storage Pool - Create
Screenshot 2026-02-02 at 4 40 22 PM Screenshot 2026-02-02 at 4 40 40 PM

NFS3 type ONTAP Volume created

Screenshot 2026-02-02 at 4 41 33 PM

Export Policy created on ONTAP

Screenshot 2026-02-02 at 4 43 18 PM

Disabled Primary Storage Pool - NFS3

Screenshot 2026-02-02 at 4 43 49 PM

Re-Enabled Primary Storage Pool - NFS3

Screenshot 2026-02-02 at 4 43 57 PM

Enter maintenance mode - NFS3

Screenshot 2026-02-02 at 4 44 23 PM

Cancel maintenance mode - NFS3

Screenshot 2026-02-02 at 4 44 38 PM

Delete Primary StoragePool - NFS3

Screenshot 2026-02-02 at 4 45 13 PM

ONTAP Volume deleted

Screenshot 2026-02-02 at 4 45 35 PM

ONTAP ExportPolicy deleted

Screenshot 2026-02-02 at 4 45 45 PM

iSCSI Primary Storage Pool - Delete

Screenshot 2026-02-02 at 4 47 05 PM Screenshot 2026-02-02 at 4 47 18 PM

iSCSI type ONTAP Volume created

Screenshot 2026-02-02 at 4 47 42 PM

iGroup created

Screenshot 2026-02-02 at 4 48 18 PM

Disabled Primary Storage Pool - iSCSI

Screenshot 2026-02-02 at 4 48 47 PM

Re-Enabled Primary Storage Pool - iSCSI

Screenshot 2026-02-02 at 4 48 58 PM

Enter maintenance mode - iSCSI

Screenshot 2026-02-02 at 4 49 09 PM

Cancel maintenance mode - iSCSI

Screenshot 2026-02-02 at 4 49 23 PM

Delete Primary StoragePool - iSCSI

Screenshot 2026-02-02 at 4 49 48 PM

ONTAP iGroup deleted

Screenshot 2026-02-02 at 4 50 52 PM

ONTAP Volume deleted

Screenshot 2026-02-02 at 4 51 10 PM

@codecov
Copy link

codecov bot commented Feb 1, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 3.68%. Comparing base (a5b6bc3) to head (c98cf8c).

❗ There is a different number of reports uploaded between BASE (a5b6bc3) and HEAD (c98cf8c). Click for more details.

HEAD has 1 upload less than BASE
Flag BASE (a5b6bc3) HEAD (c98cf8c)
unittests 1 0
Additional details and impacted files
@@              Coverage Diff              @@
##               main   #12563       +/-   ##
=============================================
- Coverage     17.89%    3.68%   -14.22%     
=============================================
  Files          5936      452     -5484     
  Lines        532734    38385   -494349     
  Branches      65165     7102    -58063     
=============================================
- Hits          95347     1414    -93933     
+ Misses       426711    36784   -389927     
+ Partials      10676      187    -10489     
Flag Coverage Δ
uitests 3.68% <ø> (ø)
unittests ?

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.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@sandeeplocharla sandeeplocharla force-pushed the netapp-ontap-primary-storage-pool branch 2 times, most recently from c495c7c to 20d4e97 Compare February 2, 2026 12:55
@sandeeplocharla sandeeplocharla marked this pull request as ready for review February 2, 2026 14:05
@sandeeplocharla sandeeplocharla force-pushed the netapp-ontap-primary-storage-pool branch from 20d4e97 to c98cf8c Compare February 2, 2026 14:12
@kiranchavala
Copy link
Contributor

@blueorangutan package

@blueorangutan
Copy link

@kiranchavala a [SL] Jenkins job has been kicked to build packages. It will be bundled with no SystemVM templates. I'll keep you posted as I make progress.

@blueorangutan
Copy link

Packaging result [SF]: ✔️ el8 ✔️ el9 ✔️ el10 ✖️ debian ✔️ suse15. SL-JID 16683

@kiranchavala
Copy link
Contributor

@blueorangutan test

@blueorangutan
Copy link

@kiranchavala a [SL] Trillian-Jenkins test job (ol8 mgmt + kvm-ol8) has been kicked to run smoke tests

@DaanHoogland DaanHoogland added this to the 4.23.0 milestone Feb 3, 2026
@DaanHoogland
Copy link
Contributor

Hey @sandeeplocharla et al,

Great work, some issues came up in the github actions. Can you first look at the license check and the pre-commit actions?
thanks for the extensive test description as well. We cannot guarantee 3rd party testing as I hope you understand. I’ll be sure to review your work and thanks again.

@sandeeplocharla
Copy link
Author

Hi @DaanHoogland
Thank you! I'm trying to understand the errors. For us to have more clarity, could you please help us understand in brief on what is being checked in the tests that failed?

@rajiv-jain-netapp
Copy link

Hey @sandeeplocharla et al,

Great work, some issues came up in the github actions. Can you first look at the license check and the pre-commit actions? thanks for the extensive test description as well. We cannot guarantee 3rd party testing as I hope you understand. I’ll be sure to review your work and thanks again.

Thank you, @DaanHoogland. We look forward to receiving your review comments and will address them as soon as possible.

@sandeeplocharla sandeeplocharla force-pushed the netapp-ontap-primary-storage-pool branch from c98cf8c to 08b53f0 Compare February 3, 2026 10:44
Locharla, Sandeep added 2 commits February 3, 2026 17:28
…ary StoragePool with ONTAP storage

Co-authored-by: Rajiv Jain <Rajiv.Jain@netapp.com>

Create & Delete, Enable & Disable, Enter & Cancel maintenance of Primary StoragePool with ONTAP storage
Co-authored-by: Rajiv Jain<rajiv1@netapp.com>

Edited readme file
@sandeeplocharla sandeeplocharla force-pushed the netapp-ontap-primary-storage-pool branch from 08b53f0 to b1792b4 Compare February 3, 2026 11:58
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.

5 participants