This is an automated email from the ASF dual-hosted git repository.
bhaisaab pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/master by this push:
new 088cca2 CLOUDSTACK-9997: Add cpu cores information in CapacityResponse
088cca2 is described below
commit 088cca2b2897846637eb5433bb0e344569005265
Author: Wei Zhou <[email protected]>
AuthorDate: Thu Jul 13 02:36:58 2017 +0200
CLOUDSTACK-9997: Add cpu cores information in CapacityResponse
This commit contains following changes
(1) add CPU CORE information in op_host_capacity
(2) add capacity name in the CapacityResponse
(3) add allocatedCapacity for CPU/MEMORY/CPU CORE for zones
(4) sort CapacityResponse by zonename and CapacityType
---
api/src/com/cloud/capacity/Capacity.java | 4 ++
.../command/admin/resource/ListCapacityCmd.java | 16 +++++-
.../cloudstack/api/response/CapacityResponse.java | 24 ++++++++
.../schema/src/com/cloud/capacity/CapacityVO.java | 34 ++++++++++++
.../com/cloud/capacity/dao/CapacityDaoImpl.java | 64 +++++++++++++++++++++-
server/src/com/cloud/api/ApiResponseHelper.java | 9 +++
.../com/cloud/capacity/CapacityManagerImpl.java | 53 ++++++++++++++++++
.../src/com/cloud/server/ManagementServerImpl.java | 1 +
ui/scripts/dashboard.js | 2 -
ui/scripts/sharedFunctions.js | 2 +
ui/scripts/ui-custom/zoneChart.js | 3 +
11 files changed, 207 insertions(+), 5 deletions(-)
diff --git a/api/src/com/cloud/capacity/Capacity.java
b/api/src/com/cloud/capacity/Capacity.java
index 2fbc1d6..ba04a82 100644
--- a/api/src/com/cloud/capacity/Capacity.java
+++ b/api/src/com/cloud/capacity/Capacity.java
@@ -32,6 +32,8 @@ public interface Capacity extends InternalIdentity, Identity {
public static final short CAPACITY_TYPE_LOCAL_STORAGE = 9;
public static final short CAPACITY_TYPE_GPU = 19;
+ public static final short CAPACITY_TYPE_CPU_CORE = 90;
+
public Long getHostOrPoolId();
public Long getDataCenterId();
@@ -49,4 +51,6 @@ public interface Capacity extends InternalIdentity, Identity {
public long getReservedCapacity();
public Float getUsedPercentage();
+
+ public Long getAllocatedCapacity();
}
diff --git
a/api/src/org/apache/cloudstack/api/command/admin/resource/ListCapacityCmd.java
b/api/src/org/apache/cloudstack/api/command/admin/resource/ListCapacityCmd.java
index d79ff07..76ca3a7 100644
---
a/api/src/org/apache/cloudstack/api/command/admin/resource/ListCapacityCmd.java
+++
b/api/src/org/apache/cloudstack/api/command/admin/resource/ListCapacityCmd.java
@@ -17,6 +17,8 @@
package org.apache.cloudstack.api.command.admin.resource;
import java.text.DecimalFormat;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.List;
import org.apache.log4j.Logger;
@@ -65,7 +67,8 @@ public class ListCapacityCmd extends BaseListCmd {
@Parameter(name = ApiConstants.TYPE, type = CommandType.INTEGER,
description = "lists capacity by type" + "* CAPACITY_TYPE_MEMORY = 0" + "*
CAPACITY_TYPE_CPU = 1"
+ "* CAPACITY_TYPE_STORAGE = 2" + "* CAPACITY_TYPE_STORAGE_ALLOCATED =
3" + "* CAPACITY_TYPE_VIRTUAL_NETWORK_PUBLIC_IP = 4" + "*
CAPACITY_TYPE_PRIVATE_IP = 5"
- + "* CAPACITY_TYPE_SECONDARY_STORAGE = 6" + "* CAPACITY_TYPE_VLAN = 7"
+ "* CAPACITY_TYPE_DIRECT_ATTACHED_PUBLIC_IP = 8" + "*
CAPACITY_TYPE_LOCAL_STORAGE = 9.")
+ + "* CAPACITY_TYPE_SECONDARY_STORAGE = 6" + "* CAPACITY_TYPE_VLAN = 7"
+ "* CAPACITY_TYPE_DIRECT_ATTACHED_PUBLIC_IP = 8" + "*
CAPACITY_TYPE_LOCAL_STORAGE = 9"
+ + "* CAPACITY_TYPE_GPU = 19" + "* CAPACITY_TYPE_CPU_CORE = 90.")
private Integer type;
@Parameter(name = ApiConstants.SORT_BY, type = CommandType.STRING, since =
"3.0.0", description = "Sort the results. Available values: Usage")
@@ -127,6 +130,17 @@ public class ListCapacityCmd extends BaseListCmd {
ListResponse<CapacityResponse> response = new
ListResponse<CapacityResponse>();
List<CapacityResponse> capacityResponses =
_responseGenerator.createCapacityResponse(result, s_percentFormat);
+ Collections.sort(capacityResponses, new Comparator<CapacityResponse>()
{
+ public int compare(CapacityResponse resp1, CapacityResponse resp2)
{
+ int res = resp1.getZoneName().compareTo(resp2.getZoneName());
+ if (res != 0) {
+ return res;
+ } else {
+ return
resp1.getCapacityType().compareTo(resp2.getCapacityType());
+ }
+ }
+ });
+
response.setResponses(capacityResponses);
response.setResponseName(getCommandName());
this.setResponseObject(response);
diff --git a/api/src/org/apache/cloudstack/api/response/CapacityResponse.java
b/api/src/org/apache/cloudstack/api/response/CapacityResponse.java
index 460e4af..e972449 100644
--- a/api/src/org/apache/cloudstack/api/response/CapacityResponse.java
+++ b/api/src/org/apache/cloudstack/api/response/CapacityResponse.java
@@ -28,6 +28,10 @@ public class CapacityResponse extends BaseResponse {
@Param(description = "the capacity type")
private Short capacityType;
+ @SerializedName(ApiConstants.NAME)
+ @Param(description="the capacity name")
+ private String capacityName;
+
@SerializedName(ApiConstants.ZONE_ID)
@Param(description = "the Zone ID")
private String zoneId;
@@ -52,6 +56,10 @@ public class CapacityResponse extends BaseResponse {
@Param(description = "the Cluster name")
private String clusterName;
+ @SerializedName("capacityallocated")
+ @Param(description="the capacity currently in allocated")
+ private Long capacityAllocated;
+
@SerializedName("capacityused")
@Param(description = "the capacity currently in use")
private Long capacityUsed;
@@ -72,6 +80,14 @@ public class CapacityResponse extends BaseResponse {
this.capacityType = capacityType;
}
+ public String getCapacityName() {
+ return capacityName;
+ }
+
+ public void setCapacityName(String capacityName) {
+ this.capacityName = capacityName;
+ }
+
public String getZoneId() {
return zoneId;
}
@@ -120,6 +136,14 @@ public class CapacityResponse extends BaseResponse {
this.clusterName = clusterName;
}
+ public Long getCapacityAllocated() {
+ return capacityAllocated;
+ }
+
+ public void setCapacityAllocated(Long capacityAllocated) {
+ this.capacityAllocated = capacityAllocated;
+ }
+
public Long getCapacityUsed() {
return capacityUsed;
}
diff --git a/engine/schema/src/com/cloud/capacity/CapacityVO.java
b/engine/schema/src/com/cloud/capacity/CapacityVO.java
index 8df5c86..aaae874 100644
--- a/engine/schema/src/com/cloud/capacity/CapacityVO.java
+++ b/engine/schema/src/com/cloud/capacity/CapacityVO.java
@@ -17,6 +17,8 @@
package com.cloud.capacity;
import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
import javax.persistence.Column;
import javax.persistence.Entity;
@@ -75,6 +77,9 @@ public class CapacityVO implements Capacity {
@Transient
private Float usedPercentage;
+ @Transient
+ private Long allocatedCapacity;
+
public CapacityVO() {
}
@@ -208,8 +213,37 @@ public class CapacityVO implements Capacity {
this.usedPercentage = usedPercentage;
}
+ public Long getAllocatedCapacity() {
+ return allocatedCapacity;
+ }
+
+ public void setAllocatedCapacity(Long allocatedCapacity) {
+ this.allocatedCapacity = allocatedCapacity;
+ }
+
@Override
public String getUuid() {
return null; //To change body of implemented methods use File |
Settings | File Templates.
}
+
+ private static Map<Short, String> capacityNames = null;
+ static {
+ capacityNames = new HashMap<Short, String>();
+ capacityNames.put(CAPACITY_TYPE_MEMORY, "MEMORY");
+ capacityNames.put(CAPACITY_TYPE_CPU, "CPU");
+ capacityNames.put(CAPACITY_TYPE_STORAGE, "STORAGE");
+ capacityNames.put(CAPACITY_TYPE_STORAGE_ALLOCATED,
"STORAGE_ALLOCATED");
+ capacityNames.put(CAPACITY_TYPE_VIRTUAL_NETWORK_PUBLIC_IP,
"VIRTUAL_NETWORK_PUBLIC_IP");
+ capacityNames.put(CAPACITY_TYPE_PRIVATE_IP, "PRIVATE_IP");
+ capacityNames.put(CAPACITY_TYPE_SECONDARY_STORAGE,
"SECONDARY_STORAGE");
+ capacityNames.put(CAPACITY_TYPE_VLAN, "VLAN");
+ capacityNames.put(CAPACITY_TYPE_DIRECT_ATTACHED_PUBLIC_IP,
"DIRECT_ATTACHED_PUBLIC_IP");
+ capacityNames.put(CAPACITY_TYPE_LOCAL_STORAGE, "LOCAL_STORAGE");
+ capacityNames.put(CAPACITY_TYPE_GPU, "GPU");
+ capacityNames.put(CAPACITY_TYPE_CPU_CORE, "CPU_CORE");
+ }
+
+ public static String getCapacityName (Short capacityType) {
+ return capacityNames.get(capacityType);
+ }
}
diff --git a/engine/schema/src/com/cloud/capacity/dao/CapacityDaoImpl.java
b/engine/schema/src/com/cloud/capacity/dao/CapacityDaoImpl.java
index f4e7805..5b14bd4 100644
--- a/engine/schema/src/com/cloud/capacity/dao/CapacityDaoImpl.java
+++ b/engine/schema/src/com/cloud/capacity/dao/CapacityDaoImpl.java
@@ -187,6 +187,17 @@ public class CapacityDaoImpl extends
GenericDaoBase<CapacityVO, Long> implements
+
"from op_host_capacity capacity where cluster_id = ? and
capacity_type = ?;";
+ private static final String
LIST_ALLOCATED_CAPACITY_GROUP_BY_CAPACITY_AND_ZONE = "SELECT v.data_center_id,
SUM(cpu) AS cpucore, " +
+ "SUM(cpu * speed) AS cpu, SUM(ram_size * 1024 * 1024) AS
memory " +
+ "FROM (SELECT vi.data_center_id, (CASE WHEN
ISNULL(service_offering.cpu) THEN custom_cpu.value ELSE service_offering.cpu
end) AS cpu, " +
+ "(CASE WHEN ISNULL(service_offering.speed) THEN
custom_speed.value ELSE service_offering.speed end) AS speed, " +
+ "(CASE WHEN ISNULL(service_offering.ram_size) THEN
custom_ram_size.value ELSE service_offering.ram_size end) AS ram_size " +
+ "FROM (((vm_instance vi LEFT JOIN service_offering
ON(((vi.service_offering_id = service_offering.id))) " +
+ "LEFT JOIN user_vm_details custom_cpu ON(((custom_cpu.vm_id =
vi.id) AND (custom_cpu.name = 'CpuNumber')))) " +
+ "LEFT JOIN user_vm_details custom_speed
ON(((custom_speed.vm_id = vi.id) AND (custom_speed.name = 'CpuSpeed')))) " +
+ "LEFT JOIN user_vm_details custom_ram_size
ON(((custom_ram_size.vm_id = vi.id) AND (custom_ram_size.name = 'memory')))) " +
+ "WHERE ISNULL(vi.removed) AND vi.state NOT IN ('Destroyed',
'Error', 'Expunging')";
+
public CapacityDaoImpl() {
_hostIdTypeSearch = createSearchBuilder();
_hostIdTypeSearch.and("hostId",
_hostIdTypeSearch.entity().getHostOrPoolId(), SearchCriteria.Op.EQ);
@@ -407,6 +418,33 @@ public class CapacityDaoImpl extends
GenericDaoBase<CapacityVO, Long> implements
PreparedStatement pstmt = null;
List<SummedCapacity> results = new ArrayList<SummedCapacity>();
+ StringBuilder allocatedSql = new
StringBuilder(LIST_ALLOCATED_CAPACITY_GROUP_BY_CAPACITY_AND_ZONE);
+
+ HashMap<Long, Long> sumCpuCore = new HashMap<Long, Long>();
+ HashMap<Long, Long> sumCpu = new HashMap<Long, Long>();
+ HashMap<Long, Long> sumMemory = new HashMap<Long, Long>();
+ if (zoneId != null){
+ allocatedSql.append(" AND vi.data_center_id = ?");
+ }
+ allocatedSql.append(" ) AS v GROUP BY v.data_center_id");
+ try {
+ if (podId == null && clusterId == null) {
+ // add allocated capacity of zone in result
+ pstmt = txn.prepareAutoCloseStatement(allocatedSql.toString());
+ if (zoneId != null){
+ pstmt.setLong(1, zoneId);
+ }
+ ResultSet rs = pstmt.executeQuery();
+ if (rs.next()) {
+ sumCpuCore.put(rs.getLong(1), rs.getLong(2));
+ sumCpu.put(rs.getLong(1), rs.getLong(3));
+ sumMemory.put(rs.getLong(1), rs.getLong(4));
+ }
+ }
+ } catch (SQLException e) {
+ throw new CloudRuntimeException("DB Exception on: " +
allocatedSql, e);
+ }
+
StringBuilder sql = new
StringBuilder(LIST_CAPACITY_GROUP_BY_CAPACITY_PART1);
List<Long> resourceIdList = new ArrayList<Long>();
@@ -427,7 +465,11 @@ public class CapacityDaoImpl extends
GenericDaoBase<CapacityVO, Long> implements
resourceIdList.add(capacityType.longValue());
}
- sql.append(LIST_CAPACITY_GROUP_BY_CAPACITY_DATA_CENTER_POD_CLUSTER);
+ if (podId == null && clusterId == null) {
+ sql.append(" GROUP BY capacity_type, data_center_id");
+ } else {
+
sql.append(LIST_CAPACITY_GROUP_BY_CAPACITY_DATA_CENTER_POD_CLUSTER);
+ }
try {
pstmt = txn.prepareAutoCloseStatement(sql.toString());
@@ -438,6 +480,7 @@ public class CapacityDaoImpl extends
GenericDaoBase<CapacityVO, Long> implements
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
+ Long capacityZoneId = rs.getLong(6);
Long capacityPodId = null;
Long capacityClusterId = null;
@@ -450,6 +493,16 @@ public class CapacityDaoImpl extends
GenericDaoBase<CapacityVO, Long> implements
(short)rs.getLong(5), rs.getLong(6),
capacityPodId, capacityClusterId);
+ if (podId == null && clusterId == null) {
+ Short sumCapacityType = summedCapacity.getCapacityType();
+ if (sumCapacityType == CapacityVO.CAPACITY_TYPE_MEMORY) {
+
summedCapacity.setAllocatedCapacity(sumMemory.get(capacityZoneId));
+ } else if (sumCapacityType ==
CapacityVO.CAPACITY_TYPE_CPU) {
+
summedCapacity.setAllocatedCapacity(sumCpu.get(capacityZoneId));
+ } else if (sumCapacityType ==
CapacityVO.CAPACITY_TYPE_CPU_CORE) {
+
summedCapacity.setAllocatedCapacity(sumCpuCore.get(capacityZoneId));
+ }
+ }
results.add(summedCapacity);
}
HashMap<String, SummedCapacity> capacityMap = new HashMap<String,
SummedCapacity>();
@@ -460,7 +513,7 @@ public class CapacityDaoImpl extends
GenericDaoBase<CapacityVO, Long> implements
}
else {
// sum the values based on the zoneId.
-
key=String.valueOf(result.getDataCenterId())+String.valueOf(result.getCapacityType());
+ key=String.valueOf(result.getDataCenterId()) + "-" +
String.valueOf(result.getCapacityType());
}
SummedCapacity tempCapacity=null;
if (capacityMap.containsKey(key)) {
@@ -589,6 +642,7 @@ public class CapacityDaoImpl extends
GenericDaoBase<CapacityVO, Long> implements
}
public static class SummedCapacity {
+ public Long sumAllocated;
public long sumUsed;
public long sumReserved;
public long sumTotal;
@@ -679,6 +733,12 @@ public class CapacityDaoImpl extends
GenericDaoBase<CapacityVO, Long> implements
public void setClusterId(Long clusterId) {
this.clusterId=clusterId;
}
+ public Long getAllocatedCapacity() {
+ return sumAllocated;
+ }
+ public void setAllocatedCapacity(Long sumAllocated) {
+ this.sumAllocated = sumAllocated;
+ }
}
@Override
diff --git a/server/src/com/cloud/api/ApiResponseHelper.java
b/server/src/com/cloud/api/ApiResponseHelper.java
index c03d367..9a09917 100644
--- a/server/src/com/cloud/api/ApiResponseHelper.java
+++ b/server/src/com/cloud/api/ApiResponseHelper.java
@@ -958,6 +958,7 @@ public class ApiResponseHelper implements ResponseGenerator
{
for (SummedCapacity capacity : capacities) {
CapacityResponse capacityResponse = new CapacityResponse();
capacityResponse.setCapacityType(capacity.getCapacityType());
+
capacityResponse.setCapacityName(CapacityVO.getCapacityName(capacity.getCapacityType()));
capacityResponse.setCapacityUsed(capacity.getUsedCapacity() +
capacity.getReservedCapacity());
if (capacity.getCapacityType() ==
Capacity.CAPACITY_TYPE_STORAGE_ALLOCATED) {
List<SummedCapacity> c =
ApiDBUtils.findNonSharedStorageForClusterPodZone(null, pod.getId(), null);
@@ -994,6 +995,7 @@ public class ApiResponseHelper implements ResponseGenerator
{
for (SummedCapacity capacity : capacities) {
CapacityResponse capacityResponse = new CapacityResponse();
capacityResponse.setCapacityType(capacity.getCapacityType());
+
capacityResponse.setCapacityName(CapacityVO.getCapacityName(capacity.getCapacityType()));
capacityResponse.setCapacityUsed(capacity.getUsedCapacity() +
capacity.getReservedCapacity());
if (capacity.getCapacityType() ==
Capacity.CAPACITY_TYPE_STORAGE_ALLOCATED) {
List<SummedCapacity> c =
ApiDBUtils.findNonSharedStorageForClusterPodZone(zoneId, null, null);
@@ -1026,6 +1028,7 @@ public class ApiResponseHelper implements
ResponseGenerator {
for (CapacityVO capacity : capacities) {
CapacityResponse capacityResponse = new CapacityResponse();
capacityResponse.setCapacityType(capacity.getCapacityType());
+
capacityResponse.setCapacityName(CapacityVO.getCapacityName(capacity.getCapacityType()));
capacityResponse.setCapacityUsed(capacity.getUsedCapacity());
capacityResponse.setCapacityTotal(capacity.getTotalCapacity());
if (capacityResponse.getCapacityTotal() != 0) {
@@ -1110,6 +1113,7 @@ public class ApiResponseHelper implements
ResponseGenerator {
for (SummedCapacity capacity : capacities) {
CapacityResponse capacityResponse = new CapacityResponse();
capacityResponse.setCapacityType(capacity.getCapacityType());
+
capacityResponse.setCapacityName(CapacityVO.getCapacityName(capacity.getCapacityType()));
capacityResponse.setCapacityUsed(capacity.getUsedCapacity() +
capacity.getReservedCapacity());
if (capacity.getCapacityType() ==
Capacity.CAPACITY_TYPE_STORAGE_ALLOCATED) {
@@ -1606,7 +1610,11 @@ public class ApiResponseHelper implements
ResponseGenerator {
for (Capacity summedCapacity : result) {
CapacityResponse capacityResponse = new CapacityResponse();
capacityResponse.setCapacityTotal(summedCapacity.getTotalCapacity());
+ if (summedCapacity.getAllocatedCapacity() != null) {
+
capacityResponse.setCapacityAllocated(summedCapacity.getAllocatedCapacity());
+ }
capacityResponse.setCapacityType(summedCapacity.getCapacityType());
+
capacityResponse.setCapacityName(CapacityVO.getCapacityName(summedCapacity.getCapacityType()));
capacityResponse.setCapacityUsed(summedCapacity.getUsedCapacity());
if (summedCapacity.getPodId() != null) {
capacityResponse.setPodId(ApiDBUtils.findPodById(summedCapacity.getPodId()).getUuid());
@@ -1677,6 +1685,7 @@ public class ApiResponseHelper implements
ResponseGenerator {
capacityResponse.setClusterName(cluster.getName());
}
capacityResponse.setCapacityType(Capacity.CAPACITY_TYPE_GPU);
+
capacityResponse.setCapacityName(CapacityVO.getCapacityName(Capacity.CAPACITY_TYPE_GPU));
capacityResponse.setCapacityUsed((long)Math.ceil(capacityUsed));
capacityResponse.setCapacityTotal(capacityMax);
if (capacityMax > 0) {
diff --git a/server/src/com/cloud/capacity/CapacityManagerImpl.java
b/server/src/com/cloud/capacity/CapacityManagerImpl.java
index caf91a9..9cc5e42 100644
--- a/server/src/com/cloud/capacity/CapacityManagerImpl.java
+++ b/server/src/com/cloud/capacity/CapacityManagerImpl.java
@@ -591,6 +591,8 @@ public class CapacityManagerImpl extends ManagerBase
implements CapacityManager,
offeringsMap.put(offering.getId(), offering);
}
+ long usedCpuCore = 0;
+ long reservedCpuCore = 0;
long usedCpu = 0;
long usedMemory = 0;
long reservedMemory = 0;
@@ -626,9 +628,11 @@ public class CapacityManagerImpl extends ManagerBase
implements CapacityManager,
usedCpu +=
((Integer.parseInt(vmDetails.get(UsageEventVO.DynamicParameters.cpuNumber.name()))
*
Integer.parseInt(vmDetails.get(UsageEventVO.DynamicParameters.cpuSpeed.name())))
/ cpuOvercommitRatio) *
clusterCpuOvercommitRatio;
+ usedCpuCore +=
Integer.parseInt(vmDetails.get(UsageEventVO.DynamicParameters.cpuNumber.name()));
} else {
usedMemory += ((so.getRamSize() * 1024L * 1024L) /
ramOvercommitRatio) * clusterRamOvercommitRatio;
usedCpu += ((so.getCpu() * so.getSpeed()) /
cpuOvercommitRatio) * clusterCpuOvercommitRatio;
+ usedCpuCore += so.getCpu();
}
}
@@ -655,9 +659,11 @@ public class CapacityManagerImpl extends ManagerBase
implements CapacityManager,
reservedCpu +=
((Integer.parseInt(vmDetails.get(UsageEventVO.DynamicParameters.cpuNumber.name()))
*
Integer.parseInt(vmDetails.get(UsageEventVO.DynamicParameters.cpuSpeed.name())))
/ cpuOvercommitRatio) *
clusterCpuOvercommitRatio;
+ reservedCpuCore +=
Integer.parseInt(vmDetails.get(UsageEventVO.DynamicParameters.cpuNumber.name()));
} else {
reservedMemory += ((so.getRamSize() * 1024L * 1024L) /
ramOvercommitRatio) * clusterRamOvercommitRatio;
reservedCpu += (so.getCpu() * so.getSpeed() /
cpuOvercommitRatio) * clusterCpuOvercommitRatio;
+ reservedCpuCore += so.getCpu();
}
} else {
// signal if not done already, that the VM has been stopped
for skip.counting.hours,
@@ -678,6 +684,53 @@ public class CapacityManagerImpl extends ManagerBase
implements CapacityManager,
CapacityVO cpuCap = _capacityDao.findByHostIdType(host.getId(),
Capacity.CAPACITY_TYPE_CPU);
CapacityVO memCap = _capacityDao.findByHostIdType(host.getId(),
Capacity.CAPACITY_TYPE_MEMORY);
+ CapacityVO cpuCoreCap = _capacityDao.findByHostIdType(host.getId(),
CapacityVO.CAPACITY_TYPE_CPU_CORE);
+
+ if (cpuCoreCap != null) {
+ long hostTotalCpuCore = host.getCpus().longValue();
+
+ if (cpuCoreCap.getTotalCapacity() != hostTotalCpuCore) {
+ s_logger.debug("Calibrate total cpu for host: " + host.getId()
+ " old total CPU:"
+ + cpuCoreCap.getTotalCapacity() + " new total CPU:" +
hostTotalCpuCore);
+ cpuCoreCap.setTotalCapacity(hostTotalCpuCore);
+
+ }
+
+ if (cpuCoreCap.getUsedCapacity() == usedCpuCore &&
cpuCoreCap.getReservedCapacity() == reservedCpuCore) {
+ s_logger.debug("No need to calibrate cpu capacity, host:" +
host.getId() + " usedCpuCore: " + cpuCoreCap.getUsedCapacity()
+ + " reservedCpuCore: " +
cpuCoreCap.getReservedCapacity());
+ } else {
+ if (cpuCoreCap.getReservedCapacity() != reservedCpuCore) {
+ s_logger.debug("Calibrate reserved cpu core for host: " +
host.getId() + " old reservedCpuCore:"
+ + cpuCoreCap.getReservedCapacity() + " new
reservedCpuCore:" + reservedCpuCore);
+ cpuCoreCap.setReservedCapacity(reservedCpuCore);
+ }
+ if (cpuCoreCap.getUsedCapacity() != usedCpuCore) {
+ s_logger.debug("Calibrate used cpu core for host: " +
host.getId() + " old usedCpuCore:"
+ + cpuCoreCap.getUsedCapacity() + " new
usedCpuCore:" + usedCpuCore);
+ cpuCoreCap.setUsedCapacity(usedCpuCore);
+ }
+ }
+ try {
+ _capacityDao.update(cpuCoreCap.getId(), cpuCoreCap);
+ } catch (Exception e) {
+ s_logger.error("Caught exception while updating cpucore
capacity for the host " +host.getId(), e);
+ }
+ } else {
+ final long usedCpuCoreFinal = usedCpuCore;
+ final long reservedCpuCoreFinal = reservedCpuCore;
+ Transaction.execute(new TransactionCallbackNoReturn() {
+ @Override
+ public void doInTransactionWithoutResult(TransactionStatus
status) {
+ CapacityVO capacity = new CapacityVO(host.getId(),
host.getDataCenterId(), host.getPodId(), host.getClusterId(), usedCpuCoreFinal,
host.getCpus().longValue(),
+ CapacityVO.CAPACITY_TYPE_CPU_CORE);
+ capacity.setReservedCapacity(reservedCpuCoreFinal);
+ capacity.setCapacityState(capacityState);
+ _capacityDao.persist(capacity);
+ }
+ });
+ }
+
if (cpuCap != null && memCap != null) {
if (host.getTotalMemory() != null) {
memCap.setTotalCapacity(host.getTotalMemory());
diff --git a/server/src/com/cloud/server/ManagementServerImpl.java
b/server/src/com/cloud/server/ManagementServerImpl.java
index b14086a..f0ebe56 100644
--- a/server/src/com/cloud/server/ManagementServerImpl.java
+++ b/server/src/com/cloud/server/ManagementServerImpl.java
@@ -2505,6 +2505,7 @@ public class ManagementServerImpl extends ManagerBase
implements ManagementServe
for (final SummedCapacity summedCapacity : summedCapacities) {
final CapacityVO capacity = new CapacityVO(null,
summedCapacity.getDataCenterId(),summedCapacity.getPodId(),
summedCapacity.getClusterId(), summedCapacity.getUsedCapacity()
+ summedCapacity.getReservedCapacity(),
summedCapacity.getTotalCapacity(), summedCapacity.getCapacityType());
+
capacity.setAllocatedCapacity(summedCapacity.getAllocatedCapacity());
capacities.add(capacity);
}
diff --git a/ui/scripts/dashboard.js b/ui/scripts/dashboard.js
index bd32863..c2b0f30 100644
--- a/ui/scripts/dashboard.js
+++ b/ui/scripts/dashboard.js
@@ -246,8 +246,6 @@
data: {
fetchLatest: data.fetchLatest,
sortBy: 'usage',
- page: 0,
- pageSize: (pageSize > 8? 8: pageSize)
},
success: function(json) {
var capacities =
json.listcapacityresponse.capacity ?
diff --git a/ui/scripts/sharedFunctions.js b/ui/scripts/sharedFunctions.js
index 45b3239..655aee9 100644
--- a/ui/scripts/sharedFunctions.js
+++ b/ui/scripts/sharedFunctions.js
@@ -1225,6 +1225,8 @@ cloudStack.converters = {
return _l('label.secondary.storage.vm');
case 19:
return _l('label.gpu');
+ case 90:
+ return _l('label.num.cpu.cores');
}
},
diff --git a/ui/scripts/ui-custom/zoneChart.js
b/ui/scripts/ui-custom/zoneChart.js
index 415d24f..188a9e7 100644
--- a/ui/scripts/ui-custom/zoneChart.js
+++ b/ui/scripts/ui-custom/zoneChart.js
@@ -386,6 +386,9 @@
},
19: {
name: _l('GPU')
+ },
+ 90: {
+ name: _l('label.num.cpu.cores')
}
};
--
To stop receiving notification emails like this one, please contact
['"[email protected]" <[email protected]>'].