Updated Branches: refs/heads/master c39ec1eb8 -> 8ed9162de
cleanup in LibvirtComputingResource - minor resource leak cleaned up - cpu-speed reading method extracted - test added - logging added in case of exception Signed-off-by: Laszlo Hornyak <laszlo.horn...@gmail.com> Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/e52a2761 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/e52a2761 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/e52a2761 Branch: refs/heads/master Commit: e52a276104b46a1e9020c95f517d4c405fe5fb02 Parents: c39ec1e Author: Laszlo Hornyak <laszlo.horn...@gmail.com> Authored: Sun Feb 9 16:50:10 2014 +0100 Committer: Laszlo Hornyak <laszlo.horn...@gmail.com> Committed: Sun Feb 9 16:50:10 2014 +0100 ---------------------------------------------------------------------- .../kvm/resource/LibvirtComputingResource.java | 33 ++++++++++---------- .../resource/LibvirtComputingResourceTest.java | 8 +++++ 2 files changed, 24 insertions(+), 17 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e52a2761/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java index 6289dea..053dbc0 100755 --- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java +++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java @@ -199,6 +199,7 @@ import com.cloud.vm.DiskProfile; import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachine.PowerState; import com.cloud.vm.VirtualMachine.State; + import org.apache.cloudstack.storage.command.StorageSubSystemCommand; import org.apache.cloudstack.storage.to.PrimaryDataStoreTO; import org.apache.cloudstack.storage.to.VolumeObjectTO; @@ -207,6 +208,7 @@ import org.apache.cloudstack.utils.qemu.QemuImg.PhysicalDiskFormat; import org.apache.cloudstack.utils.qemu.QemuImgException; import org.apache.cloudstack.utils.qemu.QemuImgFile; import org.apache.commons.io.FileUtils; +import org.apache.commons.io.IOUtils; import org.apache.log4j.Logger; import org.libvirt.Connect; import org.libvirt.Domain; @@ -220,6 +222,7 @@ import org.libvirt.StorageVol; import javax.ejb.Local; import javax.naming.ConfigurationException; + import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.File; @@ -229,6 +232,7 @@ import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.io.Reader; import java.net.InetAddress; import java.net.URI; import java.net.URISyntaxException; @@ -4392,24 +4396,9 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv int cpuSockets = 0; String cap = null; try { - Connect conn = LibvirtConnection.getConnection(); + final Connect conn = LibvirtConnection.getConnection(); final NodeInfo hosts = conn.nodeInfo(); - boolean result = false; - try { - BufferedReader in = new BufferedReader(new FileReader("/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq")); - speed = Long.parseLong(in.readLine()) / 1000; - result = true; - } catch (FileNotFoundException e) { - - } catch (IOException e) { - - } catch (NumberFormatException e) { - - } - - if (!result) { - speed = hosts.mhz; - } + speed = getCpuSpeed(hosts); cpuSockets = hosts.sockets; cpus = hosts.cpus; @@ -4450,6 +4439,16 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv return info; } + protected static long getCpuSpeed(final NodeInfo nodeInfo) { + try (final Reader reader = new FileReader( + "/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq")) { + return Long.parseLong(IOUtils.toString(reader).trim()) / 1000; + } catch (IOException | NumberFormatException e) { + s_logger.warn("Could not read cpuinfo_max_freq"); + return nodeInfo.mhz; + } + } + protected String rebootVM(Connect conn, String vmName) { Domain dm = null; String msg = null; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e52a2761/plugins/hypervisors/kvm/test/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/kvm/test/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java b/plugins/hypervisors/kvm/test/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java index c8af7f8..6fac2b5 100644 --- a/plugins/hypervisors/kvm/test/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java +++ b/plugins/hypervisors/kvm/test/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java @@ -447,4 +447,12 @@ public class LibvirtComputingResourceTest { Assert.assertTrue(vmStat.getDiskReadKBs() > 0); Assert.assertTrue(vmStat.getDiskWriteKBs() > 0); } + + @Test + public void getCpuSpeed() { + Assume.assumeTrue(SystemUtils.IS_OS_LINUX); + NodeInfo nodeInfo = Mockito.mock(NodeInfo.class); + long cpuSpeed = LibvirtComputingResource.getCpuSpeed(nodeInfo); + Assert.assertTrue(cpuSpeed > 0); + } }