Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -1889,7 +1889,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);
}
}

Expand Down Expand Up @@ -2214,7 +2214,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);
}
}
}
Expand Down Expand Up @@ -3782,7 +3782,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
Expand Down
4 changes: 0 additions & 4 deletions engine/schema/src/main/java/com/cloud/vm/dao/UserVmDao.java
Original file line number Diff line number Diff line change
Expand Up @@ -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<String> hiddenDetails);

List<Long> listPodIdsHavingVmsforAccount(long zoneId, long accountId);

public Long countAllocatedVMsForAccount(long accountId, boolean runningVMsonly);
Expand Down
24 changes: 0 additions & 24 deletions engine/schema/src/main/java/com/cloud/vm/dao/UserVmDaoImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -431,29 +430,6 @@ public void loadDetails(UserVmVO vm) {
}
}

@Override
public void saveDetails(UserVmVO vm) {
saveDetails(vm, new ArrayList<String>());
}

@Override
public void saveDetails(UserVmVO vm, List<String> hiddenDetails) {
Map<String, String> detailsStr = vm.getDetails();
if (detailsStr == null) {
return;
}

final Map<String, Boolean> visibilityMap = _detailsDao.listDetailsVisibility(vm.getId());

List<UserVmDetailVO> details = new ArrayList<UserVmDetailVO>();
for (Map.Entry<String, String> 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<Long> listPodIdsHavingVmsforAccount(long zoneId, long accountId) {
TransactionLegacy txn = TransactionLegacy.currentTxn();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,14 @@

import com.cloud.utils.db.GenericDao;
import com.cloud.vm.UserVmDetailVO;
import com.cloud.vm.VMInstanceVO;

import java.util.List;

public interface UserVmDetailsDao extends GenericDao<UserVmDetailVO, Long>, ResourceDetailsDao<UserVmDetailVO> {

public void saveDetails(VMInstanceVO vm);

public void saveDetails(VMInstanceVO vm, List<String> hiddenDetails);

}
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,11 @@
import org.apache.cloudstack.resourcedetail.ResourceDetailsDaoBase;

import com.cloud.vm.UserVmDetailVO;
import com.cloud.vm.VMInstanceVO;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

@Component
public class UserVmDetailsDaoImpl extends ResourceDetailsDaoBase<UserVmDetailVO> implements UserVmDetailsDao {
Expand All @@ -31,4 +36,26 @@ public void addDetail(long resourceId, String key, String value, boolean display
super.addDetail(new UserVmDetailVO(resourceId, key, value, display));
}

@Override
public void saveDetails(VMInstanceVO vm) {
saveDetails(vm, new ArrayList<String>());
}

@Override
public void saveDetails(VMInstanceVO vm, List<String> hiddenDetails) {
Map<String, String> detailsStr = vm.getDetails();
if (detailsStr == null) {
return;
}

final Map<String, Boolean> visibilityMap = listDetailsVisibility(vm.getId());

List<UserVmDetailVO> details = new ArrayList<UserVmDetailVO>();
for (Map.Entry<String, String> 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));
}

saveDetails(details);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -777,7 +777,7 @@ public void updateCapacityForHost(final Host host) {
UserVmVO userVM = _userVMDao.findById(vm.getId());
_userVMDao.loadDetails(userVM);
userVM.setDetail(VmDetailConstants.MESSAGE_RESERVED_CAPACITY_FREED_FLAG, "true");
_userVMDao.saveDetails(userVM);
_userVmDetailsDao.saveDetails(userVM);
}
}
}
Expand Down Expand Up @@ -1011,7 +1011,7 @@ public boolean postStateTransitionEvent(StateMachine2.Transition<State, Event> 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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,8 @@ public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxy
private CAManager caManager;
@Inject
private NetworkOrchestrationService networkMgr;
@Inject
private VMTemplateDao _templateDao;

private ConsoleProxyListener consoleProxyListener;

Expand Down Expand Up @@ -673,6 +675,7 @@ protected NetworkVO getDefaultNetworkForBasicZone(DataCenter dc) {

protected ConsoleProxyVO createOrUpdateConsoleProxy(ConsoleProxyVO proxy, long dataCenterId, long id, String name,
ServiceOffering serviceOffering, VMTemplateVO template, Account systemAccount) {
_templateDao.loadDetails(template);
if (proxy == null) {
proxy = new ConsoleProxyVO(id, serviceOffering.getId(), name, template.getId(),
template.getHypervisorType(), template.getGuestOSId(), dataCenterId, systemAccount.getDomainId(),
Expand All @@ -686,6 +689,8 @@ protected ConsoleProxyVO createOrUpdateConsoleProxy(ConsoleProxyVO proxy, long d
proxy.setHypervisorType(template.getHypervisorType());
proxy.setGuestOSId(template.getGuestOSId());
proxy.setDynamicallyScalable(template.isDynamicallyScalable());
proxy.setDetails(template.getDetails());
userVmDetailsDao.saveDetails(proxy);
consoleProxyDao.update(proxy.getId(), proxy);
return proxy;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -176,6 +177,9 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
@Inject
NetworkDetailsDao _networkDetailsDao;

@Inject
private UserVmDetailsDao userVmDetailsDao;

@Inject
protected RouterDeploymentDefinitionBuilder routerDeploymentDefinitionBuilder;

Expand Down Expand Up @@ -736,7 +740,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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@
import javax.annotation.PostConstruct;
import javax.inject.Inject;


import com.cloud.vm.dao.UserVmDetailsDao;
import org.apache.cloudstack.api.ApiConstants;
import org.apache.cloudstack.context.CallContext;
import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService;
Expand Down Expand Up @@ -176,6 +178,8 @@ public class NetworkHelperImpl implements NetworkHelper {
CapacityManager capacityMgr;
@Inject
VpcDao vpcDao;
@Inject
private UserVmDetailsDao userVmDetailsDao;

protected final Map<HypervisorType, ConfigKey<String>> hypervisorsMap = new HashMap<>();

Expand Down Expand Up @@ -502,6 +506,7 @@ protected DomainRouterVO createOrUpdateDomainRouter(DomainRouterVO router, final
final RouterDeploymentDefinition routerDeploymentDefinition, final Account owner, final long userId,
final ServiceOfferingVO routerOffering, final boolean offerHA, final Long vpcId,
final VMTemplateVO template) {
_templateDao.loadDetails(template);
if (router == null) {
router = new DomainRouterVO(id, routerOffering.getId(),
routerDeploymentDefinition.getVirtualProvider().getId(),
Expand All @@ -516,6 +521,8 @@ protected DomainRouterVO createOrUpdateDomainRouter(DomainRouterVO router, final
}
router.setTemplateId(template.getId());
router.setDynamicallyScalable(template.isDynamicallyScalable());
router.setDetails(template.getDetails());
userVmDetailsDao.saveDetails(router);
_routerDao.update(router.getId(), router);
return router;
}
Expand Down
10 changes: 5 additions & 5 deletions server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -1080,7 +1080,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");
Expand Down Expand Up @@ -2904,7 +2904,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)) {
Expand Down Expand Up @@ -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());
Expand Down Expand Up @@ -8830,7 +8830,7 @@ private void encryptAndStorePassword(UserVmVO vm, String password) {
}

vm.setDetail(VmDetailConstants.ENCRYPTED_PASSWORD, encryptedPasswd);
_vmDao.saveDetails(vm);
userVmDetailsDao.saveDetails(vm);
}
}

Expand All @@ -8839,7 +8839,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={} for vm: {}", rootDiskController, vm);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import com.cloud.storage.dao.VMTemplateDao;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
Expand All @@ -37,6 +38,7 @@
import com.cloud.user.User;
import com.cloud.vm.ConsoleProxyVO;
import com.cloud.vm.dao.ConsoleProxyDao;
import com.cloud.vm.dao.UserVmDetailsDao;

@RunWith(MockitoJUnitRunner.class)
public class ConsoleProxyManagerImplTest {
Expand All @@ -45,7 +47,10 @@ public class ConsoleProxyManagerImplTest {

@Mock
private ConsoleProxyDao consoleProxyDao;

@Mock
private VMTemplateDao templateDao;
@Mock
private UserVmDetailsDao userVmDetailsDao;
@Mock
private AccountManager accountManager;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import com.cloud.storage.dao.VMTemplateDao;
import com.cloud.vm.dao.UserVmDetailsDao;
import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService;
import org.apache.cloudstack.network.router.deployment.RouterDeploymentDefinition;
import org.junit.Before;
Expand Down Expand Up @@ -57,7 +59,6 @@
import com.cloud.vm.dao.DomainRouterDao;
import com.cloud.vm.dao.NicDao;


@RunWith(MockitoJUnitRunner.class)
public class NetworkHelperImplTest {

Expand Down Expand Up @@ -90,6 +91,10 @@ public class NetworkHelperImplTest {
private ServiceOfferingVO routerOffering;
@Mock
private VMTemplateVO template;
@Mock
private VMTemplateDao templateDao;
@Mock
private UserVmDetailsDao userVmDetailsDao;

@Before
public void setUp() {
Expand Down
4 changes: 2 additions & 2 deletions server/src/test/java/com/cloud/vm/UserVmManagerImplTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -573,14 +573,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")
Expand Down
9 changes: 6 additions & 3 deletions server/src/test/java/com/cloud/vm/UserVmManagerTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -145,6 +146,8 @@ public class UserVmManagerTest {
@Mock
private UserVmDao _vmDao;
@Mock
private UserVmDetailsDao userVmDetailsDao;
@Mock
private VMInstanceDao _vmInstanceDao;
@Mock
private VMTemplateDao _templateDao;
Expand Down Expand Up @@ -820,20 +823,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));
}
}
Loading
Loading