Repository: cloudstack Updated Branches: refs/heads/master b6a1d11c9 -> 8b2efee61
Fixed coverity reported issues in UserVmManagerImpl Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/8b2efee6 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/8b2efee6 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/8b2efee6 Branch: refs/heads/master Commit: 8b2efee61c0104b4588e33340606c619b4cf3346 Parents: b6a1d11 Author: Rajani Karuturi <rajanikarut...@gmail.com> Authored: Wed Jul 16 17:42:14 2014 +0530 Committer: Santhosh Edukulla <santhosh.eduku...@gmail.com> Committed: Mon Jul 21 08:24:23 2014 +0530 ---------------------------------------------------------------------- server/src/com/cloud/vm/UserVmManagerImpl.java | 62 ++++++++++----------- 1 file changed, 30 insertions(+), 32 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8b2efee6/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 5b4f648..90f37ef 100755 --- a/server/src/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/com/cloud/vm/UserVmManagerImpl.java @@ -519,13 +519,14 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir Account caller = CallContext.current().getCallingAccount(); Long vmId = cmd.getId(); UserVmVO userVm = _vmDao.findById(cmd.getId()); - _vmDao.loadDetails(userVm); // Do parameters input validation if (userVm == null) { throw new InvalidParameterValueException("unable to find a virtual machine with id " + cmd.getId()); } + _vmDao.loadDetails(userVm); + VMTemplateVO template = _templateDao.findByIdIncludingRemoved(userVm.getTemplateId()); if (template == null || !template.getEnablePassword()) { throw new InvalidParameterValueException("Fail to reset password for the virtual machine, the template is not password enabled"); @@ -682,7 +683,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir VirtualMachineProfile vmProfile = new VirtualMachineProfileImpl(vmInstance); - if (template != null && template.getEnablePassword()) { + if (template.getEnablePassword()) { vmProfile.setParameter(VirtualMachineProfile.Param.VmPassword, password); } @@ -855,7 +856,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir if (customParameters.size() != 0) { if (serviceOffering.getCpu() == null) { String cpuNumber = customParameters.get(UsageEventVO.DynamicParameters.cpuNumber.name()); - if ((cpuNumber == null) || (NumbersUtil.parseInt(cpuNumber, -1) <= 0 || NumbersUtil.parseInt(cpuNumber, -1) > 2147483647)) { + if ((cpuNumber == null) || (NumbersUtil.parseInt(cpuNumber, -1) <= 0)) { throw new InvalidParameterValueException("Invalid cpu cores value, specify a value between 1 and 2147483647"); } } else if (customParameters.containsKey(UsageEventVO.DynamicParameters.cpuNumber.name())) { @@ -865,7 +866,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir if (serviceOffering.getSpeed() == null) { String cpuSpeed = customParameters.get(UsageEventVO.DynamicParameters.cpuSpeed.name()); - if ((cpuSpeed == null) || (NumbersUtil.parseInt(cpuSpeed, -1) <= 0 || NumbersUtil.parseInt(cpuSpeed, -1) > 2147483647)) { + if ((cpuSpeed == null) || (NumbersUtil.parseInt(cpuSpeed, -1) <= 0)) { throw new InvalidParameterValueException("Invalid cpu speed value, specify a value between 1 and 2147483647"); } } else if (customParameters.containsKey(UsageEventVO.DynamicParameters.cpuSpeed.name())) { @@ -875,7 +876,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir if (serviceOffering.getRamSize() == null) { String memory = customParameters.get(UsageEventVO.DynamicParameters.memory.name()); - if (memory == null || (NumbersUtil.parseInt(memory, -1) < 32 || NumbersUtil.parseInt(memory, -1) > 2147483647)) { + if (memory == null || (NumbersUtil.parseInt(memory, -1) < 32)) { throw new InvalidParameterValueException("Invalid memory value, specify a value between 32 and 2147483647 MB"); } } else if (customParameters.containsKey(UsageEventVO.DynamicParameters.memory.name())) { @@ -1151,9 +1152,8 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir NicProfile existing = null; List<NicProfile> nicProfiles = _networkMgr.getNicProfiles(vmInstance); for (NicProfile nicProfile : nicProfiles) { - if (nicProfile.isDefaultNic() && nicProfile.getNetworkId() == existingdefaultnet.getId()) { + if (nicProfile.isDefaultNic() && existingdefaultnet != null && nicProfile.getNetworkId() == existingdefaultnet.getId()) { existing = nicProfile; - continue; } } @@ -1192,7 +1192,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir existingVO.setDeviceId(existingID); nic = _nicDao.persist(nic); - existingVO = _nicDao.persist(existingVO); + _nicDao.persist(existingVO); newdefault = _networkModel.getDefaultNetworkForVm(vmId); if (newdefault.getId() == existingdefaultnet.getId()) { @@ -1271,8 +1271,8 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir return null; } - for (String vmName : vmDiskStatsByName.keySet()) { - vmDiskStatsById.put(vmIds.get(vmNames.indexOf(vmName)), vmDiskStatsByName.get(vmName)); + for (Map.Entry<String, List<VmDiskStatsEntry>> entry: vmDiskStatsByName.entrySet()) { + vmDiskStatsById.put(vmIds.get(vmNames.indexOf(entry.getKey())), entry.getValue()); } } @@ -1443,8 +1443,8 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir details.put(UsageEventVO.DynamicParameters.cpuSpeed.name(), serviceOffering.getSpeed().toString()); details.put(UsageEventVO.DynamicParameters.memory.name(), serviceOffering.getRamSize().toString()); List<UserVmDetailVO> detailList = new ArrayList<UserVmDetailVO>(); - for (String key : details.keySet()) { - UserVmDetailVO detailVO = new UserVmDetailVO(vmId, key, details.get(key), true); + for (Map.Entry<String, String> entry: details.entrySet()) { + UserVmDetailVO detailVO = new UserVmDetailVO(vmId, entry.getKey(), entry.getValue(), true); detailList.add(detailVO); } _uservmDetailsDao.saveDetails(detailList); @@ -1457,8 +1457,8 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir details.remove(UsageEventVO.DynamicParameters.cpuSpeed.name()); details.remove(UsageEventVO.DynamicParameters.memory.name()); List<UserVmDetailVO> detailList = new ArrayList<UserVmDetailVO>(); - for (String key : details.keySet()) { - UserVmDetailVO detailVO = new UserVmDetailVO(vmId, key, details.get(key), true); + for(Map.Entry<String, String> entry: details.entrySet()) { + UserVmDetailVO detailVO = new UserVmDetailVO(vmId, entry.getKey(), entry.getValue(), true); detailList.add(detailVO); } _uservmDetailsDao.saveDetails(detailList); @@ -1491,8 +1491,8 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir return null; } - for (String vmName : vmStatsByName.keySet()) { - vmStatsById.put(vmIds.get(vmNames.indexOf(vmName)), vmStatsByName.get(vmName)); + for (Map.Entry<String, VmStatsEntry> entry : vmStatsByName.entrySet()) { + vmStatsById.put(vmIds.get(vmNames.indexOf(entry.getKey())), entry.getValue()); } } @@ -1507,7 +1507,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir Account caller = CallContext.current().getCallingAccount(); // Verify input parameters - final UserVmVO vm = _vmDao.findById(vmId.longValue()); + final UserVmVO vm = _vmDao.findById(vmId); if (vm == null) { throw new InvalidParameterValueException("unable to find a virtual machine with id " + vmId); @@ -1679,7 +1679,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir } // Only if vm is not expunged already, cleanup it's resources - if (vm != null && vm.getRemoved() == null) { + if (vm.getRemoved() == null) { // Cleanup vm resources - all the PF/LB/StaticNat rules // associated with vm s_logger.debug("Starting cleaning up vm " + vm + " resources..."); @@ -1852,12 +1852,12 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir Account caller = CallContext.current().getCallingAccount(); // Input validation and permission checks - UserVmVO vmInstance = _vmDao.findById(id.longValue()); + UserVmVO vmInstance = _vmDao.findById(id); if (vmInstance == null) { throw new InvalidParameterValueException("unable to find virtual machine with id " + id); } - _accountMgr.checkAccess(CallContext.current().getCallingAccount(), null, true, vmInstance); + _accountMgr.checkAccess(caller, null, true, vmInstance); //If the flag is specified and is changed if (isDisplayVm != null && isDisplayVm != vmInstance.isDisplayVm()) { @@ -2075,7 +2075,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir Long vmId = cmd.getId(); // Verify input parameters - UserVmVO vmInstance = _vmDao.findById(vmId.longValue()); + UserVmVO vmInstance = _vmDao.findById(vmId); if (vmInstance == null) { throw new InvalidParameterValueException("unable to find a virtual machine with id " + vmId); } @@ -3014,10 +3014,8 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir } _vmDao.persist(vm); - if (customParameters != null && customParameters.size() > 0) { - for (String key : customParameters.keySet()) { - vm.setDetail(key, customParameters.get(key)); - } + for (String key : customParameters.keySet()) { + vm.setDetail(key, customParameters.get(key)); } _vmDao.saveDetails(vm); @@ -3103,7 +3101,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir } } - if (decodedUserData.length < 1) { + if (decodedUserData == null || decodedUserData.length < 1) { throw new InvalidParameterValueException("User data is too short"); } } @@ -3511,9 +3509,6 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir return vm; } - // _accountMgr.checkAccess(caller, null, true, vm); - User userCaller = _userDao.findById(userId); - boolean status; State vmState = vm.getState(); @@ -4152,6 +4147,11 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir long srcHostId = vm.getHostId(); Host srcHost = _resourceMgr.getHost(srcHostId); + + if(srcHost == null ){ + throw new InvalidParameterValueException("Cannot migrate VM, there is not Host with id: " + srcHostId); + } + // Check if src and destination hosts are valid and migrating to same host if (destinationHost.getId() == srcHostId) { throw new InvalidParameterValueException("Cannot migrate VM, VM is already present on this host, please" + " specify valid destination host to migrate the VM"); @@ -4697,9 +4697,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir newVol = volumeMgr.allocateDuplicateVolume(root, null); } // 1. Save usage event and update resource count for user vm volumes - if (vm instanceof UserVm) { - _resourceLimitMgr.incrementResourceCount(vm.getAccountId(), ResourceType.volume); - } + _resourceLimitMgr.incrementResourceCount(vm.getAccountId(), ResourceType.volume); //2. Create Usage event for the newly created volume UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VOLUME_CREATE, newVol.getAccountId(), newVol.getDataCenterId(), newVol.getId(), newVol.getName(), newVol.getDiskOfferingId(), templateId, newVol.getSize()); _usageEventDao.persist(usageEvent);