Skip to content

Commit bcbf152

Browse files
committed
Merge branch '4.18' into 4.19
2 parents 94503e6 + 983f164 commit bcbf152

File tree

11 files changed

+66
-19
lines changed

11 files changed

+66
-19
lines changed

api/src/main/java/com/cloud/vm/VirtualMachineProfile.java

+4
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,10 @@ public boolean equals(Object obj) {
192192

193193
Map<Param, Object> getParameters();
194194

195+
void setCpuOvercommitRatio(Float cpuOvercommitRatio);
196+
197+
void setMemoryOvercommitRatio(Float memoryOvercommitRatio);
198+
195199
Float getCpuOvercommitRatio();
196200

197201
Float getMemoryOvercommitRatio();

engine/components-api/src/main/java/com/cloud/resource/ResourceManager.java

+2
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,8 @@ public interface ResourceManager extends ResourceService, Configurable {
126126

127127
public List<HostVO> listAllUpAndEnabledHostsInOneZoneByHypervisor(HypervisorType type, long dcId);
128128

129+
public List<HostVO> listAllUpHostsInOneZoneByHypervisor(HypervisorType type, long dcId);
130+
129131
public List<HostVO> listAllUpAndEnabledHostsInOneZone(long dcId);
130132

131133
public List<HostVO> listAllHostsInOneZoneByType(Host.Type type, long dcId);

engine/components-api/src/main/java/com/cloud/vm/VirtualMachineProfileImpl.java

+2
Original file line numberDiff line numberDiff line change
@@ -264,11 +264,13 @@ public void setServiceOffering(ServiceOffering offering) {
264264
_offering = offering;
265265
}
266266

267+
@Override
267268
public void setCpuOvercommitRatio(Float cpuOvercommitRatio) {
268269
this.cpuOvercommitRatio = cpuOvercommitRatio;
269270

270271
}
271272

273+
@Override
272274
public void setMemoryOvercommitRatio(Float memoryOvercommitRatio) {
273275
this.memoryOvercommitRatio = memoryOvercommitRatio;
274276

engine/orchestration/src/main/java/com/cloud/agent/manager/AgentAttache.java

+5-2
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@
4444
import com.cloud.agent.api.CheckVirtualMachineCommand;
4545
import com.cloud.agent.api.CleanupNetworkRulesCmd;
4646
import com.cloud.agent.api.Command;
47+
import com.cloud.agent.api.CreateStoragePoolCommand;
48+
import com.cloud.agent.api.DeleteStoragePoolCommand;
4749
import com.cloud.agent.api.MaintainCommand;
4850
import com.cloud.agent.api.MigrateCommand;
4951
import com.cloud.agent.api.ModifySshKeysCommand;
@@ -119,8 +121,9 @@ public int compare(final Object o1, final Object o2) {
119121
StopCommand.class.toString(), CheckVirtualMachineCommand.class.toString(), PingTestCommand.class.toString(), CheckHealthCommand.class.toString(),
120122
ReadyCommand.class.toString(), ShutdownCommand.class.toString(), SetupCommand.class.toString(),
121123
CleanupNetworkRulesCmd.class.toString(), CheckNetworkCommand.class.toString(), PvlanSetupCommand.class.toString(), CheckOnHostCommand.class.toString(),
122-
ModifyTargetsCommand.class.toString(), ModifySshKeysCommand.class.toString(), ModifyStoragePoolCommand.class.toString(), SetupMSListCommand.class.toString(), RollingMaintenanceCommand.class.toString(),
123-
CleanupPersistentNetworkResourceCommand.class.toString()};
124+
ModifyTargetsCommand.class.toString(), ModifySshKeysCommand.class.toString(),
125+
CreateStoragePoolCommand.class.toString(), DeleteStoragePoolCommand.class.toString(), ModifyStoragePoolCommand.class.toString(),
126+
SetupMSListCommand.class.toString(), RollingMaintenanceCommand.class.toString(), CleanupPersistentNetworkResourceCommand.class.toString()};
124127
protected final static String[] s_commandsNotAllowedInConnectingMode = new String[] { StartCommand.class.toString(), CreateCommand.class.toString() };
125128
static {
126129
Arrays.sort(s_commandsAllowedInMaintenanceMode);

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

+25-15
Original file line numberDiff line numberDiff line change
@@ -1235,21 +1235,9 @@ public void orchestrateStart(final String vmUuid, final Map<VirtualMachineProfil
12351235

12361236
long destHostId = dest.getHost().getId();
12371237
vm.setPodIdToDeployIn(dest.getPod().getId());
1238-
final Long cluster_id = dest.getCluster().getId();
1239-
final ClusterDetailsVO cluster_detail_cpu = _clusterDetailsDao.findDetail(cluster_id, VmDetailConstants.CPU_OVER_COMMIT_RATIO);
1240-
final ClusterDetailsVO cluster_detail_ram = _clusterDetailsDao.findDetail(cluster_id, VmDetailConstants.MEMORY_OVER_COMMIT_RATIO);
1241-
1242-
if (userVmDetailsDao.findDetail(vm.getId(), VmDetailConstants.CPU_OVER_COMMIT_RATIO) == null &&
1243-
(Float.parseFloat(cluster_detail_cpu.getValue()) > 1f || Float.parseFloat(cluster_detail_ram.getValue()) > 1f)) {
1244-
userVmDetailsDao.addDetail(vm.getId(), VmDetailConstants.CPU_OVER_COMMIT_RATIO, cluster_detail_cpu.getValue(), true);
1245-
userVmDetailsDao.addDetail(vm.getId(), VmDetailConstants.MEMORY_OVER_COMMIT_RATIO, cluster_detail_ram.getValue(), true);
1246-
} else if (userVmDetailsDao.findDetail(vm.getId(), VmDetailConstants.CPU_OVER_COMMIT_RATIO) != null) {
1247-
userVmDetailsDao.addDetail(vm.getId(), VmDetailConstants.CPU_OVER_COMMIT_RATIO, cluster_detail_cpu.getValue(), true);
1248-
userVmDetailsDao.addDetail(vm.getId(), VmDetailConstants.MEMORY_OVER_COMMIT_RATIO, cluster_detail_ram.getValue(), true);
1249-
}
1238+
final Long clusterId = dest.getCluster().getId();
1239+
updateOverCommitRatioForVmProfile(vmProfile, clusterId);
12501240

1251-
vmProfile.setCpuOvercommitRatio(Float.parseFloat(cluster_detail_cpu.getValue()));
1252-
vmProfile.setMemoryOvercommitRatio(Float.parseFloat(cluster_detail_ram.getValue()));
12531241
StartAnswer startAnswer = null;
12541242

12551243
try {
@@ -1264,7 +1252,7 @@ public void orchestrateStart(final String vmUuid, final Map<VirtualMachineProfil
12641252
resetVmNicsDeviceId(vm.getId());
12651253
_networkMgr.prepare(vmProfile, dest, ctx);
12661254
if (vm.getHypervisorType() != HypervisorType.BareMetal) {
1267-
checkAndAttemptMigrateVmAcrossCluster(vm, cluster_id, dest.getStorageForDisks());
1255+
checkAndAttemptMigrateVmAcrossCluster(vm, clusterId, dest.getStorageForDisks());
12681256
volumeMgr.prepare(vmProfile, dest);
12691257
}
12701258

@@ -1462,6 +1450,27 @@ public void orchestrateStart(final String vmUuid, final Map<VirtualMachineProfil
14621450
}
14631451
}
14641452

1453+
private void updateOverCommitRatioForVmProfile(VirtualMachineProfile vmProfile, long clusterId) {
1454+
final ClusterDetailsVO clusterDetailCpu = _clusterDetailsDao.findDetail(clusterId, VmDetailConstants.CPU_OVER_COMMIT_RATIO);
1455+
final ClusterDetailsVO clusterDetailRam = _clusterDetailsDao.findDetail(clusterId, VmDetailConstants.MEMORY_OVER_COMMIT_RATIO);
1456+
final float parsedClusterCpuDetailCpu = Float.parseFloat(clusterDetailCpu.getValue());
1457+
final float parsedClusterDetailRam = Float.parseFloat(clusterDetailRam.getValue());
1458+
UserVmDetailVO vmDetailCpu = userVmDetailsDao.findDetail(vmProfile.getId(), VmDetailConstants.CPU_OVER_COMMIT_RATIO);
1459+
UserVmDetailVO vmDetailRam = userVmDetailsDao.findDetail(vmProfile.getId(), VmDetailConstants.MEMORY_OVER_COMMIT_RATIO);
1460+
1461+
if ((vmDetailCpu == null && parsedClusterCpuDetailCpu > 1f) ||
1462+
(vmDetailCpu != null && Float.parseFloat(vmDetailCpu.getValue()) != parsedClusterCpuDetailCpu)) {
1463+
userVmDetailsDao.addDetail(vmProfile.getId(), VmDetailConstants.CPU_OVER_COMMIT_RATIO, clusterDetailCpu.getValue(), true);
1464+
}
1465+
if ((vmDetailRam == null && parsedClusterDetailRam > 1f) ||
1466+
(vmDetailRam != null && Float.parseFloat(vmDetailRam.getValue()) != parsedClusterDetailRam)) {
1467+
userVmDetailsDao.addDetail(vmProfile.getId(), VmDetailConstants.MEMORY_OVER_COMMIT_RATIO, clusterDetailRam.getValue(), true);
1468+
}
1469+
1470+
vmProfile.setCpuOvercommitRatio(Float.parseFloat(clusterDetailCpu.getValue()));
1471+
vmProfile.setMemoryOvercommitRatio(Float.parseFloat(clusterDetailRam.getValue()));
1472+
}
1473+
14651474
/**
14661475
* Setting pod id to null can result in migration of Volumes across pods. This is not desirable for VMs which
14671476
* have a volume in Ready state (happens when a VM is shutdown and started again).
@@ -2736,6 +2745,7 @@ protected void migrate(final VMInstanceVO vm, final long srcHostId, final Deploy
27362745
_networkMgr.prepareNicForMigration(profile, dest);
27372746
volumeMgr.prepareForMigration(profile, dest);
27382747
profile.setConfigDriveLabel(VmConfigDriveLabel.value());
2748+
updateOverCommitRatioForVmProfile(profile, dest.getHost().getClusterId());
27392749

27402750
final VirtualMachineTO to = toVmTO(profile);
27412751
final PrepareForMigrationCommand pfmc = new PrepareForMigrationCommand(to);

engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/TemplateDataFactoryImpl.java

+3
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,9 @@ public TemplateInfo getTemplate(long templateId) {
9999
@Override
100100
public TemplateInfo getTemplate(long templateId, DataStore store) {
101101
VMTemplateVO templ = imageDataDao.findById(templateId);
102+
if (templ == null) {
103+
return null;
104+
}
102105
if (store == null && !templ.isDirectDownload()) {
103106
TemplateObject tmpl = TemplateObject.getTemplate(templ, null, null);
104107
return tmpl;

engine/storage/image/src/main/java/org/apache/cloudstack/storage/image/store/TemplateObject.java

+8
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,10 @@ public TemplateObject() {
8181
}
8282

8383
protected void configure(VMTemplateVO template, DataStore dataStore) {
84+
if (template == null) {
85+
String msg = String.format("Template Object is not properly initialised %s", this.toString());
86+
s_logger.warn(msg);
87+
}
8488
imageVO = template;
8589
this.dataStore = dataStore;
8690
}
@@ -97,6 +101,10 @@ public void setSize(Long size) {
97101
}
98102

99103
public VMTemplateVO getImage() {
104+
if (imageVO == null) {
105+
String msg = String.format("Template Object is not properly initialised %s", this.toString());
106+
s_logger.error(msg);
107+
} // somehow the nullpointer is needed : refacter needed!?!
100108
return imageVO;
101109
}
102110

plugins/storage/volume/default/src/main/java/org/apache/cloudstack/storage/datastore/lifecycle/CloudStackPrimaryDataStoreLifeCycleImpl.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -430,7 +430,7 @@ public boolean attachCluster(DataStore store, ClusterScope scope) {
430430

431431
@Override
432432
public boolean attachZone(DataStore dataStore, ZoneScope scope, HypervisorType hypervisorType) {
433-
List<HostVO> hosts = _resourceMgr.listAllUpAndEnabledHostsInOneZoneByHypervisor(hypervisorType, scope.getScopeId());
433+
List<HostVO> hosts = _resourceMgr.listAllUpHostsInOneZoneByHypervisor(hypervisorType, scope.getScopeId());
434434
s_logger.debug("In createPool. Attaching the pool to each of the hosts.");
435435
List<HostVO> poolHosts = new ArrayList<HostVO>();
436436
for (HostVO host : hosts) {

plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/driver/ScaleIOPrimaryDataStoreDriver.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1191,7 +1191,7 @@ public boolean isSameScaleIOStorageInstance(DataStore srcStore, DataStore destSt
11911191

11921192
@Override
11931193
public boolean canCopy(DataObject srcData, DataObject destData) {
1194-
DataStore srcStore = destData.getDataStore();
1194+
DataStore srcStore = srcData.getDataStore();
11951195
DataStore destStore = destData.getDataStore();
11961196
if ((srcStore.getRole() == DataStoreRole.Primary && (srcData.getType() == DataObjectType.TEMPLATE || srcData.getType() == DataObjectType.VOLUME))
11971197
&& (destStore.getRole() == DataStoreRole.Primary && destData.getType() == DataObjectType.VOLUME)) {

server/src/main/java/com/cloud/resource/ResourceManagerImpl.java

+9
Original file line numberDiff line numberDiff line change
@@ -3388,6 +3388,15 @@ public List<HostVO> listAllUpAndEnabledHostsInOneZoneByHypervisor(final Hypervis
33883388
return sc.list();
33893389
}
33903390

3391+
@Override
3392+
public List<HostVO> listAllUpHostsInOneZoneByHypervisor(final HypervisorType type, final long dcId) {
3393+
final QueryBuilder<HostVO> sc = QueryBuilder.create(HostVO.class);
3394+
sc.and(sc.entity().getHypervisorType(), Op.EQ, type);
3395+
sc.and(sc.entity().getDataCenterId(), Op.EQ, dcId);
3396+
sc.and(sc.entity().getStatus(), Op.EQ, Status.Up);
3397+
return sc.list();
3398+
}
3399+
33913400
@Override
33923401
public List<HostVO> listAllUpAndEnabledHostsInOneZone(final long dcId) {
33933402
final QueryBuilder<HostVO> sc = QueryBuilder.create(HostVO.class);

server/src/test/java/com/cloud/resource/MockResourceManagerImpl.java

+6
Original file line numberDiff line numberDiff line change
@@ -590,6 +590,12 @@ public List<HostVO> listAllUpAndEnabledHostsInOneZoneByHypervisor(final Hypervis
590590
return null;
591591
}
592592

593+
@Override
594+
public List<HostVO> listAllUpHostsInOneZoneByHypervisor(final HypervisorType type, final long dcId) {
595+
// TODO Auto-generated method stub
596+
return null;
597+
}
598+
593599
@Override
594600
public List<HostVO> listAllUpAndEnabledHostsInOneZone(final long dcId) {
595601
// TODO Auto-generated method stub

0 commit comments

Comments
 (0)