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 Rajiv.Jain@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
isDisaggregated Must be false for now

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.

…ary StoragePool with ONTAP storage

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

codecov bot commented Feb 1, 2026

Codecov Report

❌ Patch coverage is 4.41586% with 2749 lines in your changes missing coverage. Please review.
✅ Project coverage is 17.83%. Comparing base (7b94ccc) to head (3a2c43b).
⚠️ Report is 11 commits behind head on main.

Files with missing lines Patch % Lines
...he/cloudstack/storage/service/StorageStrategy.java 0.35% 280 Missing ⚠️
...rage/lifecycle/OntapPrimaryDatastoreLifecycle.java 30.24% 209 Missing and 17 partials ⚠️
...cloudstack/storage/service/UnifiedNASStrategy.java 0.00% 200 Missing ⚠️
...org/apache/cloudstack/storage/feign/model/Lun.java 0.00% 196 Missing ⚠️
...cloudstack/storage/service/UnifiedSANStrategy.java 0.00% 186 Missing ⚠️
...pache/cloudstack/storage/feign/model/FileInfo.java 0.00% 175 Missing ⚠️
.../apache/cloudstack/storage/feign/model/Igroup.java 0.00% 155 Missing ⚠️
...che/cloudstack/storage/feign/model/ExportRule.java 0.00% 108 Missing ⚠️
...e/cloudstack/storage/feign/FeignConfiguration.java 0.00% 89 Missing ⚠️
...cloudstack/storage/listener/OntapHostListener.java 0.00% 85 Missing ⚠️
... and 32 more
Additional details and impacted files
@@             Coverage Diff              @@
##               main   #12563      +/-   ##
============================================
- Coverage     17.89%   17.83%   -0.07%     
- Complexity    16084    16110      +26     
============================================
  Files          5936     5979      +43     
  Lines        532635   535610    +2975     
  Branches      65148    65370     +222     
============================================
+ Hits          95298    95506     +208     
- Misses       426667   429410    +2743     
- Partials      10670    10694      +24     
Flag Coverage Δ
uitests 3.68% <ø> (+<0.01%) ⬆️
unittests 18.92% <4.41%> (-0.08%) ⬇️

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.

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