Updated Branches: refs/heads/4.2-forward 1ba591516 -> 948014dee
CLOUDSTACK-4566: fix incorrect values in resource_count table for resource limitation There are three issues in resource_count table (1) expunge a vm, the public_ip decreases and becomes -1 in basic zone. (2) recover a vm, the volume increase. (3) restore a vm, the volume decrease. Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/948014de Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/948014de Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/948014de Branch: refs/heads/4.2-forward Commit: 948014dee6af67d4bdd27301e23f4cdee695d9f1 Parents: 1ba5915 Author: Wei Zhou <[email protected]> Authored: Fri Aug 30 08:51:01 2013 +0200 Committer: Wei Zhou <[email protected]> Committed: Fri Aug 30 08:51:01 2013 +0200 ---------------------------------------------------------------------- server/src/com/cloud/network/NetworkManagerImpl.java | 2 +- server/src/com/cloud/vm/UserVmManagerImpl.java | 6 ++++-- server/test/com/cloud/vm/UserVmManagerTest.java | 6 +++++- 3 files changed, 10 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/948014de/server/src/com/cloud/network/NetworkManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index 472336c..fb1dcb1 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -508,7 +508,7 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkManager, L } addr.setState(assign ? IpAddress.State.Allocated : IpAddress.State.Allocating); - if (vlanUse != VlanType.DirectAttached || zone.getNetworkType() == NetworkType.Basic) { + if (vlanUse != VlanType.DirectAttached) { addr.setAssociatedWithNetworkId(guestNetworkId); addr.setVpcId(vpcId); } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/948014de/server/src/com/cloud/vm/UserVmManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java index 251c203..a970478 100755 --- a/server/src/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/com/cloud/vm/UserVmManagerImpl.java @@ -1479,8 +1479,6 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use } //Update Resource Count for the given account - _resourceLimitMgr.incrementResourceCount(account.getId(), - ResourceType.volume, new Long(volumes.size())); resourceCountIncrement(account.getId(), new Long(serviceOffering.getCpu()), new Long(serviceOffering.getRamSize())); txn.commit(); @@ -4878,6 +4876,10 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use } else { newVol = volumeMgr.allocateDuplicateVolume(root, null); } + // Save usage event and update resource count for user vm volumes + if (vm instanceof UserVm) { + _resourceLimitMgr.incrementResourceCount(vm.getAccountId(), ResourceType.volume); + } _volsDao.attachVolume(newVol.getId(), vmId, newVol.getDeviceId()); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/948014de/server/test/com/cloud/vm/UserVmManagerTest.java ---------------------------------------------------------------------- diff --git a/server/test/com/cloud/vm/UserVmManagerTest.java b/server/test/com/cloud/vm/UserVmManagerTest.java index 973b8bc..b113f5d 100755 --- a/server/test/com/cloud/vm/UserVmManagerTest.java +++ b/server/test/com/cloud/vm/UserVmManagerTest.java @@ -68,6 +68,7 @@ import com.cloud.user.Account; import com.cloud.user.AccountManager; import com.cloud.user.AccountService; import com.cloud.user.AccountVO; +import com.cloud.user.ResourceLimitService; import com.cloud.user.UserContext; import com.cloud.user.UserVO; import com.cloud.user.dao.AccountDao; @@ -104,6 +105,8 @@ public class UserVmManagerTest { @Mock List<VolumeVO> _rootVols; @Mock Account _accountMock2; @Mock ServiceOfferingDao _offeringDao; + @Mock ResourceLimitService _resourceLimitMgr; + @Before public void setup(){ MockitoAnnotations.initMocks(this); @@ -121,6 +124,7 @@ public class UserVmManagerTest { _userVmMgr._configMgr = _configMgr; _userVmMgr._offeringDao= _offeringDao; _userVmMgr._capacityMgr = _capacityMgr; + _userVmMgr._resourceLimitMgr = _resourceLimitMgr; _userVmMgr._scaleRetry = 2; doReturn(3L).when(_account).getId(); @@ -488,4 +492,4 @@ public class UserVmManagerTest { _userVmMgr.moveVMToUser(cmd); } -} \ No newline at end of file +}
