From d2c1ed4865a975b10eaa95953743e1a9da22316c Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Mon, 22 Jul 2013 16:06:10 +0200 Subject: [PATCH] ui change: Disk I/O polling statistics --- .../xen/resource/CitrixResourceBase.java | 79 ------------------- ui/scripts/instances.js | 8 +- 2 files changed, 4 insertions(+), 83 deletions(-) diff --git a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java index f80d4b62940..6462ff6c100 100644 --- a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java +++ b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java @@ -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 vmNames = cmd.getVmNames(); - HashMap> vmDiskStatsNameMap = new HashMap>(); - if( vmNames.size() == 0 ) { - return new GetVmDiskStatsAnswer(cmd, "", cmd.getHostName(),vmDiskStatsNameMap); - } - try { - - // Determine the UUIDs of the requested VMs - List vmUUIDs = new ArrayList(); - - for (String vmName : vmNames) { - VM vm = getVM(conn, vmName); - vmUUIDs.add(vm.getUuid(conn)); - } - - HashMap> vmDiskStatsUUIDMap = getVmDiskStats(conn, cmd, vmUUIDs, cmd.getHostGuid()); - if( vmDiskStatsUUIDMap == null ) { - return new GetVmDiskStatsAnswer(cmd, "", cmd.getHostName(), vmDiskStatsNameMap); - } - - for (String vmUUID : vmDiskStatsUUIDMap.keySet()) { - List 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> getVmDiskStats(Connection conn, GetVmDiskStatsCommand cmd, List vmUUIDs, String hostGuid) { - HashMap> vmResponseMap = new HashMap>(); - - for (String vmUUID : vmUUIDs) { - vmResponseMap.put(vmUUID, new ArrayList()); - } - - try { - for (String vmUUID : vmUUIDs) { - VM vm = VM.getByUuid(conn, vmUUID); - List vmDiskStats = new ArrayList(); - 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 vmNames = cmd.getVmNames(); diff --git a/ui/scripts/instances.js b/ui/scripts/instances.js index c53223c3f68..12adfbb66c3 100644 --- a/ui/scripts/instances.js +++ b/ui/scripts/instances.js @@ -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") } }); }