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 [email protected]

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
…ary StoragePool with ONTAP storage

Co-authored-by: Rajiv Jain <[email protected]>

Create & Delete, Enable & Disable, Enter & Cancel maintenance of Primary StoragePool with ONTAP storage
Co-authored-by: Rajiv Jain<[email protected]>

Edited readme file
@sandeeplocharla sandeeplocharla force-pushed the netapp-ontap-primary-storage-pool branch from 20d4e97 to c98cf8c Compare February 2, 2026 14:12
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.

1 participant