Skip to content

Commit 3a324c6

Browse files
Merge pull request #57 from NetApp/feature/CSTACKEX-183-pr-v2
CSTACKEX-183: Incorporated subsequent comments
2 parents be4c241 + c3f521f commit 3a324c6

3 files changed

Lines changed: 13 additions & 64 deletions

File tree

plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/driver/OntapPrimaryDatastoreDriver.java

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -147,12 +147,12 @@ public void createAsync(DataStore dataStore, DataObject dataObject, AsyncComplet
147147
if (dataObject.getType() == DataObjectType.VOLUME) {
148148
VolumeInfo volInfo = (VolumeInfo) dataObject;
149149

150-
// Create the backend storage object (LUN for iSCSI, no-op for NFS)
151-
CloudStackVolume created = createCloudStackVolume(storagePool, volInfo, details);
152-
153150
// Update CloudStack volume record with storage pool association and protocol-specific details
154151
VolumeVO volumeVO = volumeDao.findById(volInfo.getId());
155152
if (volumeVO != null) {
153+
// Create the backend storage object (LUN for iSCSI, no-op for NFS)
154+
CloudStackVolume created = createCloudStackVolume(storagePool, volInfo, details);
155+
156156
volumeVO.setPoolType(storagePool.getPoolType());
157157
volumeVO.setPoolId(storagePool.getId());
158158

@@ -723,12 +723,15 @@ private String resolveVolumePathOnOntap(VolumeVO volumeVO, String protocol, Map<
723723
return volumeVO.getPath();
724724
} else if (ProtocolType.ISCSI.name().equalsIgnoreCase(protocol)) {
725725
// For iSCSI, retrieve the LUN name from volume details
726-
String lunName = volumeDetailsDao.findDetail(volumeVO.getId(), OntapStorageConstants.LUN_DOT_NAME) != null ?
727-
volumeDetailsDao.findDetail(volumeVO.getId(), OntapStorageConstants.LUN_DOT_NAME).getValue() : null;
728-
if (lunName == null) {
729-
throw new CloudRuntimeException("No LUN name found for volume " + volumeVO.getId());
730-
}
731-
return lunName;
726+
VolumeDetailVO volumeDetails = volumeDetailsDao.findDetail(volumeVO.getId(), OntapStorageConstants.LUN_DOT_NAME);
727+
728+
if(volumeDetails != null) {
729+
String lunName = volumeDetails.getValue();
730+
if (lunName == null) {
731+
throw new CloudRuntimeException("No LUN name found for volume " + volumeVO.getId());
732+
}
733+
return lunName;
734+
}
732735
}
733736
throw new CloudRuntimeException("Unsupported protocol " + protocol);
734737
}

plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/StorageStrategy.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,6 @@ public void deleteStorageVolume(Volume volume) {
339339
logger.info("Deleting ONTAP volume by name: " + volume.getName() + " and uuid: " + volume.getUuid());
340340
String authHeader = OntapStorageUtils.generateAuthHeader(storage.getUsername(), storage.getPassword());
341341
try {
342-
// TODO: Implement lun and file deletion, if any, before deleting the volume
343342
JobResponse jobResponse = volumeFeignClient.deleteVolume(authHeader, volume.getUuid());
344343
Boolean jobSucceeded = jobPollForSuccess(jobResponse.getJob().getUuid(), 10, 1000);
345344
if (!jobSucceeded) {

plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/service/UnifiedNASStrategy.java

Lines changed: 1 addition & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ public CloudStackVolume getCloudStackVolume(Map<String, String> cloudStackVolume
123123
CloudStackVolume cloudStackVolume = null;
124124
FileInfo fileInfo = getFile(cloudStackVolumeMap.get(OntapStorageConstants.VOLUME_UUID),cloudStackVolumeMap.get(OntapStorageConstants.FILE_PATH));
125125

126-
if (fileInfo != null){
126+
if (fileInfo != null) {
127127
cloudStackVolume = new CloudStackVolume();
128128
cloudStackVolume.setFlexVolumeUuid(cloudStackVolumeMap.get(OntapStorageConstants.VOLUME_UUID));
129129
cloudStackVolume.setFile(fileInfo);
@@ -298,59 +298,6 @@ private void assignExportPolicyToVolume(String volumeUuid, String policyName) {
298298
}
299299
}
300300

301-
private boolean deleteFile(String volumeUuid, String filePath) {
302-
logger.info("deleteFile: Deleting file: {} from volume: {}", filePath, volumeUuid);
303-
try {
304-
String authHeader = OntapStorageUtils.generateAuthHeader(storage.getUsername(), storage.getPassword());
305-
nasFeignClient.deleteFile(authHeader, volumeUuid, filePath);
306-
logger.info("deleteFile: File deleted successfully: {} from volume: {}", filePath, volumeUuid);
307-
return true;
308-
} catch (FeignException e) {
309-
logger.error("deleteFile: Failed to delete file: {} from volume: {}", filePath, volumeUuid, e);
310-
return false;
311-
} catch (Exception e) {
312-
logger.error("deleteFile: Exception while deleting file: {} from volume: {}", filePath, volumeUuid, e);
313-
return false;
314-
}
315-
}
316-
317-
private OntapResponse<FileInfo> getFileInfo(String volumeUuid, String filePath) {
318-
logger.debug("getFileInfo: Getting file info for: {} in volume: {}", filePath, volumeUuid);
319-
try {
320-
String authHeader = OntapStorageUtils.generateAuthHeader(storage.getUsername(), storage.getPassword());
321-
OntapResponse<FileInfo> response = nasFeignClient.getFileResponse(authHeader, volumeUuid, filePath);
322-
logger.debug("getFileInfo: Retrieved file info for: {} in volume: {}", filePath, volumeUuid);
323-
return response;
324-
} catch (FeignException e){
325-
if (e.status() == 404) {
326-
logger.debug("getFileInfo: File not found: {} in volume: {}", filePath, volumeUuid);
327-
return null;
328-
}
329-
logger.error("getFileInfo: Failed to get file info: {} in volume: {}", filePath, volumeUuid, e);
330-
throw new CloudRuntimeException("Failed to get file info: " + e.getMessage());
331-
} catch (Exception e){
332-
logger.error("getFileInfo: Exception while getting file info: {} in volume: {}", filePath, volumeUuid, e);
333-
throw new CloudRuntimeException("Failed to get file info: " + e.getMessage());
334-
}
335-
}
336-
337-
private boolean updateFile(String volumeUuid, String filePath, FileInfo fileInfo) {
338-
logger.info("updateFile: Updating file: {} in volume: {}", filePath, volumeUuid);
339-
try {
340-
String authHeader = OntapStorageUtils.generateAuthHeader(storage.getUsername(), storage.getPassword());
341-
nasFeignClient.updateFile( authHeader, volumeUuid, filePath, fileInfo);
342-
logger.info("updateFile: File updated successfully: {} in volume: {}", filePath, volumeUuid);
343-
return true;
344-
} catch (FeignException e) {
345-
logger.error("updateFile: Failed to update file: {} in volume: {}", filePath, volumeUuid, e);
346-
return false;
347-
} catch (Exception e){
348-
logger.error("updateFile: Exception while updating file: {} in volume: {}", filePath, volumeUuid, e);
349-
return false;
350-
}
351-
}
352-
353-
354301
private ExportPolicy createExportPolicyRequest(AccessGroup accessGroup,String svmName , String volumeName){
355302

356303
String exportPolicyName = OntapStorageUtils.generateExportPolicyName(svmName,volumeName);

0 commit comments

Comments
 (0)