Skip to content

Commit 82c36ca

Browse files
Gupta, SuryaGupta, Surya
authored andcommitted
CSTACKEX-16 Fix issue for lunClone
1 parent bcc9c1a commit 82c36ca

File tree

2 files changed

+11
-7
lines changed

2 files changed

+11
-7
lines changed

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

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -525,6 +525,7 @@ public void takeSnapshot(SnapshotInfo snapshot, AsyncCompletionCallback<CreateCm
525525
s_logger.error("takeSnapshot : Storage Pool not found for id: " + volumeVO.getPoolId());
526526
throw new CloudRuntimeException("takeSnapshot : Storage Pool not found for id: " + volumeVO.getPoolId());
527527
}
528+
s_logger.info("takeSnapshot: storagePool: {}", storagePool.toString());
528529

529530
Map<String, String> poolDetails = storagePoolDetailsDao.listDetailsKeyPairs(volumeVO.getPoolId());
530531
StorageStrategy storageStrategy = Utility.getStrategyByStoragePoolDetails(poolDetails);
@@ -636,7 +637,7 @@ private CloudStackVolume snapshotCloudStackVolumeRequestByProtocol(Map<String, S
636637
ProtocolType protocolType = null;
637638
String protocol = null;
638639
long size = 0L;
639-
String snapshotName = snapshotInfo.getName();
640+
String snapshotName = null;
640641
String lunName = null;
641642

642643
try {
@@ -645,15 +646,17 @@ private CloudStackVolume snapshotCloudStackVolumeRequestByProtocol(Map<String, S
645646
if (ProtocolType.ISCSI.name().equalsIgnoreCase(details.get(Constants.PROTOCOL))) {
646647
size = cloudStackVolume.getLun().getSpace().getSize();
647648
lunName = cloudStackVolume.getLun().getName();
648-
if(snapshotName == null || snapshotName.isEmpty()) {
649-
snapshotName = lunName + "-snapshot-" + snapshotInfo.getUuid();
649+
if(snapshotInfo.getName() == null || snapshotInfo.getName().isEmpty()) {
650+
snapshotName = Constants.VOL + storagePool.getName() + Constants.SLASH + lunName + "-snapshot-" + snapshotInfo.getUuid();
650651
s_logger.info("snapshotCloudStackVolumeRequestByProtocol: size: {} ", size);
651652
s_logger.info("snapshotCloudStackVolumeRequestByProtocol: lunName: {} ", lunName);
652653
s_logger.info("snapshotCloudStackVolumeRequestByProtocol: snapshotName: {} ", snapshotName);
653-
int trimRequired = snapshotName.length() - Constants.MAX_SNAPSHOT_NAME_LENGTH;
654-
if (trimRequired > 0) {
655-
snapshotName = StringUtils.left(lunName, (lunName.length() - trimRequired)) + "-" + snapshotInfo.getUuid();
656-
}
654+
} else {
655+
snapshotName = Constants.VOL + storagePool.getName() + Constants.SLASH + snapshotInfo.getName();
656+
}
657+
int trimRequired = snapshotName.length() - Constants.MAX_SNAPSHOT_NAME_LENGTH;
658+
if (trimRequired > 0) {
659+
snapshotName = StringUtils.left(lunName, (lunName.length() - trimRequired)) + "-" + snapshotInfo.getUuid();
657660
}
658661
}
659662
s_logger.info("snapshotCloudStackVolumeRequestByProtocol: snapshotName after trim: {} ", snapshotName);

plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/utils/Constants.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public class Constants {
2929
public static final int MAX_SNAPSHOT_NAME_LENGTH = 256;
3030

3131
public static final String CREATE = "create";
32+
public static final String VOL = "/vol/";
3233
public static final String SRC_CS_VOLUME_ID = "src_cs_volume_id";
3334
public static final String BASE_ONTAP_FV_ID = "base_ontap_fv_id";
3435
public static final String ONTAP_SNAP_ID = "ontap_snap_id";

0 commit comments

Comments
 (0)