Skip to content

Commit 69d2347

Browse files
committed
Save systemvm template details for cpvm, ssvm and vr's.
1 parent f2a6a2f commit 69d2347

File tree

16 files changed

+91
-46
lines changed

16 files changed

+91
-46
lines changed

engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1889,7 +1889,7 @@ protected boolean sendStop(final VirtualMachineGuru guru, final VirtualMachinePr
18891889
final UserVmVO userVm = _userVmDao.findById(vm.getId());
18901890
_userVmDao.loadDetails(userVm);
18911891
userVm.setDetail(VmDetailConstants.PLATFORM, platform);
1892-
_userVmDao.saveDetails(userVm);
1892+
userVmDetailsDao.saveDetails(userVm);
18931893
}
18941894
}
18951895

@@ -2214,7 +2214,7 @@ private void advanceStop(final VMInstanceVO vm, final boolean cleanUpEvenIfUnabl
22142214
final UserVmVO userVm = _userVmDao.findById(vm.getId());
22152215
_userVmDao.loadDetails(userVm);
22162216
userVm.setDetail(VmDetailConstants.PLATFORM, platform);
2217-
_userVmDao.saveDetails(userVm);
2217+
userVmDetailsDao.saveDetails(userVm);
22182218
}
22192219
}
22202220
}
@@ -3782,7 +3782,7 @@ private void updateVmMetaData(Long vmId, String platform) {
37823782
if (!userVm.details.containsKey(VmDetailConstants.HYPERVISOR_TOOLS_VERSION) || !userVm.details.get(VmDetailConstants.HYPERVISOR_TOOLS_VERSION).equals(pvdriver)) {
37833783
userVm.setDetail(VmDetailConstants.HYPERVISOR_TOOLS_VERSION, pvdriver);
37843784
}
3785-
_userVmDao.saveDetails(userVm);
3785+
userVmDetailsDao.saveDetails(userVm);
37863786
}
37873787

37883788
@Override

engine/schema/src/main/java/com/cloud/vm/dao/UserVmDao.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,10 +87,6 @@ void updateVM(long id, String displayName, boolean enable, Long osTypeId,
8787

8888
void loadDetails(UserVmVO vm);
8989

90-
void saveDetails(UserVmVO vm);
91-
92-
void saveDetails(UserVmVO vm, List<String> hiddenDetails);
93-
9490
List<Long> listPodIdsHavingVmsforAccount(long zoneId, long accountId);
9591

9692
public Long countAllocatedVMsForAccount(long accountId, boolean runningVMsonly);

engine/schema/src/main/java/com/cloud/vm/dao/UserVmDaoImpl.java

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@
5757
import com.cloud.utils.db.TransactionLegacy;
5858
import com.cloud.utils.exception.CloudRuntimeException;
5959
import com.cloud.vm.NicVO;
60-
import com.cloud.vm.UserVmDetailVO;
6160
import com.cloud.vm.UserVmVO;
6261
import com.cloud.vm.VirtualMachine;
6362
import com.cloud.vm.VirtualMachine.State;
@@ -431,29 +430,6 @@ public void loadDetails(UserVmVO vm) {
431430
}
432431
}
433432

434-
@Override
435-
public void saveDetails(UserVmVO vm) {
436-
saveDetails(vm, new ArrayList<String>());
437-
}
438-
439-
@Override
440-
public void saveDetails(UserVmVO vm, List<String> hiddenDetails) {
441-
Map<String, String> detailsStr = vm.getDetails();
442-
if (detailsStr == null) {
443-
return;
444-
}
445-
446-
final Map<String, Boolean> visibilityMap = _detailsDao.listDetailsVisibility(vm.getId());
447-
448-
List<UserVmDetailVO> details = new ArrayList<UserVmDetailVO>();
449-
for (Map.Entry<String, String> entry : detailsStr.entrySet()) {
450-
boolean display = !hiddenDetails.contains(entry.getKey()) && visibilityMap.getOrDefault(entry.getKey(), true);
451-
details.add(new UserVmDetailVO(vm.getId(), entry.getKey(), entry.getValue(), display));
452-
}
453-
454-
_detailsDao.saveDetails(details);
455-
}
456-
457433
@Override
458434
public List<Long> listPodIdsHavingVmsforAccount(long zoneId, long accountId) {
459435
TransactionLegacy txn = TransactionLegacy.currentTxn();

engine/schema/src/main/java/com/cloud/vm/dao/UserVmDetailsDao.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,14 @@
2020

2121
import com.cloud.utils.db.GenericDao;
2222
import com.cloud.vm.UserVmDetailVO;
23+
import com.cloud.vm.VMInstanceVO;
24+
25+
import java.util.List;
2326

2427
public interface UserVmDetailsDao extends GenericDao<UserVmDetailVO, Long>, ResourceDetailsDao<UserVmDetailVO> {
28+
29+
public void saveDetails(VMInstanceVO vm);
30+
31+
public void saveDetails(VMInstanceVO vm, List<String> hiddenDetails);
32+
2533
}

engine/schema/src/main/java/com/cloud/vm/dao/UserVmDetailsDaoImpl.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@
2222
import org.apache.cloudstack.resourcedetail.ResourceDetailsDaoBase;
2323

2424
import com.cloud.vm.UserVmDetailVO;
25+
import com.cloud.vm.VMInstanceVO;
26+
27+
import java.util.ArrayList;
28+
import java.util.List;
29+
import java.util.Map;
2530

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

39+
@Override
40+
public void saveDetails(VMInstanceVO vm) {
41+
saveDetails(vm, new ArrayList<String>());
42+
}
43+
44+
@Override
45+
public void saveDetails(VMInstanceVO vm, List<String> hiddenDetails) {
46+
Map<String, String> detailsStr = vm.getDetails();
47+
if (detailsStr == null) {
48+
return;
49+
}
50+
51+
final Map<String, Boolean> visibilityMap = listDetailsVisibility(vm.getId());
52+
53+
List<UserVmDetailVO> details = new ArrayList<UserVmDetailVO>();
54+
for (Map.Entry<String, String> entry : detailsStr.entrySet()) {
55+
boolean display = !hiddenDetails.contains(entry.getKey()) && visibilityMap.getOrDefault(entry.getKey(), true);
56+
details.add(new UserVmDetailVO(vm.getId(), entry.getKey(), entry.getValue(), display));
57+
}
58+
59+
saveDetails(details);
60+
}
3461
}

server/src/main/java/com/cloud/capacity/CapacityManagerImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -777,7 +777,7 @@ public void updateCapacityForHost(final Host host) {
777777
UserVmVO userVM = _userVMDao.findById(vm.getId());
778778
_userVMDao.loadDetails(userVM);
779779
userVM.setDetail(VmDetailConstants.MESSAGE_RESERVED_CAPACITY_FREED_FLAG, "true");
780-
_userVMDao.saveDetails(userVM);
780+
_userVmDetailsDao.saveDetails(userVM);
781781
}
782782
}
783783
}
@@ -1011,7 +1011,7 @@ public boolean postStateTransitionEvent(StateMachine2.Transition<State, Event> t
10111011
_userVMDao.loadDetails(userVM);
10121012
// free the message sent flag if it exists
10131013
userVM.setDetail(VmDetailConstants.MESSAGE_RESERVED_CAPACITY_FREED_FLAG, "false");
1014-
_userVMDao.saveDetails(userVM);
1014+
_userVmDetailsDao.saveDetails(userVM);
10151015
}
10161016

10171017
return true;

server/src/main/java/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,8 @@ public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxy
227227
private CAManager caManager;
228228
@Inject
229229
private NetworkOrchestrationService networkMgr;
230+
@Inject
231+
private VMTemplateDao _templateDao;
230232

231233
private ConsoleProxyListener consoleProxyListener;
232234

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

674676
protected ConsoleProxyVO createOrUpdateConsoleProxy(ConsoleProxyVO proxy, long dataCenterId, long id, String name,
675677
ServiceOffering serviceOffering, VMTemplateVO template, Account systemAccount) {
678+
_templateDao.loadDetails(template);
676679
if (proxy == null) {
677680
proxy = new ConsoleProxyVO(id, serviceOffering.getId(), name, template.getId(),
678681
template.getHypervisorType(), template.getGuestOSId(), dataCenterId, systemAccount.getDomainId(),
@@ -686,6 +689,8 @@ protected ConsoleProxyVO createOrUpdateConsoleProxy(ConsoleProxyVO proxy, long d
686689
proxy.setHypervisorType(template.getHypervisorType());
687690
proxy.setGuestOSId(template.getGuestOSId());
688691
proxy.setDynamicallyScalable(template.isDynamicallyScalable());
692+
proxy.setDetails(template.getDetails());
693+
userVmDetailsDao.saveDetails(proxy);
689694
consoleProxyDao.update(proxy.getId(), proxy);
690695
return proxy;
691696
}

server/src/main/java/com/cloud/network/element/VirtualRouterElement.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
import javax.inject.Inject;
2626

27+
import com.cloud.vm.dao.UserVmDetailsDao;
2728
import org.apache.cloudstack.network.BgpPeer;
2829
import org.apache.commons.collections.CollectionUtils;
2930
import org.apache.commons.lang3.ObjectUtils;
@@ -176,6 +177,9 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
176177
@Inject
177178
NetworkDetailsDao _networkDetailsDao;
178179

180+
@Inject
181+
private UserVmDetailsDao userVmDetailsDao;
182+
179183
@Inject
180184
protected RouterDeploymentDefinitionBuilder routerDeploymentDefinitionBuilder;
181185

@@ -736,7 +740,7 @@ public boolean savePassword(final Network network, final NicProfile nic, final V
736740

737741
_userVmDao.loadDetails(userVmVO);
738742
userVmVO.setDetail(VmDetailConstants.PASSWORD, password_encrypted);
739-
_userVmDao.saveDetails(userVmVO);
743+
userVmDetailsDao.saveDetails(userVmVO);
740744

741745
userVmVO.setUpdateParameters(true);
742746
_userVmDao.update(userVmVO.getId(), userVmVO);

server/src/main/java/com/cloud/network/router/NetworkHelperImpl.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
import javax.annotation.PostConstruct;
2929
import javax.inject.Inject;
3030

31+
32+
import com.cloud.vm.dao.UserVmDetailsDao;
3133
import org.apache.cloudstack.api.ApiConstants;
3234
import org.apache.cloudstack.context.CallContext;
3335
import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService;
@@ -176,6 +178,8 @@ public class NetworkHelperImpl implements NetworkHelper {
176178
CapacityManager capacityMgr;
177179
@Inject
178180
VpcDao vpcDao;
181+
@Inject
182+
private UserVmDetailsDao userVmDetailsDao;
179183

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

@@ -502,6 +506,7 @@ protected DomainRouterVO createOrUpdateDomainRouter(DomainRouterVO router, final
502506
final RouterDeploymentDefinition routerDeploymentDefinition, final Account owner, final long userId,
503507
final ServiceOfferingVO routerOffering, final boolean offerHA, final Long vpcId,
504508
final VMTemplateVO template) {
509+
_templateDao.loadDetails(template);
505510
if (router == null) {
506511
router = new DomainRouterVO(id, routerOffering.getId(),
507512
routerDeploymentDefinition.getVirtualProvider().getId(),
@@ -516,6 +521,8 @@ protected DomainRouterVO createOrUpdateDomainRouter(DomainRouterVO router, final
516521
}
517522
router.setTemplateId(template.getId());
518523
router.setDynamicallyScalable(template.isDynamicallyScalable());
524+
router.setDetails(template.getDetails());
525+
userVmDetailsDao.saveDetails(router);
519526
_routerDao.update(router.getId(), router);
520527
return router;
521528
}

server/src/main/java/com/cloud/vm/UserVmManagerImpl.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1080,7 +1080,7 @@ private boolean resetVMSSHKeyInternal(Long vmId, String sshPublicKeys, String ke
10801080
_vmDao.loadDetails(userVm);
10811081
userVm.setDetail(VmDetailConstants.SSH_PUBLIC_KEY, sshPublicKeys);
10821082
userVm.setDetail(VmDetailConstants.SSH_KEY_PAIR_NAMES, keypairnames);
1083-
_vmDao.saveDetails(userVm);
1083+
userVmDetailsDao.saveDetails(userVm);
10841084

10851085
if (vmInstance.getState() == State.Stopped) {
10861086
logger.debug("Vm " + vmInstance + " is stopped, not rebooting it as a part of SSH Key reset");
@@ -2904,7 +2904,7 @@ public UserVm updateVirtualMachine(UpdateVMCmd cmd) throws ResourceUnavailableEx
29042904

29052905
verifyVmLimits(vmInstance, details);
29062906
vmInstance.setDetails(details);
2907-
_vmDao.saveDetails(vmInstance);
2907+
userVmDetailsDao.saveDetails(vmInstance);
29082908
}
29092909
if (StringUtils.isNotBlank(extraConfig)) {
29102910
if (EnableAdditionalVmConfig.valueIn(accountId)) {
@@ -4710,7 +4710,7 @@ private UserVmVO commitUserVm(final boolean isImport, final DataCenter zone, fin
47104710
if (customParameters.containsKey(VmDetailConstants.NAME_ON_HYPERVISOR)) {
47114711
hiddenDetails.add(VmDetailConstants.NAME_ON_HYPERVISOR);
47124712
}
4713-
_vmDao.saveDetails(vm, hiddenDetails);
4713+
userVmDetailsDao.saveDetails(vm, hiddenDetails);
47144714
if (!isImport) {
47154715
logger.debug("Allocating in the DB for vm");
47164716
DataCenterDeployment plan = new DataCenterDeployment(zone.getId());
@@ -8830,7 +8830,7 @@ private void encryptAndStorePassword(UserVmVO vm, String password) {
88308830
}
88318831

88328832
vm.setDetail(VmDetailConstants.ENCRYPTED_PASSWORD, encryptedPasswd);
8833-
_vmDao.saveDetails(vm);
8833+
userVmDetailsDao.saveDetails(vm);
88348834
}
88358835
}
88368836

@@ -8839,7 +8839,7 @@ public void persistDeviceBusInfo(UserVmVO vm, String rootDiskController) {
88398839
String existingVmRootDiskController = vm.getDetail(VmDetailConstants.ROOT_DISK_CONTROLLER);
88408840
if (StringUtils.isEmpty(existingVmRootDiskController) && StringUtils.isNotEmpty(rootDiskController)) {
88418841
vm.setDetail(VmDetailConstants.ROOT_DISK_CONTROLLER, rootDiskController);
8842-
_vmDao.saveDetails(vm);
8842+
userVmDetailsDao.saveDetails(vm);
88438843
if (logger.isDebugEnabled()) {
88448844
logger.debug("Persisted device bus information rootDiskController={} for vm: {}", rootDiskController, vm);
88458845
}

0 commit comments

Comments
 (0)