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>
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 |
@winterhazel Good suggestion. I will try this out today but we need sometime to test our workflows with this change. Also we are raising a subsequent PR most probably today/tomorrow . If you don't have concern, can I inlcude this change in that PR buying the time to test workflows till that. This is what you are suggesting. |
…loudstack and ontap supported scenarios
Yes, exactly.
Ok, it is not a critical concern, so fine for me. Please test whether things still work as expected with the refactor and include it in the subsequent PR. @weizhouapache everything ok from my side on this one. |
|
@blueorangutan package |
|
@winterhazel 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. |
|
Packaging result [SF]: ✖️ el8 ✖️ el9 ✖️ debian ✖️ suse15. SL-JID 18433 |
|
@rajiv-jain-netapp @piyush5netapp there is a test failure: |
checking, and will fix it in next 1 hour |
…ilot comments fixes.
Fixed, please try now |
| params['details[0].storageIP'] = values.ontapIP | ||
| params['details[0].username'] = values.ontapUsername | ||
| params['details[0].password'] = btoa(values.ontapPassword) | ||
| params['details[0].svmName'] = values.ontapSvmName | ||
| params['details[0].protocol'] = values.protocol | ||
| values.managed = true | ||
| url = this.ontapURL(values.ontapIP) |
| params['details[0].storageIP'] = this.prefillContent.ontapIP | ||
| params['details[0].username'] = this.prefillContent.ontapUsername | ||
| params['details[0].password'] = btoa(this.prefillContent.ontapPassword) | ||
| params['details[0].svmName'] = this.prefillContent.ontapSvmName | ||
| params['details[0].protocol'] = this.prefillContent.primaryStorageProtocol |
| try { | ||
| AccessGroup accessGroupRequest = new AccessGroup(); | ||
| accessGroupRequest.setHostsToConnect(hostsToConnect); | ||
| accessGroupRequest.setScope(scope); | ||
| accessGroupRequest.setStoragePoolId(storagePool.getId()); | ||
| strategy.createAccessGroup(accessGroupRequest); |
| for (HostVO host : hosts) { | ||
| String hostStorageIp = host.getStorageIpAddress(); | ||
| String ip = (hostStorageIp != null && !hostStorageIp.isEmpty()) | ||
| ? hostStorageIp | ||
| : host.getPrivateIpAddress(); | ||
| String ipToUse = ip + "/31"; | ||
| String ipToUse = ip + "/32"; | ||
| ExportRule.ExportClient exportClient = new ExportRule.ExportClient(); | ||
| exportClient.setMatch(ipToUse); | ||
| exportClients.add(exportClient); |
| }catch (Exception e) { | ||
| logger.error("createCloudStackVolume: error occured " + e); | ||
| throw new CloudRuntimeException(e); | ||
| } |
| } catch (Exception e) { | ||
| logger.error("createVolumeOnKVMHost: Exception sending CreateObjectCommand", e); | ||
| return new Answer(null, false, e.toString()); | ||
| } |
|
@blueorangutan package |
|
@winterhazel 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. |
|
Packaging result [SF]: ✔️ el8 ✔️ el9 ✔️ el10 ✔️ debian ✔️ suse15. SL-JID 18438 |
|
@blueorangutan test |
|
@DaanHoogland a [SL] Trillian-Jenkins test job (ol8 mgmt + kvm-ol8) has been kicked to run smoke tests |
|
[SF] Trillian test result (tid-16470)
|
|
@weizhouapache @winterhazel , good to merge? |
@winterhazel I tried this but instance creation failed . This is because Netapp ONTAP updates/set iScsiName in grantAccess, so we need to refresh the volumeInfo object again to take latest data here. Its currently taking old data. Does Moving grantAcess above line "ManagedCreateBaseImageContext context = new ManagedCreateBaseImageContext<>(null, volumeInfo, primaryDataStore, srcTemplateInfo, future);" will have any side-effect for any vendor ? |
@piyush5netapp I missed this crucial detail :( Moving I think we can leave this code the way it is organized now then. I would just add a check to perform this extra refresh only if the ONTAP plugin is being used, like: ...
grantAccess(volumeInfo, destHost, primaryDataStore);
if (DataStoreProvider.ONTAP_PLUGIN_NAME.equals(primaryDataStore.getStorageProviderName())) {
// For Netapp ONTAP iscsiName or Lun path is available only after grantAccess
volumeInfo = volFactory.getVolume(volumeInfo.getId(), primaryDataStore);
String managedStoreTarget = ObjectUtils.defaultIfNull(volumeInfo.get_iScsiName(), volumeInfo.getUuid());
details.put(PrimaryDataStore.MANAGED_STORE_TARGET, managedStoreTarget);
primaryDataStore.setDetails(details);
}
try {
motionSrv.copyAsync(srcTemplateInfo, destTemplateInfo, destHost, caller);
...
@DaanHoogland I think so. Let's just wait for @piyush5netapp to check the suggestion above. |
@winterhazel I think the plugin check will work . I will do the change in subsequent PR. Let's not hold this PR for this suggestion to test as its not a critical concern. In the meantime, I have started making change. |
@piyush5netapp ok, thanks. |
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?