Skip to content

Commit ce586e3

Browse files
authored
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.
1 parent a11fc43 commit ce586e3

File tree

2 files changed

+6
-8
lines changed

2 files changed

+6
-8
lines changed

server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,6 @@
100100
import org.apache.cloudstack.storage.datastore.db.VolumeDataStoreDao;
101101
import org.apache.cloudstack.storage.datastore.db.VolumeDataStoreVO;
102102
import org.apache.cloudstack.storage.image.datastore.ImageStoreEntity;
103-
import org.apache.cloudstack.utils.bytescale.ByteScaleUtils;
104103
import org.apache.cloudstack.utils.identity.ManagementServerNode;
105104
import org.apache.cloudstack.utils.imagestore.ImageStoreUtil;
106105
import org.apache.cloudstack.utils.reflectiontostringbuilderutils.ReflectionToStringBuilderUtils;
@@ -3784,7 +3783,7 @@ public Volume assignVolumeToAccount(AssignVolumeCmd command) throws ResourceAllo
37843783
_accountMgr.checkAccess(caller, null, true, oldAccount);
37853784
_accountMgr.checkAccess(caller, null, true, newAccount);
37863785

3787-
_resourceLimitMgr.checkResourceLimit(newAccount, ResourceType.volume, ByteScaleUtils.bytesToGibibytes(volume.getSize()));
3786+
_resourceLimitMgr.checkResourceLimit(newAccount, ResourceType.volume);
37883787
_resourceLimitMgr.checkResourceLimit(newAccount, ResourceType.primary_storage, volume.getSize());
37893788

37903789
Transaction.execute(new TransactionCallbackNoReturn() {
@@ -3800,14 +3799,14 @@ public void doInTransactionWithoutResult(TransactionStatus status) {
38003799
protected void updateVolumeAccount(Account oldAccount, VolumeVO volume, Account newAccount) {
38013800
UsageEventUtils.publishUsageEvent(EventTypes.EVENT_VOLUME_DELETE, volume.getAccountId(), volume.getDataCenterId(), volume.getId(), volume.getName(),
38023801
Volume.class.getName(), volume.getUuid(), volume.isDisplayVolume());
3803-
_resourceLimitMgr.decrementResourceCount(oldAccount.getAccountId(), ResourceType.volume, ByteScaleUtils.bytesToGibibytes(volume.getSize()));
3802+
_resourceLimitMgr.decrementResourceCount(oldAccount.getAccountId(), ResourceType.volume);
38043803
_resourceLimitMgr.decrementResourceCount(oldAccount.getAccountId(), ResourceType.primary_storage, volume.getSize());
38053804

38063805
volume.setAccountId(newAccount.getAccountId());
38073806
volume.setDomainId(newAccount.getDomainId());
38083807
_volsDao.persist(volume);
38093808

3810-
_resourceLimitMgr.incrementResourceCount(newAccount.getAccountId(), ResourceType.volume, ByteScaleUtils.bytesToGibibytes(volume.getSize()));
3809+
_resourceLimitMgr.incrementResourceCount(newAccount.getAccountId(), ResourceType.volume);
38113810
_resourceLimitMgr.incrementResourceCount(newAccount.getAccountId(), ResourceType.primary_storage, volume.getSize());
38123811

38133812
UsageEventUtils.publishUsageEvent(EventTypes.EVENT_VOLUME_CREATE, volume.getAccountId(), volume.getDataCenterId(), volume.getId(), volume.getName(),

server/src/test/java/com/cloud/storage/VolumeApiServiceImplTest.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@
6363
import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
6464
import org.apache.cloudstack.storage.datastore.db.VolumeDataStoreDao;
6565
import org.apache.cloudstack.storage.datastore.db.VolumeDataStoreVO;
66-
import org.apache.cloudstack.utils.bytescale.ByteScaleUtils;
6766
import org.apache.commons.collections.CollectionUtils;
6867
import org.junit.After;
6968
import org.junit.Assert;
@@ -119,8 +118,8 @@
119118
import com.cloud.user.User;
120119
import com.cloud.user.UserVO;
121120
import com.cloud.user.dao.AccountDao;
122-
import com.cloud.utils.exception.CloudRuntimeException;
123121
import com.cloud.utils.db.TransactionLegacy;
122+
import com.cloud.utils.exception.CloudRuntimeException;
124123
import com.cloud.utils.fsm.NoTransitionException;
125124
import com.cloud.vm.UserVmManager;
126125
import com.cloud.vm.UserVmVO;
@@ -1413,15 +1412,15 @@ public void updateVolumeAccountTest() {
14131412
UsageEventUtils.publishUsageEvent(EventTypes.EVENT_VOLUME_DELETE, volumeVoMock.getAccountId(), volumeVoMock.getDataCenterId(), volumeVoMock.getId(),
14141413
volumeVoMock.getName(), Volume.class.getName(), volumeVoMock.getUuid(), volumeVoMock.isDisplayVolume());
14151414

1416-
Mockito.verify(resourceLimitServiceMock).decrementResourceCount(accountMock.getAccountId(), ResourceType.volume, ByteScaleUtils.bytesToGibibytes(volumeVoMock.getSize()));
1415+
Mockito.verify(resourceLimitServiceMock).decrementResourceCount(accountMock.getAccountId(), ResourceType.volume);
14171416
Mockito.verify(resourceLimitServiceMock).decrementResourceCount(accountMock.getAccountId(), ResourceType.primary_storage, volumeVoMock.getSize());
14181417

14191418
Mockito.verify(volumeVoMock).setAccountId(newAccountMock.getAccountId());
14201419
Mockito.verify(volumeVoMock).setDomainId(newAccountMock.getDomainId());
14211420

14221421
Mockito.verify(volumeDaoMock).persist(volumeVoMock);
14231422

1424-
Mockito.verify(resourceLimitServiceMock).incrementResourceCount(newAccountMock.getAccountId(), ResourceType.volume, ByteScaleUtils.bytesToGibibytes(volumeVoMock.getSize()));
1423+
Mockito.verify(resourceLimitServiceMock).incrementResourceCount(newAccountMock.getAccountId(), ResourceType.volume);
14251424
Mockito.verify(resourceLimitServiceMock).incrementResourceCount(newAccountMock.getAccountId(), ResourceType.primary_storage, volumeVoMock.getSize());
14261425

14271426
PowerMockito.verifyStatic(UsageEventUtils.class);

0 commit comments

Comments
 (0)