This is an automated email from the ASF dual-hosted git repository.

shwstppr pushed a commit to branch 4.18
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/4.18 by this push:
     new ce586e3eca5 server: fix resource count during assign volume (#8171)
ce586e3eca5 is described below

commit ce586e3eca5c7f471c2a78facb41092de0f82d72
Author: Abhishek Kumar <[email protected]>
AuthorDate: Mon Dec 11 15:45:42 2023 +0530

    server: fix resource count during assign volume (#8171)
    
    ResourceType.volume stores the count of the volume and not the size so 
increment decrement should be just 1 when assigning a volume to a different 
account.
---
 server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java   | 7 +++----
 .../src/test/java/com/cloud/storage/VolumeApiServiceImplTest.java  | 7 +++----
 2 files changed, 6 insertions(+), 8 deletions(-)

diff --git a/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java 
b/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java
index 69f455d4774..06f6fcc8c2a 100644
--- a/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java
+++ b/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java
@@ -100,7 +100,6 @@ import 
org.apache.cloudstack.storage.datastore.db.StoragePoolDetailsDao;
 import org.apache.cloudstack.storage.datastore.db.VolumeDataStoreDao;
 import org.apache.cloudstack.storage.datastore.db.VolumeDataStoreVO;
 import org.apache.cloudstack.storage.image.datastore.ImageStoreEntity;
-import org.apache.cloudstack.utils.bytescale.ByteScaleUtils;
 import org.apache.cloudstack.utils.identity.ManagementServerNode;
 import org.apache.cloudstack.utils.imagestore.ImageStoreUtil;
 import 
org.apache.cloudstack.utils.reflectiontostringbuilderutils.ReflectionToStringBuilderUtils;
@@ -3784,7 +3783,7 @@ public class VolumeApiServiceImpl extends ManagerBase 
implements VolumeApiServic
         _accountMgr.checkAccess(caller, null, true, oldAccount);
         _accountMgr.checkAccess(caller, null, true, newAccount);
 
-        _resourceLimitMgr.checkResourceLimit(newAccount, ResourceType.volume, 
ByteScaleUtils.bytesToGibibytes(volume.getSize()));
+        _resourceLimitMgr.checkResourceLimit(newAccount, ResourceType.volume);
         _resourceLimitMgr.checkResourceLimit(newAccount, 
ResourceType.primary_storage, volume.getSize());
 
         Transaction.execute(new TransactionCallbackNoReturn() {
@@ -3800,14 +3799,14 @@ public class VolumeApiServiceImpl extends ManagerBase 
implements VolumeApiServic
     protected void updateVolumeAccount(Account oldAccount, VolumeVO volume, 
Account newAccount) {
         UsageEventUtils.publishUsageEvent(EventTypes.EVENT_VOLUME_DELETE, 
volume.getAccountId(), volume.getDataCenterId(), volume.getId(), 
volume.getName(),
                 Volume.class.getName(), volume.getUuid(), 
volume.isDisplayVolume());
-        _resourceLimitMgr.decrementResourceCount(oldAccount.getAccountId(), 
ResourceType.volume, ByteScaleUtils.bytesToGibibytes(volume.getSize()));
+        _resourceLimitMgr.decrementResourceCount(oldAccount.getAccountId(), 
ResourceType.volume);
         _resourceLimitMgr.decrementResourceCount(oldAccount.getAccountId(), 
ResourceType.primary_storage, volume.getSize());
 
         volume.setAccountId(newAccount.getAccountId());
         volume.setDomainId(newAccount.getDomainId());
         _volsDao.persist(volume);
 
-        _resourceLimitMgr.incrementResourceCount(newAccount.getAccountId(), 
ResourceType.volume, ByteScaleUtils.bytesToGibibytes(volume.getSize()));
+        _resourceLimitMgr.incrementResourceCount(newAccount.getAccountId(), 
ResourceType.volume);
         _resourceLimitMgr.incrementResourceCount(newAccount.getAccountId(), 
ResourceType.primary_storage, volume.getSize());
 
         UsageEventUtils.publishUsageEvent(EventTypes.EVENT_VOLUME_CREATE, 
volume.getAccountId(), volume.getDataCenterId(), volume.getId(), 
volume.getName(),
diff --git 
a/server/src/test/java/com/cloud/storage/VolumeApiServiceImplTest.java 
b/server/src/test/java/com/cloud/storage/VolumeApiServiceImplTest.java
index 35b69cf82e4..cc408245d0d 100644
--- a/server/src/test/java/com/cloud/storage/VolumeApiServiceImplTest.java
+++ b/server/src/test/java/com/cloud/storage/VolumeApiServiceImplTest.java
@@ -63,7 +63,6 @@ import 
org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
 import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
 import org.apache.cloudstack.storage.datastore.db.VolumeDataStoreDao;
 import org.apache.cloudstack.storage.datastore.db.VolumeDataStoreVO;
-import org.apache.cloudstack.utils.bytescale.ByteScaleUtils;
 import org.apache.commons.collections.CollectionUtils;
 import org.junit.After;
 import org.junit.Assert;
@@ -119,8 +118,8 @@ import com.cloud.user.ResourceLimitService;
 import com.cloud.user.User;
 import com.cloud.user.UserVO;
 import com.cloud.user.dao.AccountDao;
-import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.utils.db.TransactionLegacy;
+import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.utils.fsm.NoTransitionException;
 import com.cloud.vm.UserVmManager;
 import com.cloud.vm.UserVmVO;
@@ -1413,7 +1412,7 @@ public class VolumeApiServiceImplTest {
         UsageEventUtils.publishUsageEvent(EventTypes.EVENT_VOLUME_DELETE, 
volumeVoMock.getAccountId(), volumeVoMock.getDataCenterId(), 
volumeVoMock.getId(),
                 volumeVoMock.getName(), Volume.class.getName(), 
volumeVoMock.getUuid(), volumeVoMock.isDisplayVolume());
 
-        
Mockito.verify(resourceLimitServiceMock).decrementResourceCount(accountMock.getAccountId(),
 ResourceType.volume, ByteScaleUtils.bytesToGibibytes(volumeVoMock.getSize()));
+        
Mockito.verify(resourceLimitServiceMock).decrementResourceCount(accountMock.getAccountId(),
 ResourceType.volume);
         
Mockito.verify(resourceLimitServiceMock).decrementResourceCount(accountMock.getAccountId(),
 ResourceType.primary_storage, volumeVoMock.getSize());
 
         
Mockito.verify(volumeVoMock).setAccountId(newAccountMock.getAccountId());
@@ -1421,7 +1420,7 @@ public class VolumeApiServiceImplTest {
 
         Mockito.verify(volumeDaoMock).persist(volumeVoMock);
 
-        
Mockito.verify(resourceLimitServiceMock).incrementResourceCount(newAccountMock.getAccountId(),
 ResourceType.volume, ByteScaleUtils.bytesToGibibytes(volumeVoMock.getSize()));
+        
Mockito.verify(resourceLimitServiceMock).incrementResourceCount(newAccountMock.getAccountId(),
 ResourceType.volume);
         
Mockito.verify(resourceLimitServiceMock).incrementResourceCount(newAccountMock.getAccountId(),
 ResourceType.primary_storage, volumeVoMock.getSize());
 
         PowerMockito.verifyStatic(UsageEventUtils.class);

Reply via email to