Skip to content

Commit 37ec820

Browse files
committed
Save systemvm template details for cpvm, ssvm and vr's.
1 parent a303c7c commit 37ec820

File tree

9 files changed

+118
-0
lines changed

9 files changed

+118
-0
lines changed

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ public interface ConsoleProxyDao extends GenericDao<ConsoleProxyVO, Long> {
2929

3030
public void update(long id, int activeSession, Date updateTime, byte[] sessionDetails);
3131

32+
public void saveDetails(ConsoleProxyVO vm);
33+
34+
public void saveDetails(ConsoleProxyVO vm, List<String> hiddenDetails);
35+
3236
public List<ConsoleProxyVO> getProxyListInStates(long dataCenterId, State... states);
3337

3438
public List<ConsoleProxyVO> getProxyListInStates(State... states);

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

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import java.util.ArrayList;
2323
import java.util.Date;
2424
import java.util.List;
25+
import java.util.Map;
2526

2627

2728
import org.springframework.stereotype.Component;
@@ -36,6 +37,9 @@
3637
import com.cloud.utils.db.UpdateBuilder;
3738
import com.cloud.vm.ConsoleProxyVO;
3839
import com.cloud.vm.VirtualMachine.State;
40+
import com.cloud.vm.UserVmDetailVO;
41+
42+
import javax.inject.Inject;
3943

4044
@Component
4145
public class ConsoleProxyDaoImpl extends GenericDaoBase<ConsoleProxyVO, Long> implements ConsoleProxyDao {
@@ -91,6 +95,9 @@ public class ConsoleProxyDaoImpl extends GenericDaoBase<ConsoleProxyVO, Long> im
9195

9296
protected final Attribute _updateTimeAttr;
9397

98+
@Inject
99+
protected UserVmDetailsDao _detailsDao;
100+
94101
public ConsoleProxyDaoImpl() {
95102
DataCenterStatusSearch = createSearchBuilder();
96103
DataCenterStatusSearch.and("dc", DataCenterStatusSearch.entity().getDataCenterId(), SearchCriteria.Op.EQ);
@@ -331,4 +338,27 @@ public List<ConsoleProxyVO> listByLastHostId(long hostId) {
331338
sc.setParameters("state", State.Stopped);
332339
return listBy(sc);
333340
}
341+
342+
@Override
343+
public void saveDetails(ConsoleProxyVO vm) {
344+
saveDetails(vm, new ArrayList<String>());
345+
}
346+
347+
@Override
348+
public void saveDetails(ConsoleProxyVO vm, List<String> hiddenDetails) {
349+
Map<String, String> detailsStr = vm.getDetails();
350+
if (detailsStr == null) {
351+
return;
352+
}
353+
354+
final Map<String, Boolean> visibilityMap = _detailsDao.listDetailsVisibility(vm.getId());
355+
356+
List<UserVmDetailVO> details = new ArrayList<UserVmDetailVO>();
357+
for (Map.Entry<String, String> entry : detailsStr.entrySet()) {
358+
boolean display = !hiddenDetails.contains(entry.getKey()) && visibilityMap.getOrDefault(entry.getKey(), true);
359+
details.add(new UserVmDetailVO(vm.getId(), entry.getKey(), entry.getValue(), display));
360+
}
361+
362+
_detailsDao.saveDetails(details);
363+
}
334364
}

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,11 @@ public interface DomainRouterDao extends GenericDao<DomainRouterVO, Long> {
9696
*/
9797
public List<DomainRouterVO> listRunningByDomain(Long id);
9898

99+
100+
public void saveDetails(DomainRouterVO vm);
101+
102+
public void saveDetails(DomainRouterVO vm, List<String> hiddenDetails);
103+
99104
/**
100105
* gets the total count by role
101106
* @Param role Router role

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

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import java.util.ArrayList;
2020
import java.util.List;
21+
import java.util.Map;
2122

2223
import javax.annotation.PostConstruct;
2324
import javax.inject.Inject;
@@ -48,6 +49,7 @@
4849
import com.cloud.utils.db.UpdateBuilder;
4950
import com.cloud.vm.DomainRouterVO;
5051
import com.cloud.vm.VirtualMachine.State;
52+
import com.cloud.vm.UserVmDetailVO;
5153

5254
@Component
5355
@DB
@@ -71,6 +73,9 @@ public class DomainRouterDaoImpl extends GenericDaoBase<DomainRouterVO, Long> im
7173
NetworkOfferingDao _offDao;
7274
protected SearchBuilder<DomainRouterVO> VpcSearch;
7375

76+
@Inject
77+
protected UserVmDetailsDao _detailsDao;
78+
7479
public DomainRouterDaoImpl() {
7580
}
7681

@@ -450,4 +455,27 @@ public List<DomainRouterVO> listIncludingRemovedByVpcId(long vpcId) {
450455
sc.setParameters("role", Role.VIRTUAL_ROUTER);
451456
return listIncludingRemovedBy(sc);
452457
}
458+
459+
@Override
460+
public void saveDetails(DomainRouterVO vm) {
461+
saveDetails(vm, new ArrayList<String>());
462+
}
463+
464+
@Override
465+
public void saveDetails(DomainRouterVO vm, List<String> hiddenDetails) {
466+
Map<String, String> detailsStr = vm.getDetails();
467+
if (detailsStr == null) {
468+
return;
469+
}
470+
471+
final Map<String, Boolean> visibilityMap = _detailsDao.listDetailsVisibility(vm.getId());
472+
473+
List<UserVmDetailVO> details = new ArrayList<UserVmDetailVO>();
474+
for (Map.Entry<String, String> entry : detailsStr.entrySet()) {
475+
boolean display = !hiddenDetails.contains(entry.getKey()) && visibilityMap.getOrDefault(entry.getKey(), true);
476+
details.add(new UserVmDetailVO(vm.getId(), entry.getKey(), entry.getValue(), display));
477+
}
478+
479+
_detailsDao.saveDetails(details);
480+
}
453481
}

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@
2525

2626
public interface SecondaryStorageVmDao extends GenericDao<SecondaryStorageVmVO, Long> {
2727

28+
public void saveDetails(SecondaryStorageVmVO vm);
29+
30+
public void saveDetails(SecondaryStorageVmVO vm, List<String> hiddenDetails);
31+
2832
public List<SecondaryStorageVmVO> getSecStorageVmListInStates(SecondaryStorageVm.Role role, long dataCenterId, State... states);
2933

3034
public List<SecondaryStorageVmVO> getSecStorageVmListInStates(SecondaryStorageVm.Role role, State... states);

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

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.sql.SQLException;
2222
import java.util.ArrayList;
2323
import java.util.List;
24+
import java.util.Map;
2425

2526

2627
import org.springframework.stereotype.Component;
@@ -34,6 +35,9 @@
3435
import com.cloud.vm.SecondaryStorageVm;
3536
import com.cloud.vm.SecondaryStorageVmVO;
3637
import com.cloud.vm.VirtualMachine.State;
38+
import com.cloud.vm.UserVmDetailVO;
39+
40+
import javax.inject.Inject;
3741

3842
@Component
3943
public class SecondaryStorageVmDaoImpl extends GenericDaoBase<SecondaryStorageVmVO, Long> implements SecondaryStorageVmDao {
@@ -49,6 +53,9 @@ public class SecondaryStorageVmDaoImpl extends GenericDaoBase<SecondaryStorageVm
4953

5054
protected final Attribute _updateTimeAttr;
5155

56+
@Inject
57+
protected UserVmDetailsDao _detailsDao;
58+
5259
public SecondaryStorageVmDaoImpl() {
5360
DataCenterStatusSearch = createSearchBuilder();
5461
DataCenterStatusSearch.and("dc", DataCenterStatusSearch.entity().getDataCenterId(), SearchCriteria.Op.EQ);
@@ -266,4 +273,27 @@ public List<Long> listRunningSecStorageOrderByLoad(SecondaryStorageVm.Role role,
266273

267274
return l;
268275
}
276+
277+
@Override
278+
public void saveDetails(SecondaryStorageVmVO vm) {
279+
saveDetails(vm, new ArrayList<String>());
280+
}
281+
282+
@Override
283+
public void saveDetails(SecondaryStorageVmVO vm, List<String> hiddenDetails) {
284+
Map<String, String> detailsStr = vm.getDetails();
285+
if (detailsStr == null) {
286+
return;
287+
}
288+
289+
final Map<String, Boolean> visibilityMap = _detailsDao.listDetailsVisibility(vm.getId());
290+
291+
List<UserVmDetailVO> details = new ArrayList<UserVmDetailVO>();
292+
for (Map.Entry<String, String> entry : detailsStr.entrySet()) {
293+
boolean display = !hiddenDetails.contains(entry.getKey()) && visibilityMap.getOrDefault(entry.getKey(), true);
294+
details.add(new UserVmDetailVO(vm.getId(), entry.getKey(), entry.getValue(), display));
295+
}
296+
297+
_detailsDao.saveDetails(details);
298+
}
269299
}

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,8 @@ public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxy
230230
private CAManager caManager;
231231
@Inject
232232
private NetworkOrchestrationService networkMgr;
233+
@Inject
234+
private VMTemplateDao _templateDao;
233235

234236
private ConsoleProxyListener consoleProxyListener;
235237

@@ -685,6 +687,10 @@ protected Map<String, Object> createProxyInstance(long dataCenterId, VMTemplateV
685687
DataCenterVO dc = dataCenterDao.findById(dataCenterId);
686688
Account systemAcct = accountManager.getSystemAccount();
687689

690+
if (template != null) {
691+
_templateDao.loadDetails(template);
692+
}
693+
688694
DataCenterDeployment plan = new DataCenterDeployment(dataCenterId);
689695

690696
NetworkVO defaultNetwork = getDefaultNetworkForCreation(dc);
@@ -713,6 +719,8 @@ protected Map<String, Object> createProxyInstance(long dataCenterId, VMTemplateV
713719
proxy.setDynamicallyScalable(template.isDynamicallyScalable());
714720
proxy.setLimitCpuUse(serviceOffering.getLimitCpuUse());
715721
proxy = consoleProxyDao.persist(proxy);
722+
proxy.setDetails(template.getDetails());
723+
consoleProxyDao.saveDetails(proxy);
716724
try {
717725
virtualMachineManager.allocate(name, template, serviceOffering, networks, plan, null);
718726
} catch (InsufficientCapacityException e) {

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -531,6 +531,8 @@ public DomainRouterVO deployRouter(final RouterDeploymentDefinition routerDeploy
531531
continue;
532532
}
533533

534+
_templateDao.loadDetails(template);
535+
534536
final boolean offerHA = routerOffering.isOfferHA();
535537

536538
// routerDeploymentDefinition.getVpc().getId() ==> do not use
@@ -554,6 +556,9 @@ public DomainRouterVO deployRouter(final RouterDeploymentDefinition routerDeploy
554556
router.setLimitCpuUse(routerOffering.getLimitCpuUse());
555557
router = _routerDao.persist(router);
556558

559+
router.setDetails(template.getDetails());
560+
_routerDao.saveDetails(router);
561+
557562
reallocateRouterNetworks(routerDeploymentDefinition, router, template, null);
558563
router = _routerDao.findById(router.getId());
559564
} catch (final InsufficientCapacityException ex) {

services/secondary-storage/controller/src/main/java/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -659,6 +659,8 @@ protected Map<String, Object> createSecStorageVmInstance(long dataCenterId, Seco
659659
throw new CloudRuntimeException(String.format("Unable to find the system templates or it was not downloaded in %s.", dc.toString()));
660660
}
661661

662+
_templateDao.loadDetails(template);
663+
662664
ServiceOfferingVO serviceOffering = _serviceOffering;
663665
if (serviceOffering == null) {
664666
serviceOffering = _offeringDao.findDefaultSystemOffering(ServiceOffering.ssvmDefaultOffUniqueName, ConfigurationManagerImpl.SystemVMUseLocalStorage.valueIn(dataCenterId));
@@ -669,6 +671,8 @@ protected Map<String, Object> createSecStorageVmInstance(long dataCenterId, Seco
669671
secStorageVm.setDynamicallyScalable(template.isDynamicallyScalable());
670672
secStorageVm.setLimitCpuUse(serviceOffering.getLimitCpuUse());
671673
secStorageVm = _secStorageVmDao.persist(secStorageVm);
674+
secStorageVm.setDetails(template.getDetails());
675+
_secStorageVmDao.saveDetails(secStorageVm);
672676
try {
673677
_itMgr.allocate(name, template, serviceOffering, networks, plan, null);
674678
secStorageVm = _secStorageVmDao.findById(secStorageVm.getId());

0 commit comments

Comments
 (0)