Skip to content

Enabling NetApp ONTAP storage pool resize (grow and shrink) - #14200

Draft
sathvikaragi wants to merge 1 commit into
apache:mainfrom
NetApp:netapp-ontap-resize-storage-pool
Draft

sathvikaragi wants to merge 1 commit into
apache:mainfrom
NetApp:netapp-ontap-resize-storage-pool

Conversation

@sathvikaragi

@sathvikaragi sathvikaragi commented Sep 18, 2026

Copy link
Copy Markdown

storage pool resize (Grow and shrink)

This PR...

This also includes UT's.

  • 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)

  • Major

  • [] Minor

  • BLOCKER

  • Critical

  • Major

  • Minor

  • Trivial

change?

Description

This PR...

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?

storage pool resize (Grow and shrink)

This PR...
<!--- Describe your changes in DETAIL - And how has behaviour
functionally changed. -->
[updateStoragePool] API now resizes the ONTAP FlexVolume backing the
pool. When called with a new [capacityBytes], StorageManagerImpl
(previously never called the lifecycle hook) now invokes
[OntapPrimaryDatastoreLifecycle.updateStoragePool()], which calls the
ONTAP REST API
(PATCH /api/storage/volumes/{uuid}) and polls the async job to
completion. No validation is applied — the new size is passed directly
to ONTAP, which enforces all constraints and returns any errors as-is.

This also includes UT's.

<!-- 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 -->
<!---
*******************************************************************************
-->

- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [x] 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)

- [x] Major
- [] Minor

- [ ] BLOCKER
- [ ] Critical
- [ ] Major
- [ ] Minor
- [ ] Trivial

 the flex volume is created with size  20GiB:
<img width="1550" height="870" alt="Screenshot 2026-08-07 at 2 53 44 PM"
src="https://github.com/user-attachments/assets/b312f4ec-b4b7-420a-9b1e-81e392a882c4"
/>

case 1: when A valid input for resize is filled by user:

<img width="1458" height="681" alt="Screenshot 2026-08-07 at 2 54 17 PM"
src="https://github.com/user-attachments/assets/bb0caf98-df9b-4d6f-ae76-0ca4f7659a0f"
/>

<img width="1255" height="736" alt="Screenshot 2026-08-07 at 2 54 44 PM"
src="https://github.com/user-attachments/assets/7c0b8f49-213f-4163-971a-3a39c1d49936"
/>

after successful resize:
<img width="1555" height="836" alt="Screenshot 2026-08-07 at 3 23 15 PM"
src="https://github.com/user-attachments/assets/b7de8bfb-d8ca-4983-ae58-6c0c2503d943"
/>

case 2: capacity bytes given is smaller than ontap volume minimum size
<img width="1476" height="846" alt="Screenshot 2026-08-07 at 2 49 58 PM"
src="https://github.com/user-attachments/assets/a670be26-ab86-4e79-be50-86dd68bf39e9"
/>

case 3: capacity bytes given is smaller than ontap volume maximum size
<img width="1469" height="874" alt="Screenshot 2026-08-07 at 2 52 11 PM"
src="https://github.com/user-attachments/assets/da10b5c8-f9a3-4651-a1c2-404a908f4832"
/>

UT's for it :
Ran just the update storage pool tests in storagestrategytest and
primarydatastorelifecycletest
<img width="856" height="773" alt="Screenshot 2026-08-14 at 4 07 37 PM"
src="https://github.com/user-attachments/assets/b3d23c36-b635-48da-9403-aad5cd5685a6"
/>

Ran all tests in both the files:
<img width="868" height="788" alt="Screenshot 2026-08-14 at 4 09 12 PM"
src="https://github.com/user-attachments/assets/956e7c0c-190c-478f-be79-5a77623cb0bc"
/>

<!-- Please describe in detail how you tested your changes. -->
<!-- Include details of your testing environment, and the tests you ran
to -->

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