You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ya...@apache.org on 2013/02/01 02:07:47 UTC

[4/4] git commit: refs/heads/network-refactor - libvirt has bug to report storage stastics

Updated Branches:
  refs/heads/network-refactor 730da70d7 -> 2ca8af319


libvirt has bug to report storage stastics


Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/2ca8af31
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/2ca8af31
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/2ca8af31

Branch: refs/heads/network-refactor
Commit: 2ca8af3191023d709d96dac69c8c95b2571ef89e
Parents: f55c233
Author: Edison Su <su...@gmail.com>
Authored: Thu Jan 31 15:55:54 2013 -0800
Committer: Sheng Yang <sh...@citrix.com>
Committed: Thu Jan 31 17:07:12 2013 -0800

----------------------------------------------------------------------
 .../kvm/storage/LibvirtStorageAdaptor.java         |   27 ++++++++++++---
 1 files changed, 22 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2ca8af31/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java
index d350ef9..f9dcd77 100644
--- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java
+++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java
@@ -386,8 +386,7 @@ public class LibvirtStorageAdaptor implements StorageAdaptor {
             }
 
             pool.refresh();
-            pool.setCapacity(storage.getInfo().capacity);
-            pool.setUsed(storage.getInfo().allocation);
+            getStats(pool);
 
             return pool;
         } catch (LibvirtException e) {
@@ -423,6 +422,26 @@ public class LibvirtStorageAdaptor implements StorageAdaptor {
         }
 
     }
+    
+    private void getStats(LibvirtStoragePool pool) {
+        Script statsScript = new Script("/bin/bash", s_logger);
+        statsScript.add("-c");
+        statsScript.add("stats=$(df --total " + pool.getLocalPath()
+                        + " |grep total|awk '{print $2,$3}');echo $stats");
+        final OutputInterpreter.OneLineParser statsParser = new OutputInterpreter.OneLineParser();
+        String result = statsScript.execute(statsParser);
+        if (result == null) {
+                String stats = statsParser.getLine();
+                if (stats != null && !stats.isEmpty()) {
+                        String sizes[] = stats.trim().split(" ");
+                        if (sizes.length == 2) {
+                                pool.setCapacity(Long.parseLong(sizes[0]) * 1024);
+                                pool.setUsed(Long.parseLong(sizes[1]) * 1024);
+                        }
+                }
+        }
+}
+
 
     @Override
     public KVMStoragePool createStoragePool(String name, String host, int port,
@@ -474,9 +493,7 @@ public class LibvirtStorageAdaptor implements StorageAdaptor {
                 pool.setLocalPath("");
             }
 
-            pool.setCapacity(sp.getInfo().capacity);
-            pool.setUsed(sp.getInfo().allocation);
-  
+            getStats(pool);
             return pool;
         } catch (LibvirtException e) {
             throw new CloudRuntimeException(e.toString());