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>
…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. |
|
ok, I’ve already seen newer related PRs and as CODEOWNERS are added and smoke tests pass, i’m merging. |
|
Awesome work, congrats on your first merged pull request! |
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?