From a71874682c4c94eed3f17216d260cc3d57214a85 Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Fri, 31 Jan 2020 15:24:26 +0530 Subject: [PATCH] server: fix checking disk offering access for snapshot volume (#3791) Fixes #3783 As reported in the issue, creating volumes from pure snapshot fails with NPE. This is due to order of calls where disk offering access is checked before checking disk offering value. This PR fixes the same. Signed-off-by: Abhishek Kumar --- .../src/main/java/com/cloud/storage/VolumeApiServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java b/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java index ddd84137ad9..e6022513508 100644 --- a/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java +++ b/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java @@ -673,8 +673,6 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic zoneId = snapshotCheck.getDataCenterId(); } - _configMgr.checkDiskOfferingAccess(null, diskOffering, _dcDao.findById(zoneId)); - if (diskOffering == null) { // Pure snapshot is being used to create volume. diskOfferingId = snapshotCheck.getDiskOfferingId(); diskOffering = _diskOfferingDao.findById(diskOfferingId); @@ -689,6 +687,8 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic } } + _configMgr.checkDiskOfferingAccess(null, diskOffering, _dcDao.findById(zoneId)); + // check snapshot permissions _accountMgr.checkAccess(caller, null, true, snapshotCheck);