diff --git a/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java b/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java index 7c107ed6f547..2e33b13bb797 100755 --- a/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java +++ b/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java @@ -1865,7 +1865,7 @@ protected boolean sendStop(final VirtualMachineGuru guru, final VirtualMachinePr final UserVmVO userVm = _userVmDao.findById(vm.getId()); _userVmDao.loadDetails(userVm); userVm.setDetail(VmDetailConstants.PLATFORM, platform); - _userVmDao.saveDetails(userVm); + userVmDetailsDao.saveDetails(userVm); } } @@ -2190,7 +2190,7 @@ private void advanceStop(final VMInstanceVO vm, final boolean cleanUpEvenIfUnabl final UserVmVO userVm = _userVmDao.findById(vm.getId()); _userVmDao.loadDetails(userVm); userVm.setDetail(VmDetailConstants.PLATFORM, platform); - _userVmDao.saveDetails(userVm); + userVmDetailsDao.saveDetails(userVm); } } } @@ -3757,7 +3757,7 @@ private void updateVmMetaData(Long vmId, String platform) { if (!userVm.details.containsKey(VmDetailConstants.HYPERVISOR_TOOLS_VERSION) || !userVm.details.get(VmDetailConstants.HYPERVISOR_TOOLS_VERSION).equals(pvdriver)) { userVm.setDetail(VmDetailConstants.HYPERVISOR_TOOLS_VERSION, pvdriver); } - _userVmDao.saveDetails(userVm); + userVmDetailsDao.saveDetails(userVm); } @Override diff --git a/engine/schema/src/main/java/com/cloud/vm/dao/UserVmDao.java b/engine/schema/src/main/java/com/cloud/vm/dao/UserVmDao.java index 7de543e69d31..0f6870e0135b 100644 --- a/engine/schema/src/main/java/com/cloud/vm/dao/UserVmDao.java +++ b/engine/schema/src/main/java/com/cloud/vm/dao/UserVmDao.java @@ -87,10 +87,6 @@ void updateVM(long id, String displayName, boolean enable, Long osTypeId, void loadDetails(UserVmVO vm); - void saveDetails(UserVmVO vm); - - void saveDetails(UserVmVO vm, List hiddenDetails); - List listPodIdsHavingVmsforAccount(long zoneId, long accountId); public Long countAllocatedVMsForAccount(long accountId, boolean runningVMsonly); diff --git a/engine/schema/src/main/java/com/cloud/vm/dao/UserVmDaoImpl.java b/engine/schema/src/main/java/com/cloud/vm/dao/UserVmDaoImpl.java index cc8b9fc59a8d..78f545a31e0b 100644 --- a/engine/schema/src/main/java/com/cloud/vm/dao/UserVmDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/vm/dao/UserVmDaoImpl.java @@ -57,7 +57,6 @@ import com.cloud.utils.db.TransactionLegacy; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.vm.NicVO; -import com.cloud.vm.UserVmDetailVO; import com.cloud.vm.UserVmVO; import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachine.State; @@ -431,29 +430,6 @@ public void loadDetails(UserVmVO vm) { } } - @Override - public void saveDetails(UserVmVO vm) { - saveDetails(vm, new ArrayList()); - } - - @Override - public void saveDetails(UserVmVO vm, List hiddenDetails) { - Map detailsStr = vm.getDetails(); - if (detailsStr == null) { - return; - } - - final Map visibilityMap = _detailsDao.listDetailsVisibility(vm.getId()); - - List details = new ArrayList(); - for (Map.Entry entry : detailsStr.entrySet()) { - boolean display = !hiddenDetails.contains(entry.getKey()) && visibilityMap.getOrDefault(entry.getKey(), true); - details.add(new UserVmDetailVO(vm.getId(), entry.getKey(), entry.getValue(), display)); - } - - _detailsDao.saveDetails(details); - } - @Override public List listPodIdsHavingVmsforAccount(long zoneId, long accountId) { TransactionLegacy txn = TransactionLegacy.currentTxn(); diff --git a/server/src/main/java/com/cloud/capacity/CapacityManagerImpl.java b/server/src/main/java/com/cloud/capacity/CapacityManagerImpl.java index 421c980b2096..f7e54985c85b 100644 --- a/server/src/main/java/com/cloud/capacity/CapacityManagerImpl.java +++ b/server/src/main/java/com/cloud/capacity/CapacityManagerImpl.java @@ -757,7 +757,7 @@ public void updateCapacityForHost(final Host host, final Map t _userVMDao.loadDetails(userVM); // free the message sent flag if it exists userVM.setDetail(VmDetailConstants.MESSAGE_RESERVED_CAPACITY_FREED_FLAG, "false"); - _userVMDao.saveDetails(userVM); + _userVmDetailsDao.saveDetails(userVM); } return true; diff --git a/server/src/main/java/com/cloud/network/element/VirtualRouterElement.java b/server/src/main/java/com/cloud/network/element/VirtualRouterElement.java index a87504cd07a7..ffcd9c9af93d 100644 --- a/server/src/main/java/com/cloud/network/element/VirtualRouterElement.java +++ b/server/src/main/java/com/cloud/network/element/VirtualRouterElement.java @@ -24,6 +24,7 @@ import javax.inject.Inject; +import com.cloud.vm.dao.UserVmDetailsDao; import org.apache.cloudstack.network.BgpPeer; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; @@ -176,6 +177,9 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl @Inject NetworkDetailsDao _networkDetailsDao; + @Inject + private UserVmDetailsDao userVmDetailsDao; + @Inject protected RouterDeploymentDefinitionBuilder routerDeploymentDefinitionBuilder; @@ -737,7 +741,7 @@ public boolean savePassword(final Network network, final NicProfile nic, final V _userVmDao.loadDetails(userVmVO); userVmVO.setDetail(VmDetailConstants.PASSWORD, password_encrypted); - _userVmDao.saveDetails(userVmVO); + userVmDetailsDao.saveDetails(userVmVO); userVmVO.setUpdateParameters(true); _userVmDao.update(userVmVO.getId(), userVmVO); diff --git a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java index 219feeef5a91..d33155b21aad 100644 --- a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java @@ -1087,7 +1087,7 @@ private boolean resetVMSSHKeyInternal(Long vmId, String sshPublicKeys, String ke _vmDao.loadDetails(userVm); userVm.setDetail(VmDetailConstants.SSH_PUBLIC_KEY, sshPublicKeys); userVm.setDetail(VmDetailConstants.SSH_KEY_PAIR_NAMES, keypairnames); - _vmDao.saveDetails(userVm); + userVmDetailsDao.saveDetails(userVm); if (vmInstance.getState() == State.Stopped) { logger.debug("Vm " + vmInstance + " is stopped, not rebooting it as a part of SSH Key reset"); @@ -2910,7 +2910,7 @@ public UserVm updateVirtualMachine(UpdateVMCmd cmd) throws ResourceUnavailableEx verifyVmLimits(vmInstance, details); vmInstance.setDetails(details); - _vmDao.saveDetails(vmInstance); + userVmDetailsDao.saveDetails(vmInstance); } if (StringUtils.isNotBlank(extraConfig)) { if (EnableAdditionalVmConfig.valueIn(accountId)) { @@ -4710,7 +4710,7 @@ private UserVmVO commitUserVm(final boolean isImport, final DataCenter zone, fin if (customParameters.containsKey(VmDetailConstants.NAME_ON_HYPERVISOR)) { hiddenDetails.add(VmDetailConstants.NAME_ON_HYPERVISOR); } - _vmDao.saveDetails(vm, hiddenDetails); + userVmDetailsDao.saveDetails(vm, hiddenDetails); if (!isImport) { logger.debug("Allocating in the DB for vm"); DataCenterDeployment plan = new DataCenterDeployment(zone.getId()); @@ -8510,7 +8510,7 @@ private void encryptAndStorePassword(UserVmVO vm, String password) { } vm.setDetail(VmDetailConstants.ENCRYPTED_PASSWORD, encryptedPasswd); - _vmDao.saveDetails(vm); + userVmDetailsDao.saveDetails(vm); } } @@ -8519,7 +8519,7 @@ public void persistDeviceBusInfo(UserVmVO vm, String rootDiskController) { String existingVmRootDiskController = vm.getDetail(VmDetailConstants.ROOT_DISK_CONTROLLER); if (StringUtils.isEmpty(existingVmRootDiskController) && StringUtils.isNotEmpty(rootDiskController)) { vm.setDetail(VmDetailConstants.ROOT_DISK_CONTROLLER, rootDiskController); - _vmDao.saveDetails(vm); + userVmDetailsDao.saveDetails(vm); if (logger.isDebugEnabled()) { logger.debug("Persisted device bus information rootDiskController=" + rootDiskController + " for vm: " + vm.getDisplayName()); } diff --git a/server/src/test/java/com/cloud/vm/UserVmManagerImplTest.java b/server/src/test/java/com/cloud/vm/UserVmManagerImplTest.java index 8316c57d67dd..788afbd9857a 100644 --- a/server/src/test/java/com/cloud/vm/UserVmManagerImplTest.java +++ b/server/src/test/java/com/cloud/vm/UserVmManagerImplTest.java @@ -471,14 +471,14 @@ private void prepareAndExecuteMethodDealingWithDetails(boolean cleanUpDetails, b Mockito.verify(userVmVoMock, Mockito.times(cleanUpDetails || isDetailsEmpty ? 0 : 1)).setDetails(details); Mockito.verify(userVmDetailsDao, Mockito.times(cleanUpDetails ? 1 : 0)).removeDetail(vmId, "existingdetail"); Mockito.verify(userVmDetailsDao, Mockito.times(0)).removeDetail(vmId, "systemdetail"); - Mockito.verify(userVmDao, Mockito.times(cleanUpDetails || isDetailsEmpty ? 0 : 1)).saveDetails(userVmVoMock); + Mockito.verify(userVmDetailsDao, Mockito.times(cleanUpDetails || isDetailsEmpty ? 0 : 1)).saveDetails(userVmVoMock); Mockito.verify(userVmManagerImpl, Mockito.times(0)).updateDisplayVmFlag(false, vmId, userVmVoMock); } private void configureDoNothingForDetailsMethod() { Mockito.lenient().doNothing().when(userVmManagerImpl).updateDisplayVmFlag(false, vmId, userVmVoMock); Mockito.doNothing().when(userVmDetailsDao).removeDetail(anyLong(), anyString()); - Mockito.doNothing().when(userVmDao).saveDetails(userVmVoMock); + Mockito.doNothing().when(userVmDetailsDao).saveDetails(userVmVoMock); } @SuppressWarnings("unchecked") diff --git a/server/src/test/java/com/cloud/vm/UserVmManagerTest.java b/server/src/test/java/com/cloud/vm/UserVmManagerTest.java index 8be100d45708..acd29fa74a02 100644 --- a/server/src/test/java/com/cloud/vm/UserVmManagerTest.java +++ b/server/src/test/java/com/cloud/vm/UserVmManagerTest.java @@ -63,6 +63,7 @@ import com.cloud.vm.VirtualMachine.State; import com.cloud.vm.dao.NicDao; import com.cloud.vm.dao.UserVmDao; +import com.cloud.vm.dao.UserVmDetailsDao; import com.cloud.vm.dao.VMInstanceDao; import com.cloud.vm.snapshot.VMSnapshotVO; import com.cloud.vm.snapshot.dao.VMSnapshotDao; @@ -145,6 +146,8 @@ public class UserVmManagerTest { @Mock private UserVmDao _vmDao; @Mock + private UserVmDetailsDao userVmDetailsDao; + @Mock private VMInstanceDao _vmInstanceDao; @Mock private VMTemplateDao _templateDao; @@ -821,20 +824,20 @@ public void testApplyUserDataSuccessful() throws Exception { public void testPersistDeviceBusInfoWithNullController() { when(_vmMock.getDetail(any(String.class))).thenReturn(null); _userVmMgr.persistDeviceBusInfo(_vmMock, null); - verify(_vmDao, times(0)).saveDetails(any(UserVmVO.class)); + verify(userVmDetailsDao, times(0)).saveDetails(any(UserVmVO.class)); } @Test public void testPersistDeviceBusInfoWithEmptyController() { when(_vmMock.getDetail(any(String.class))).thenReturn(""); _userVmMgr.persistDeviceBusInfo(_vmMock, ""); - verify(_vmDao, times(0)).saveDetails(any(UserVmVO.class)); + verify(userVmDetailsDao, times(0)).saveDetails(any(UserVmVO.class)); } @Test public void testPersistDeviceBusInfo() { when(_vmMock.getDetail(any(String.class))).thenReturn(null); _userVmMgr.persistDeviceBusInfo(_vmMock, "lsilogic"); - verify(_vmDao, times(1)).saveDetails(any(UserVmVO.class)); + verify(userVmDetailsDao, times(1)).saveDetails(any(UserVmVO.class)); } }