Repository: cloudstack
Updated Branches:
  refs/heads/reporter f7083c2e8 -> 74f4d8248


Add diskOffering report


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

Branch: refs/heads/reporter
Commit: 74f4d8248d8a07e29408ad94cffbf30938ff5c39
Parents: a16118d
Author: Wido den Hollander <[email protected]>
Authored: Fri Dec 12 14:21:01 2014 +0100
Committer: Wido den Hollander <[email protected]>
Committed: Fri Dec 12 14:21:26 2014 +0100

----------------------------------------------------------------------
 .../apache/cloudstack/report/UsageReporter.java | 36 ++++++++++++++++++++
 1 file changed, 36 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/74f4d824/server/src/org/apache/cloudstack/report/UsageReporter.java
----------------------------------------------------------------------
diff --git a/server/src/org/apache/cloudstack/report/UsageReporter.java 
b/server/src/org/apache/cloudstack/report/UsageReporter.java
index 6bf4993..4656cc4 100644
--- a/server/src/org/apache/cloudstack/report/UsageReporter.java
+++ b/server/src/org/apache/cloudstack/report/UsageReporter.java
@@ -19,6 +19,7 @@ package org.apache.cloudstack.report;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.HashMap;
@@ -68,6 +69,8 @@ import com.cloud.utils.db.DB;
 import com.cloud.utils.db.TransactionLegacy;
 import com.cloud.upgrade.dao.VersionDao;
 import com.cloud.upgrade.dao.VersionVO;
+import com.cloud.storage.dao.DiskOfferingDao;
+import com.cloud.storage.DiskOfferingVO;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 import com.google.common.util.concurrent.AtomicLongMap;
@@ -101,6 +104,8 @@ public class UsageReporter extends ManagerBase implements 
ComponentMethodInterce
     private VMInstanceDao _vmInstance;
     @Inject
     private VersionDao _versionDao;
+    @Inject
+    private DiskOfferingDao _diskOfferingDao;
 
     int usageReportInterval = -1;
 
@@ -391,6 +396,36 @@ public class UsageReporter extends ManagerBase implements 
ComponentMethodInterce
         return instanceMap;
     }
 
+    private Map<String, Object> getDiskOfferingReport() {
+        Map<String, Object> diskOfferingReport = new HashMap<String, Object>();
+
+        AtomicLongMap<Object> system_use = AtomicLongMap.create();
+        AtomicLongMap<Object> provisioning_type = AtomicLongMap.create();
+        AtomicLongMap<Object> use_local_storage = AtomicLongMap.create();
+
+        List<DiskOfferingVO> private_offerings = 
_diskOfferingDao.findPrivateDiskOffering();
+        List<DiskOfferingVO> public_offerings = 
_diskOfferingDao.findPublicDiskOfferings();
+
+        List<DiskOfferingVO> offerings = new ArrayList<DiskOfferingVO>();
+        offerings.addAll(private_offerings);
+        offerings.addAll(public_offerings);
+
+        long disk_size = 0;
+        for (DiskOfferingVO offering : offerings) {
+            provisioning_type.getAndIncrement(offering.getProvisioningType());
+            system_use.getAndIncrement(offering.getSystemUse());
+            use_local_storage.getAndIncrement(offering.getUseLocalStorage());
+            disk_size += offering.getDiskSize();
+        }
+
+        diskOfferingReport.put("system_use", system_use);
+        diskOfferingReport.put("provisioning_type", provisioning_type);
+        diskOfferingReport.put("use_local_storage", use_local_storage);
+        diskOfferingReport.put("avg_disk_size", disk_size / offerings.size());
+
+        return diskOfferingReport;
+    }
+
     private Map<String, String> getVersionReport() {
         Map<String, String> versionMap = new HashMap<String, String>();
 
@@ -421,6 +456,7 @@ public class UsageReporter extends ManagerBase implements 
ComponentMethodInterce
                 reportMap.put("primaryStorage", getStoragePoolReport());
                 reportMap.put("zones", getDataCenterReport());
                 reportMap.put("instances", getInstanceReport());
+                reportMap.put("diskOffering", getDiskOfferingReport());
                 reportMap.put("versions", getVersionReport());
                 reportMap.put("current_version", getCurrentVersion());
 

Reply via email to