mirror of
https://github.com/apache/cloudstack.git
synced 2025-12-16 02:22:52 +01:00
ui change: Disk I/O polling statistics
This commit is contained in:
parent
39a730ccd1
commit
d2c1ed4865
@ -139,8 +139,6 @@ import com.cloud.agent.api.GetHostStatsAnswer;
|
||||
import com.cloud.agent.api.GetHostStatsCommand;
|
||||
import com.cloud.agent.api.GetStorageStatsAnswer;
|
||||
import com.cloud.agent.api.GetStorageStatsCommand;
|
||||
import com.cloud.agent.api.GetVmDiskStatsAnswer;
|
||||
import com.cloud.agent.api.GetVmDiskStatsCommand;
|
||||
import com.cloud.agent.api.GetVmStatsAnswer;
|
||||
import com.cloud.agent.api.GetVmStatsCommand;
|
||||
import com.cloud.agent.api.GetVncPortAnswer;
|
||||
@ -195,7 +193,6 @@ import com.cloud.agent.api.UnPlugNicAnswer;
|
||||
import com.cloud.agent.api.UnPlugNicCommand;
|
||||
import com.cloud.agent.api.UpdateHostPasswordCommand;
|
||||
import com.cloud.agent.api.UpgradeSnapshotCommand;
|
||||
import com.cloud.agent.api.VmDiskStatsEntry;
|
||||
import com.cloud.agent.api.VmStatsEntry;
|
||||
import com.cloud.agent.api.check.CheckSshAnswer;
|
||||
import com.cloud.agent.api.check.CheckSshCommand;
|
||||
@ -498,8 +495,6 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
|
||||
return execute((GetHostStatsCommand) cmd);
|
||||
} else if (clazz == GetVmStatsCommand.class) {
|
||||
return execute((GetVmStatsCommand) cmd);
|
||||
} else if (cmd instanceof GetVmDiskStatsCommand) {
|
||||
return execute((GetVmDiskStatsCommand) cmd);
|
||||
} else if (clazz == CheckHealthCommand.class) {
|
||||
return execute((CheckHealthCommand) cmd);
|
||||
} else if (clazz == StopCommand.class) {
|
||||
@ -2636,80 +2631,6 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
|
||||
return hostStats;
|
||||
}
|
||||
|
||||
protected GetVmDiskStatsAnswer execute( GetVmDiskStatsCommand cmd) {
|
||||
Connection conn = getConnection();
|
||||
List<String> vmNames = cmd.getVmNames();
|
||||
HashMap<String, List<VmDiskStatsEntry>> vmDiskStatsNameMap = new HashMap<String, List<VmDiskStatsEntry>>();
|
||||
if( vmNames.size() == 0 ) {
|
||||
return new GetVmDiskStatsAnswer(cmd, "", cmd.getHostName(),vmDiskStatsNameMap);
|
||||
}
|
||||
try {
|
||||
|
||||
// Determine the UUIDs of the requested VMs
|
||||
List<String> vmUUIDs = new ArrayList<String>();
|
||||
|
||||
for (String vmName : vmNames) {
|
||||
VM vm = getVM(conn, vmName);
|
||||
vmUUIDs.add(vm.getUuid(conn));
|
||||
}
|
||||
|
||||
HashMap<String, List<VmDiskStatsEntry>> vmDiskStatsUUIDMap = getVmDiskStats(conn, cmd, vmUUIDs, cmd.getHostGuid());
|
||||
if( vmDiskStatsUUIDMap == null ) {
|
||||
return new GetVmDiskStatsAnswer(cmd, "", cmd.getHostName(), vmDiskStatsNameMap);
|
||||
}
|
||||
|
||||
for (String vmUUID : vmDiskStatsUUIDMap.keySet()) {
|
||||
List<VmDiskStatsEntry> vmDiskStatsUUID = vmDiskStatsUUIDMap.get(vmUUID);
|
||||
String vmName = vmNames.get(vmUUIDs.indexOf(vmUUID));
|
||||
for (VmDiskStatsEntry vmDiskStat : vmDiskStatsUUID) {
|
||||
vmDiskStat.setVmName(vmName);
|
||||
}
|
||||
vmDiskStatsNameMap.put(vmName, vmDiskStatsUUID);
|
||||
}
|
||||
|
||||
return new GetVmDiskStatsAnswer(cmd, "", cmd.getHostName(),vmDiskStatsNameMap);
|
||||
} catch (XenAPIException e) {
|
||||
String msg = "Unable to get VM disk stats" + e.toString();
|
||||
s_logger.warn(msg, e);
|
||||
return new GetVmDiskStatsAnswer(cmd, "", cmd.getHostName(),vmDiskStatsNameMap);
|
||||
} catch (XmlRpcException e) {
|
||||
String msg = "Unable to get VM disk stats" + e.getMessage();
|
||||
s_logger.warn(msg, e);
|
||||
return new GetVmDiskStatsAnswer(cmd, "", cmd.getHostName(),vmDiskStatsNameMap);
|
||||
}
|
||||
}
|
||||
|
||||
private HashMap<String, List<VmDiskStatsEntry>> getVmDiskStats(Connection conn, GetVmDiskStatsCommand cmd, List<String> vmUUIDs, String hostGuid) {
|
||||
HashMap<String, List<VmDiskStatsEntry>> vmResponseMap = new HashMap<String, List<VmDiskStatsEntry>>();
|
||||
|
||||
for (String vmUUID : vmUUIDs) {
|
||||
vmResponseMap.put(vmUUID, new ArrayList<VmDiskStatsEntry>());
|
||||
}
|
||||
|
||||
try {
|
||||
for (String vmUUID : vmUUIDs) {
|
||||
VM vm = VM.getByUuid(conn, vmUUID);
|
||||
List<VmDiskStatsEntry> vmDiskStats = new ArrayList<VmDiskStatsEntry>();
|
||||
for (VBD vbd : vm.getVBDs(conn)) {
|
||||
if (!vbd.getType(conn).equals(Types.VbdType.CD)) {
|
||||
VmDiskStatsEntry stats = new VmDiskStatsEntry();
|
||||
VBDMetrics record = vbd.getMetrics(conn);
|
||||
stats.setPath(vbd.getVDI(conn).getUuid(conn));
|
||||
stats.setBytesRead((long)(record.getIoReadKbs(conn) * 1024));
|
||||
stats.setBytesWrite((long)(record.getIoWriteKbs(conn) * 1024));
|
||||
vmDiskStats.add(stats);
|
||||
}
|
||||
}
|
||||
vmResponseMap.put(vmUUID, vmDiskStats);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
s_logger.warn("Error while collecting disk stats from : ", e);
|
||||
return null;
|
||||
}
|
||||
|
||||
return vmResponseMap;
|
||||
}
|
||||
|
||||
protected GetVmStatsAnswer execute( GetVmStatsCommand cmd) {
|
||||
Connection conn = getConnection();
|
||||
List<String> vmNames = cmd.getVmNames();
|
||||
|
||||
@ -1831,10 +1831,10 @@
|
||||
cpuused: jsonObj.cpuused,
|
||||
networkkbsread: (jsonObj.networkkbsread == null) ? "N/A" : cloudStack.converters.convertBytes(jsonObj.networkkbsread * 1024),
|
||||
networkkbswrite: (jsonObj.networkkbswrite == null) ? "N/A" : cloudStack.converters.convertBytes(jsonObj.networkkbswrite * 1024),
|
||||
diskkbsread: (jsonObj.diskkbsread == null) ? "N/A" : cloudStack.converters.convertBytes(jsonObj.diskkbsread * 1024),
|
||||
diskkbswrite: (jsonObj.diskkbswrite == null) ? "N/A" : cloudStack.converters.convertBytes(jsonObj.diskkbswrite * 1024),
|
||||
diskioread: (jsonObj.diskioread == null) ? "N/A" : jsonObj.diskioread,
|
||||
diskiowrite: (jsonObj.diskiowrite == null) ? "N/A" : jsonObj.diskiowrite
|
||||
diskkbsread: (jsonObj.diskkbsread == null) ? "N/A" : ((jsonObj.hypervisor == "KVM") ? cloudStack.converters.convertBytes(jsonObj.diskkbsread * 1024) : ((jsonObj.hypervisor == "XenServer") ? cloudStack.converters.convertBytes(jsonObj.diskkbsread * 1024) + "/s" : "N/A")),
|
||||
diskkbswrite: (jsonObj.diskkbswrite == null) ? "N/A" : ((jsonObj.hypervisor == "KVM") ? cloudStack.converters.convertBytes(jsonObj.diskkbswrite * 1024) : ((jsonObj.hypervisor == "XenServer") ? cloudStack.converters.convertBytes(jsonObj.diskkbswrite * 1024) + "/s" : "N/A")),
|
||||
diskioread: (jsonObj.diskioread == null) ? "N/A" : ((jsonObj.hypervisor == "KVM") ? jsonObj.diskioread : "N/A"),
|
||||
diskiowrite: (jsonObj.diskiowrite == null) ? "N/A" : ((jsonObj.hypervisor == "KVM") ? jsonObj.diskiowrite : "N/A")
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user