Skip to content

Commit 80a8b80

Browse files
authored
Update volume's passphrase to null if diskOffering doesn't support encryption (#8904)
1 parent e409c6d commit 80a8b80

File tree

4 files changed

+10
-11
lines changed

4 files changed

+10
-11
lines changed

engine/api/src/main/java/org/apache/cloudstack/engine/orchestration/service/VolumeOrchestrationService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ public interface VolumeOrchestrationService {
8585
VolumeInfo moveVolume(VolumeInfo volume, long destPoolDcId, Long destPoolPodId, Long destPoolClusterId, HypervisorType dataDiskHyperType)
8686
throws ConcurrentOperationException, StorageUnavailableException;
8787

88-
Volume allocateDuplicateVolume(Volume oldVol, Long templateId);
88+
Volume allocateDuplicateVolume(Volume oldVol, DiskOffering diskOffering, Long templateId);
8989

9090
boolean volumeOnSharedStoragePool(Volume volume);
9191

engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -305,11 +305,11 @@ public VolumeInfo moveVolume(VolumeInfo volumeInfo, long destPoolDcId, Long dest
305305
}
306306

307307
@Override
308-
public Volume allocateDuplicateVolume(Volume oldVol, Long templateId) {
309-
return allocateDuplicateVolumeVO(oldVol, templateId);
308+
public Volume allocateDuplicateVolume(Volume oldVol, DiskOffering diskOffering, Long templateId) {
309+
return allocateDuplicateVolumeVO(oldVol, diskOffering, templateId);
310310
}
311311

312-
public VolumeVO allocateDuplicateVolumeVO(Volume oldVol, Long templateId) {
312+
public VolumeVO allocateDuplicateVolumeVO(Volume oldVol, DiskOffering diskOffering, Long templateId) {
313313
VolumeVO newVol = new VolumeVO(oldVol.getVolumeType(), oldVol.getName(), oldVol.getDataCenterId(), oldVol.getDomainId(), oldVol.getAccountId(), oldVol.getDiskOfferingId(),
314314
oldVol.getProvisioningType(), oldVol.getSize(), oldVol.getMinIops(), oldVol.getMaxIops(), oldVol.get_iScsiName());
315315
if (templateId != null) {
@@ -321,8 +321,7 @@ public VolumeVO allocateDuplicateVolumeVO(Volume oldVol, Long templateId) {
321321
newVol.setInstanceId(oldVol.getInstanceId());
322322
newVol.setRecreatable(oldVol.isRecreatable());
323323
newVol.setFormat(oldVol.getFormat());
324-
325-
if (oldVol.getPassphraseId() != null) {
324+
if ((diskOffering == null || diskOffering.getEncrypt()) && oldVol.getPassphraseId() != null) {
326325
PassphraseVO passphrase = passphraseDao.persist(new PassphraseVO(true));
327326
newVol.setPassphraseId(passphrase.getId());
328327
}
@@ -1180,7 +1179,7 @@ protected VolumeVO switchVolume(final VolumeVO existingVolume, final VirtualMach
11801179
return Transaction.execute(new TransactionCallback<VolumeVO>() {
11811180
@Override
11821181
public VolumeVO doInTransaction(TransactionStatus status) {
1183-
VolumeVO newVolume = allocateDuplicateVolumeVO(existingVolume, templateIdToUseFinal);
1182+
VolumeVO newVolume = allocateDuplicateVolumeVO(existingVolume, null, templateIdToUseFinal);
11841183
try {
11851184
stateTransitTo(existingVolume, Volume.Event.DestroyRequested);
11861185
} catch (NoTransitionException e) {

engine/storage/volume/src/main/java/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1236,7 +1236,7 @@ private void destroyAndReallocateManagedVolume(VolumeInfo volumeInfo) {
12361236

12371237
volumeInfo.processEvent(Event.DestroyRequested);
12381238

1239-
Volume newVol = _volumeMgr.allocateDuplicateVolume(volume, null);
1239+
Volume newVol = _volumeMgr.allocateDuplicateVolume(volume, null, null);
12401240
VolumeVO newVolume = (VolumeVO) newVol;
12411241
newVolume.set_iScsiName(null);
12421242
volDao.update(newVolume.getId(), newVolume);

server/src/main/java/com/cloud/vm/UserVmManagerImpl.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7863,19 +7863,19 @@ public Pair<UserVmVO, Volume> doInTransaction(final TransactionStatus status) th
78637863
Volume newVol = null;
78647864
if (newTemplateId != null) {
78657865
if (isISO) {
7866-
newVol = volumeMgr.allocateDuplicateVolume(root, null);
7866+
newVol = volumeMgr.allocateDuplicateVolume(root, diskOffering, null);
78677867
userVm.setIsoId(newTemplateId);
78687868
userVm.setGuestOSId(template.getGuestOSId());
78697869
userVm.setTemplateId(newTemplateId);
78707870
} else {
7871-
newVol = volumeMgr.allocateDuplicateVolume(root, newTemplateId);
7871+
newVol = volumeMgr.allocateDuplicateVolume(root, diskOffering, newTemplateId);
78727872
userVm.setGuestOSId(template.getGuestOSId());
78737873
userVm.setTemplateId(newTemplateId);
78747874
}
78757875
// check and update VM if it can be dynamically scalable with the new template
78767876
updateVMDynamicallyScalabilityUsingTemplate(userVm, newTemplateId);
78777877
} else {
7878-
newVol = volumeMgr.allocateDuplicateVolume(root, null);
7878+
newVol = volumeMgr.allocateDuplicateVolume(root, diskOffering, null);
78797879
}
78807880

78817881
updateVolume(newVol, template, userVm, diskOffering, details);

0 commit comments

Comments
 (0)