CloudStack Volume support with ONTAP storage#13053
Conversation
… added EOF fixes + correcting license header
Initial primary storage pool plugin skeleton
…POJOs" This reverts commit fe0f752.
…POJOs" This reverts commit 28faca1.
Feignconfiguration and volume feignClient along with desired POJOs with cstack 28
* CSTACKEX-29 Cluster, SVM and Aggr Feign Client * CSTACKEX-29 Change the endpoint method name in feign client * CSTACKEX-29 Make the alignment proper * CSTACKEX-29 Added License Info * CSTACKEX-29 Resolve Review Comments * CSTACKEX-29 Remove Component Annotation from datastoredriverclass * CSTACKEX-29 Resolve Style check issues * CSTACKEX-29 Resolve ALL Style issues * CSTACKEX-29 Resolve Precommits Issues * CSTACKEX-29 Added Method comments and change the ontap response class name --------- Co-authored-by: Gupta, Surya <Surya.Gupta@netapp.com>
* CSTACKEX-31 NAS and Job Feign Client and POJOs * CSTACKEX-31 Fixed Checks Issues * CSTACKEX-31 Resolve Review Comments * CSTACKEX-31 Resolve Review Comments * CSTACKEX-31 Resolve Review Comments * CSTACKEX-31 Added Aggr and size to volume model * CSTACKEX-31 Change the export policy endpoint path * CSTACKEX-31 Fixed check styles --------- Co-authored-by: Gupta, Surya <Surya.Gupta@netapp.com>
* CSTACKEX-30 SAN Feign Client * CSTACKEX-30 Fixed check style issues * CSTACKEX-30 Fixed review comments --------- Co-authored-by: Gupta, Surya <Surya.Gupta@netapp.com>
* CSTACKEX-7: ONTAP Primary storage pool --------- Co-authored-by: Locharla, Sandeep <Sandeep.Locharla@netapp.com>
CSTACKEX-34: Upgrade to framework classes design
* CSTACKEX-35 Create Async * CSTACKEX-35 Added Null and empty check * CSTACKEX-35 Resolved review comments * CSTACKEX-35 Removed Type Casting for logger --------- Co-authored-by: Gupta, Surya <Surya.Gupta@netapp.com>
* CSTACKEX-1: Feign changes and fixes for getting storage pool creation to work * CSTACKEX-01: Create Primary Storage pool changes with working code * CSTACKEX-01: Addressed all review comments and updated some code * CSTACKEX-01: Made some changes to fix some errors seen during testing * CSTACKEX-01: Addressed additional comments --------- Co-authored-by: Locharla, Sandeep <Sandeep.Locharla@netapp.com>
|
@nvazquez took care of your comments, please check and confirm further. |
nvazquez
left a comment
There was a problem hiding this comment.
Thanks @rajiv-jain-netapp - code LGTM
thank you @nvazquez |
| List<VolumeVO> volumes = volumeDao.findByInstance(vmId); | ||
| for (VolumeVO volume : volumes) { | ||
| StoragePoolVO storagePoolVO = storagePool.findById(volume.getPoolId()); | ||
| if (storagePoolVO.isManaged() && DataStoreProvider.ONTAP_PLUGIN_NAME.equals(storagePoolVO.getStorageProviderName())) { |
There was a problem hiding this comment.
@rajiv-jain-netapp
This check is used in several places, so it would be good to extract it into a separate method.
I also noticed that NetworkFileSystem or Iscsi storage pools are created (#12563). However, as you've pointed out, CloudStack supports many operations on traditional NFS storage, and some of those operations are not supported by NetApp ONTAP.
Have you considered introducing a new storage pool type, for example NetAppNFS or NetAppIscsi ? That might make it easier to distinguish the capabilities and handle NetApp-specific behavior.
There was a problem hiding this comment.
@rajiv-jain-netapp
I am not sure if you saw this comment
There was a problem hiding this comment.
Hi @weizhouapache , we have it pipelined for this task of adding NetApp-specific protocols. IN the interest of deadlines for 4.23. We proceeded with default protocols.
|
Thanks @rajiv-jain-netapp, in addition to this PR can you please raise a documentation PR to the repository https://github.com/apache/cloudstack-documentation? |
|
I'm interested in how this works. What hypervisors are supported for iSCSI? KVM as well? Is a separate volume being created for each disk in CloudStack? Best regards, |
Hey @ingox , thanks for the comment. Is a separate volume being created for each disk in CloudStack? |
@rajiv-jain-netapp thank you for your reply. How about DR and snap mirror functionality? Is it possible to group a number of disks to a protection group and mirror them to the DR side? Those disks can be all disks of a host or all the disks of all hosts which belong to one system (like App server, DB server, ...) |
|
Update: We are working on documentation in parallel. Meanwhile, wanted to check in case any further comments for us to address for approval, followed by a merge. |
|
Thanks @rajiv-jain-netapp so far there is only one pending review comment: #13053 (comment), can you please check it? |
Rajiv responded to this above.. Apologies , it was in draft state and not committed. |
thanks @rajiv-jain-netapp for the reply. From a long-term maintenance perspective, I think introducing new storage pool types would be preferable. That said, I understand the time constraints for this release. If you decide to keep the current implementation for now, I am fine with it. I do hope you can revisit and improve this in the next release. |
|
yes @weizhouapache , we will add types and update all with the next set of features. |
all good for my sake, @weizhouapache . cc @winterhazel |
|
@nvazquez @winterhazel please let me know if this PR is good to you. |
|
Yes @weizhouapache all good from my side, have previously approved: #13053 (review) |
The new changes look good to me, and the overall code as well. There's just a few comments that I think could still be addressed here. #13053 (comment) - comment not matching the constant's value. It would be nice to confirm whether the constant's value is indeed the expected one and correct this comment if so. |
|
@winterhazel Correct me if this is what you are trying to suggest as per my understanding on this comment #13053 (comment) - We are doing volumeInfo.get_iScsiName() in VolumeServiceImpl.createManagedVolumeCopyTemplateAsync whose value is set during OntapPrimaryDatastoreDriver.grantAccess from db. Instead of setting details.put(PrimaryDataStore.MANAGED_STORE_TARGET, managedStoreTarget) using that value, set the PrimaryDataStore.MANAGED_STORE_TARGET in OntapPrimaryDatastoreDriver.grantAccess itself. This will save one db call happening in VolumeServiceImpl.createManagedVolumeCopyTemplateAsync right ? If yes, I had 2 reasons of not pursuing that-
My understanding was that the vendor should be responsible for updating the right data in volume fields like iscsi_name, path , pool_type etc instead of setting key,value in details map which can be used by orchestrator code. Let me know if I misunderstood something. |
We have responded to all the comments, |
Thanks, the map-related ones make sense, so I resolved them. Also, I have submitted a reply to #13053 (comment) if you could have a look.
Right, this is what I suggested initially.
Your points make sense from an architectural view, but we've got an exception here anyways in which the core will need to perform an extra step for all providers to set this detail due to how a single vendor works. Alternatively, can we move |
Description
Co-authored-by: Sandeep Locharla sandeep.locharla@netapp.com
Co-authored-by: Piyush Srivastava piyush5@netapp.com
Co-authored-by: Surya Gupta suryag@netapp.com
This PR...
1. memory snapshot
2. user input for quicing option during snapshot creation
Types of changes
Feature/Enhancement Scale or Bug Severity
Feature/Enhancement Scale
Bug Severity
Screenshots (if appropriate):
How Has This Been Tested?
Testing Done:
How did you try to break this feature and the system with this change?