This is an automated email from the ASF dual-hosted git repository.

rohit pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/master by this push:
     new 2c32d60  server: return usage description with resource names and 
UUIDs (#3344)
2c32d60 is described below

commit 2c32d60e444b3c9e0ad0e53d3593220351b4337b
Author: Rohit Yadav <rohit.ya...@shapeblue.com>
AuthorDate: Fri Jun 21 03:48:33 2019 +0530

    server: return usage description with resource names and UUIDs (#3344)
    
    The usage record descriptions have CloudStack's internal integer IDs
    which makes it difficult for users to read their usages. This PRs
    introduces a new API boolean flag `oldformat` which when set to true
    would return the older description format, otherwise by default
    listUsageRecords will process and return description with names and
    UUIDs of resources.
    
    Signed-off-by: Rohit Yadav <rohit.ya...@shapeblue.com>
---
 .../org/apache/cloudstack/api/ApiConstants.java    |   1 +
 .../apache/cloudstack/api/ResponseGenerator.java   |   2 +-
 .../command/admin/usage/ListUsageRecordsCmd.java   |   8 +-
 .../org/apache/cloudstack/usage/UsageTypes.java    |   1 +
 .../cloudstack/quota/constant/QuotaTypes.java      |   1 +
 .../main/java/com/cloud/api/ApiResponseHelper.java | 233 ++++++++++++++++++---
 6 files changed, 214 insertions(+), 32 deletions(-)

diff --git a/api/src/main/java/org/apache/cloudstack/api/ApiConstants.java 
b/api/src/main/java/org/apache/cloudstack/api/ApiConstants.java
index 99efafc..7502b18 100644
--- a/api/src/main/java/org/apache/cloudstack/api/ApiConstants.java
+++ b/api/src/main/java/org/apache/cloudstack/api/ApiConstants.java
@@ -219,6 +219,7 @@ public class ApiConstants {
     public static final String OFFER_HA = "offerha";
     public static final String IS_SYSTEM_OFFERING = "issystem";
     public static final String IS_DEFAULT_USE = "defaultuse";
+    public static final String OLD_FORMAT = "oldformat";
     public static final String OP = "op";
     public static final String OS_CATEGORY_ID = "oscategoryid";
     public static final String OS_TYPE_ID = "ostypeid";
diff --git a/api/src/main/java/org/apache/cloudstack/api/ResponseGenerator.java 
b/api/src/main/java/org/apache/cloudstack/api/ResponseGenerator.java
index 80d6d4b..740ee46 100644
--- a/api/src/main/java/org/apache/cloudstack/api/ResponseGenerator.java
+++ b/api/src/main/java/org/apache/cloudstack/api/ResponseGenerator.java
@@ -435,7 +435,7 @@ public interface ResponseGenerator {
 
     UsageRecordResponse createUsageResponse(Usage usageRecord);
 
-    UsageRecordResponse createUsageResponse(Usage usageRecord, Map<String, 
Set<ResourceTagResponse>> resourceTagResponseMap);
+    UsageRecordResponse createUsageResponse(Usage usageRecord, Map<String, 
Set<ResourceTagResponse>> resourceTagResponseMap, boolean oldFormat);
 
     public Map<String, Set<ResourceTagResponse>> getUsageResourceTags();
 
diff --git 
a/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/ListUsageRecordsCmd.java
 
b/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/ListUsageRecordsCmd.java
index 2698c81..a5199ec 100644
--- 
a/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/ListUsageRecordsCmd.java
+++ 
b/api/src/main/java/org/apache/cloudstack/api/command/admin/usage/ListUsageRecordsCmd.java
@@ -82,6 +82,9 @@ public class ListUsageRecordsCmd extends BaseListCmd {
     @Parameter(name = ApiConstants.INCLUDE_TAGS, type = CommandType.BOOLEAN, 
description = "Flag to enable display of Tags for a resource")
     private Boolean includeTags;
 
+    @Parameter(name = ApiConstants.OLD_FORMAT, type = CommandType.BOOLEAN, 
description = "Flag to enable description rendered in old format which uses 
internal database IDs instead of UUIDs. False by default.")
+    private Boolean oldFormat;
+
     /////////////////////////////////////////////////////
     /////////////////// Accessors ///////////////////////
     /////////////////////////////////////////////////////
@@ -146,6 +149,9 @@ public class ListUsageRecordsCmd extends BaseListCmd {
         this.usageId = usageId;
     }
 
+    public boolean getOldFormat() {
+        return oldFormat != null && oldFormat;
+    }
 
     /////////////////////////////////////////////////////
     /////////////// API Implementation///////////////////
@@ -168,7 +174,7 @@ public class ListUsageRecordsCmd extends BaseListCmd {
                 resourceTagResponseMap = 
_responseGenerator.getUsageResourceTags();
             }
             for (Usage usageRecord : usageRecords.first()) {
-                UsageRecordResponse usageResponse = 
_responseGenerator.createUsageResponse(usageRecord, resourceTagResponseMap);
+                UsageRecordResponse usageResponse = 
_responseGenerator.createUsageResponse(usageRecord, resourceTagResponseMap, 
getOldFormat());
                 if (usageResponse != null) {
                     usageResponse.setObjectName("usagerecord");
                     usageResponses.add(usageResponse);
diff --git a/api/src/main/java/org/apache/cloudstack/usage/UsageTypes.java 
b/api/src/main/java/org/apache/cloudstack/usage/UsageTypes.java
index f03d9a9..d0b7006 100644
--- a/api/src/main/java/org/apache/cloudstack/usage/UsageTypes.java
+++ b/api/src/main/java/org/apache/cloudstack/usage/UsageTypes.java
@@ -66,6 +66,7 @@ public class UsageTypes {
         responseList.add(new UsageTypeResponse(VM_DISK_BYTES_READ, "VM Disk 
usage(Bytes Read)"));
         responseList.add(new UsageTypeResponse(VM_DISK_BYTES_WRITE, "VM Disk 
usage(Bytes Write)"));
         responseList.add(new UsageTypeResponse(VM_SNAPSHOT, "VM Snapshot 
storage usage"));
+        responseList.add(new UsageTypeResponse(VOLUME_SECONDARY, "Volume on 
secondary storage usage"));
         responseList.add(new UsageTypeResponse(VM_SNAPSHOT_ON_PRIMARY, "VM 
Snapshot on primary storage usage"));
         return responseList;
     }
diff --git 
a/framework/quota/src/main/java/org/apache/cloudstack/quota/constant/QuotaTypes.java
 
b/framework/quota/src/main/java/org/apache/cloudstack/quota/constant/QuotaTypes.java
index 97e22da..2643ff3 100644
--- 
a/framework/quota/src/main/java/org/apache/cloudstack/quota/constant/QuotaTypes.java
+++ 
b/framework/quota/src/main/java/org/apache/cloudstack/quota/constant/QuotaTypes.java
@@ -55,6 +55,7 @@ public class QuotaTypes extends UsageTypes {
         quotaTypeList.put(VM_DISK_BYTES_READ, new 
QuotaTypes(VM_DISK_BYTES_READ, "VM_DISK_BYTES_READ", "GB", "VM Disk usage(Bytes 
Read)"));
         quotaTypeList.put(VM_DISK_BYTES_WRITE, new 
QuotaTypes(VM_DISK_BYTES_WRITE, "VPN_USERS", "GB", "VM Disk usage(Bytes 
Write)"));
         quotaTypeList.put(VM_SNAPSHOT, new QuotaTypes(VM_SNAPSHOT, 
"VM_SNAPSHOT", "GB-Month", "VM Snapshot storage usage"));
+        quotaTypeList.put(VOLUME_SECONDARY, new QuotaTypes(VOLUME_SECONDARY, 
"VOLUME_SECONDARY", "GB-Month", "Volume secondary storage usage"));
         quotaTypeList.put(VM_SNAPSHOT_ON_PRIMARY, new 
QuotaTypes(VM_SNAPSHOT_ON_PRIMARY, "VM_SNAPSHOT_ON_PRIMARY", "GB-Month", "VM 
Snapshot primary storage usage"));
         quotaTypeList.put(CPU_CLOCK_RATE, new QuotaTypes(CPU_CLOCK_RATE, 
"CPU_CLOCK_RATE", "Compute-Month", "Quota tariff for using 1 CPU of clock rate 
100MHz"));
         quotaTypeList.put(CPU_NUMBER, new QuotaTypes(CPU_NUMBER, "CPU_NUMBER", 
"Compute-Month", "Quota tariff for running VM that has 1vCPU"));
diff --git a/server/src/main/java/com/cloud/api/ApiResponseHelper.java 
b/server/src/main/java/com/cloud/api/ApiResponseHelper.java
index bb51215..9bea30a 100644
--- a/server/src/main/java/com/cloud/api/ApiResponseHelper.java
+++ b/server/src/main/java/com/cloud/api/ApiResponseHelper.java
@@ -3292,11 +3292,11 @@ public class ApiResponseHelper implements 
ResponseGenerator {
 
     @Override
     public UsageRecordResponse createUsageResponse(Usage usageRecord) {
-        return createUsageResponse(usageRecord, null);
+        return createUsageResponse(usageRecord, null, false);
     }
 
     @Override
-    public UsageRecordResponse createUsageResponse(Usage usageRecord, 
Map<String, Set<ResourceTagResponse>> resourceTagResponseMap) {
+    public UsageRecordResponse createUsageResponse(Usage usageRecord, 
Map<String, Set<ResourceTagResponse>> resourceTagResponseMap, boolean 
oldFormat) {
         UsageRecordResponse usageRecResponse = new UsageRecordResponse();
         Account account = 
ApiDBUtils.findAccountById(usageRecord.getAccountId());
         if (account.getType() == Account.ACCOUNT_TYPE_PROJECT) {
@@ -3326,15 +3326,17 @@ public class ApiResponseHelper implements 
ResponseGenerator {
         usageRecResponse.setDescription(usageRecord.getDescription());
         usageRecResponse.setUsage(usageRecord.getUsageDisplay());
         usageRecResponse.setUsageType(usageRecord.getUsageType());
+        VMInstanceVO vmInstance = null;
         if (usageRecord.getVmInstanceId() != null) {
-            VMInstanceVO vm = 
_entityMgr.findByIdIncludingRemoved(VMInstanceVO.class, 
usageRecord.getVmInstanceId());
-            if (vm != null) {
-                usageRecResponse.setVirtualMachineId(vm.getUuid());
+            vmInstance = 
_entityMgr.findByIdIncludingRemoved(VMInstanceVO.class, 
usageRecord.getVmInstanceId());
+            if (vmInstance != null) {
+                usageRecResponse.setVirtualMachineId(vmInstance.getUuid());
             }
         }
         usageRecResponse.setResourceName(usageRecord.getVmName());
+        VMTemplateVO template = null;
         if (usageRecord.getTemplateId() != null) {
-            VMTemplateVO template = 
ApiDBUtils.findTemplateById(usageRecord.getTemplateId());
+            template = 
ApiDBUtils.findTemplateById(usageRecord.getTemplateId());
             if (template != null) {
                 usageRecResponse.setTemplateId(template.getUuid());
             }
@@ -3349,7 +3351,12 @@ public class ApiResponseHelper implements 
ResponseGenerator {
                 usageRecResponse.setOfferingId(svcOffering.getUuid());
             }
             //VM Instance ID
-            VMInstanceVO vm = 
_entityMgr.findByIdIncludingRemoved(VMInstanceVO.class, 
usageRecord.getUsageId().toString());
+            VMInstanceVO vm = null;
+            if (usageRecord.getUsageId() != null && 
usageRecord.getUsageId().equals(usageRecord.getVmInstanceId())) {
+                vm = vmInstance;
+            } else {
+                vm = _entityMgr.findByIdIncludingRemoved(VMInstanceVO.class, 
usageRecord.getUsageId().toString());
+            }
             if (vm != null) {
                 resourceType = ResourceTag.ResourceObjectType.UserVm;
                 usageRecResponse.setUsageId(vm.getUuid());
@@ -3373,7 +3380,24 @@ public class ApiResponseHelper implements 
ResponseGenerator {
             } else if(svcOffering.getRamSize() != null) {
                 
usageRecResponse.setMemory(svcOffering.getRamSize().longValue());
             }
-
+            if (!oldFormat) {
+                final StringBuilder builder = new StringBuilder();
+                if (usageRecord.getUsageType() == UsageTypes.RUNNING_VM) {
+                    builder.append("Running VM usage ");
+                } else if(usageRecord.getUsageType() == 
UsageTypes.ALLOCATED_VM) {
+                    builder.append("Allocated VM usage ");
+                }
+                if (vm != null) {
+                    builder.append("for ").append(vm.getHostName()).append(" 
(").append(vm.getInstanceName()).append(", ").append(vm.getUuid()).append(") ");
+                }
+                if (svcOffering != null) {
+                    builder.append("using service offering 
").append(svcOffering.getName()).append(" 
(").append(svcOffering.getUuid()).append(") ");
+                }
+                if (template != null) {
+                    builder.append("and template 
").append(template.getName()).append(" 
(").append(template.getUuid()).append(")");
+                }
+                usageRecResponse.setDescription(builder.toString());
+            }
         } else if (usageRecord.getUsageType() == UsageTypes.IP_ADDRESS) {
             //IP Address ID
             IPAddressVO ip = 
_entityMgr.findByIdIncludingRemoved(IPAddressVO.class, 
usageRecord.getUsageId().toString());
@@ -3399,23 +3423,26 @@ public class ApiResponseHelper implements 
ResponseGenerator {
             //Device Type
             resourceType = ResourceObjectType.UserVm;
             usageRecResponse.setType(usageRecord.getType());
+            VMInstanceVO vm = null;
+            HostVO host = null;
             if (usageRecord.getType().equals("DomainRouter") || 
usageRecord.getType().equals("UserVm")) {
                 //Domain Router Id
-                VMInstanceVO vm = 
_entityMgr.findByIdIncludingRemoved(VMInstanceVO.class, 
usageRecord.getUsageId().toString());
+                vm = _entityMgr.findByIdIncludingRemoved(VMInstanceVO.class, 
usageRecord.getUsageId().toString());
                 if (vm != null) {
                     resourceId = vm.getId();
                     usageRecResponse.setUsageId(vm.getUuid());
                 }
             } else {
                 //External Device Host Id
-                HostVO host = 
_entityMgr.findByIdIncludingRemoved(HostVO.class, 
usageRecord.getUsageId().toString());
+                host = _entityMgr.findByIdIncludingRemoved(HostVO.class, 
usageRecord.getUsageId().toString());
                 if (host != null) {
                     usageRecResponse.setUsageId(host.getUuid());
                 }
             }
             //Network ID
+            NetworkVO network = null;
             if((usageRecord.getNetworkId() != null) && 
(usageRecord.getNetworkId() != 0)) {
-                NetworkVO network = 
_entityMgr.findByIdIncludingRemoved(NetworkVO.class, 
usageRecord.getNetworkId().toString());
+                network = _entityMgr.findByIdIncludingRemoved(NetworkVO.class, 
usageRecord.getNetworkId().toString());
                 if (network != null) {
                     resourceType = ResourceObjectType.Network;
                     resourceId = network.getId();
@@ -3423,23 +3450,53 @@ public class ApiResponseHelper implements 
ResponseGenerator {
                     usageRecResponse.setResourceName(network.getName());
                 }
             }
+            if (!oldFormat) {
+                final StringBuilder builder = new StringBuilder();
+                if (usageRecord.getUsageType() == 
UsageTypes.NETWORK_BYTES_SENT) {
+                    builder.append("Bytes sent by network ");
+                } else if (usageRecord.getUsageType() == 
UsageTypes.NETWORK_BYTES_RECEIVED) {
+                    builder.append("Bytes received by network ");
+                }
+                if (network != null) {
+                    builder.append(network.getName()).append(" 
(").append(network.getUuid()).append(") ");
+                }
+                if (vm != null) {
+                    builder.append("using router 
").append(vm.getInstanceName()).append(" (").append(vm.getUuid()).append(")");
+                } else if (host != null) {
+                    builder.append("using host 
").append(host.getName()).append(" (").append(host.getUuid()).append(")");
+                }
+                usageRecResponse.setDescription(builder.toString());
+            }
         } else if (usageRecord.getUsageType() == UsageTypes.VM_DISK_IO_READ || 
usageRecord.getUsageType() == UsageTypes.VM_DISK_IO_WRITE
                 || usageRecord.getUsageType() == UsageTypes.VM_DISK_BYTES_READ 
|| usageRecord.getUsageType() == UsageTypes.VM_DISK_BYTES_WRITE) {
             //Device Type
             usageRecResponse.setType(usageRecord.getType());
             resourceType = ResourceObjectType.Volume;
-            //VM Instance Id
-            VMInstanceVO vm = 
_entityMgr.findByIdIncludingRemoved(VMInstanceVO.class, 
usageRecord.getVmInstanceId().toString());
-            if (vm != null) {
-                usageRecResponse.setVirtualMachineId(vm.getUuid());
-            }
             //Volume ID
             VolumeVO volume = 
_entityMgr.findByIdIncludingRemoved(VolumeVO.class, 
usageRecord.getUsageId().toString());
             if (volume != null) {
                 usageRecResponse.setUsageId(volume.getUuid());
                 resourceId = volume.getId();
             }
-
+            if (!oldFormat) {
+                final StringBuilder builder = new StringBuilder();
+                if (usageRecord.getUsageType() == UsageTypes.VM_DISK_IO_READ) {
+                    builder.append("Disk I/O read requests");
+                } else if (usageRecord.getUsageType() == 
UsageTypes.VM_DISK_IO_WRITE) {
+                    builder.append("Disk I/O write requests");
+                } else if (usageRecord.getUsageType() == 
UsageTypes.VM_DISK_BYTES_READ) {
+                    builder.append("Disk I/O read bytes");
+                } else if (usageRecord.getUsageType() == 
UsageTypes.VM_DISK_BYTES_WRITE) {
+                    builder.append("Disk I/O write bytes");
+                }
+                if (vmInstance != null) {
+                    builder.append(" for VM 
").append(vmInstance.getHostName()).append(" 
(").append(vmInstance.getUuid()).append(")");
+                }
+                if (volume != null) {
+                    builder.append(" and volume 
").append(volume.getName()).append(" (").append(volume.getUuid()).append(")");
+                }
+                usageRecResponse.setDescription(builder.toString());
+            }
         } else if (usageRecord.getUsageType() == UsageTypes.VOLUME) {
             //Volume ID
             VolumeVO volume = 
_entityMgr.findByIdIncludingRemoved(VolumeVO.class, 
usageRecord.getUsageId().toString());
@@ -3451,11 +3508,25 @@ public class ApiResponseHelper implements 
ResponseGenerator {
             //Volume Size
             usageRecResponse.setSize(usageRecord.getSize());
             //Disk Offering Id
+            DiskOfferingVO diskOff = null;
             if (usageRecord.getOfferingId() != null) {
-                DiskOfferingVO diskOff = 
_entityMgr.findByIdIncludingRemoved(DiskOfferingVO.class, 
usageRecord.getOfferingId().toString());
+                diskOff = 
_entityMgr.findByIdIncludingRemoved(DiskOfferingVO.class, 
usageRecord.getOfferingId().toString());
                 usageRecResponse.setOfferingId(diskOff.getUuid());
             }
-
+            if (!oldFormat) {
+                final StringBuilder builder = new StringBuilder();
+                builder.append("Volume usage ");
+                if (volume != null) {
+                    builder.append("for ").append(volume.getName()).append(" 
(").append(volume.getUuid()).append(")");
+                }
+                if (diskOff != null) {
+                    builder.append(" with disk offering 
").append(diskOff.getName()).append(" (").append(diskOff.getUuid()).append(")");
+                }
+                if (template != null) {
+                    builder.append(" and template 
").append(template.getName()).append(" 
(").append(template.getUuid()).append(")");
+                }
+                usageRecResponse.setDescription(builder.toString());
+            }
         } else if (usageRecord.getUsageType() == UsageTypes.TEMPLATE || 
usageRecord.getUsageType() == UsageTypes.ISO) {
             //Template/ISO ID
             VMTemplateVO tmpl = 
_entityMgr.findByIdIncludingRemoved(VMTemplateVO.class, 
usageRecord.getUsageId().toString());
@@ -3472,7 +3543,19 @@ public class ApiResponseHelper implements 
ResponseGenerator {
                 usageRecResponse.setVirtualSize(usageRecord.getVirtualSize());
                 resourceType = ResourceObjectType.Template;
             }
-
+            if (!oldFormat) {
+                final StringBuilder builder = new StringBuilder();
+                if (usageRecord.getUsageType() == UsageTypes.TEMPLATE) {
+                    builder.append("Template usage");
+                } else if (usageRecord.getUsageType() == UsageTypes.ISO) {
+                    builder.append("ISO usage");
+                }
+                if (tmpl != null) {
+                    builder.append(" for ").append(tmpl.getName()).append(" 
(").append(tmpl.getUuid()).append(") ")
+                            .append("with size 
").append(usageRecord.getSize()).append(" and virtual size 
").append(usageRecord.getVirtualSize());
+                }
+                usageRecResponse.setDescription(builder.toString());
+            }
         } else if (usageRecord.getUsageType() == UsageTypes.SNAPSHOT) {
             //Snapshot ID
             SnapshotVO snap = 
_entityMgr.findByIdIncludingRemoved(SnapshotVO.class, 
usageRecord.getUsageId().toString());
@@ -3483,7 +3566,15 @@ public class ApiResponseHelper implements 
ResponseGenerator {
             }
             //Snapshot Size
             usageRecResponse.setSize(usageRecord.getSize());
-
+            if (!oldFormat) {
+                final StringBuilder builder = new StringBuilder();
+                builder.append("Snapshot usage ");
+                if (snap != null) {
+                    builder.append("for ").append(snap.getName()).append(" 
(").append(snap.getUuid()).append(") ")
+                            .append("with size 
").append(usageRecord.getSize());
+                }
+                usageRecResponse.setDescription(builder.toString());
+            }
         } else if (usageRecord.getUsageType() == 
UsageTypes.LOAD_BALANCER_POLICY) {
             //Load Balancer Policy ID
             LoadBalancerVO lb = 
_entityMgr.findByIdIncludingRemoved(LoadBalancerVO.class, 
usageRecord.getUsageId().toString());
@@ -3492,6 +3583,14 @@ public class ApiResponseHelper implements 
ResponseGenerator {
                 usageRecResponse.setUsageId(lb.getUuid());
                 resourceId = lb.getId();
             }
+            if (!oldFormat) {
+                final StringBuilder builder = new StringBuilder();
+                builder.append("Loadbalancer policy usage ");
+                if (lb != null) {
+                    builder.append(lb.getName()).append(" 
(").append(lb.getUuid()).append(")");
+                }
+                usageRecResponse.setDescription(builder.toString());
+            }
         } else if (usageRecord.getUsageType() == 
UsageTypes.PORT_FORWARDING_RULE) {
             //Port Forwarding Rule ID
             PortForwardingRuleVO pf = 
_entityMgr.findByIdIncludingRemoved(PortForwardingRuleVO.class, 
usageRecord.getUsageId().toString());
@@ -3500,20 +3599,45 @@ public class ApiResponseHelper implements 
ResponseGenerator {
                 usageRecResponse.setUsageId(pf.getUuid());
                 resourceId = pf.getId();
             }
-
+            if (!oldFormat) {
+                final StringBuilder builder = new StringBuilder();
+                builder.append("Port forwarding rule usage");
+                if (pf != null) {
+                    builder.append(" (").append(pf.getUuid()).append(")");
+                }
+                usageRecResponse.setDescription(builder.toString());
+            }
         } else if (usageRecord.getUsageType() == UsageTypes.NETWORK_OFFERING) {
             //Network Offering Id
             NetworkOfferingVO netOff = 
_entityMgr.findByIdIncludingRemoved(NetworkOfferingVO.class, 
usageRecord.getOfferingId().toString());
             usageRecResponse.setOfferingId(netOff.getUuid());
             //is Default
-            usageRecResponse.setDefault((usageRecord.getUsageId() == 1) ? true 
: false);
-
+            usageRecResponse.setDefault(usageRecord.getUsageId() == 1);
+            if (!oldFormat) {
+                final StringBuilder builder = new StringBuilder();
+                builder.append("Network offering ");
+                if (netOff != null) {
+                    builder.append(netOff.getName()).append(" 
(").append(netOff.getUuid()).append(") usage ");
+                }
+                if (vmInstance != null) {
+                    builder.append("for VM 
").append(vmInstance.getHostName()).append(" 
(").append(vmInstance.getUuid()).append(") ");
+                }
+                usageRecResponse.setDescription(builder.toString());
+            }
         } else if (usageRecord.getUsageType() == UsageTypes.VPN_USERS) {
             //VPN User ID
             VpnUserVO vpnUser = 
_entityMgr.findByIdIncludingRemoved(VpnUserVO.class, 
usageRecord.getUsageId().toString());
             if (vpnUser != null) {
                 usageRecResponse.setUsageId(vpnUser.getUuid());
             }
+            if (!oldFormat) {
+                final StringBuilder builder = new StringBuilder();
+                builder.append("VPN usage ");
+                if (vpnUser != null) {
+                    builder.append("for user 
").append(vpnUser.getUsername()).append(" 
(").append(vpnUser.getUuid()).append(")");
+                }
+                usageRecResponse.setDescription(builder.toString());
+            }
         } else if (usageRecord.getUsageType() == UsageTypes.SECURITY_GROUP) {
             //Security Group Id
             SecurityGroupVO sg = 
_entityMgr.findByIdIncludingRemoved(SecurityGroupVO.class, 
usageRecord.getUsageId().toString());
@@ -3522,20 +3646,69 @@ public class ApiResponseHelper implements 
ResponseGenerator {
                 resourceId = sg.getId();
                 usageRecResponse.setUsageId(sg.getUuid());
             }
+            if (!oldFormat) {
+                final StringBuilder builder = new StringBuilder();
+                builder.append("Security group");
+                if (sg != null) {
+                    builder.append(" ").append(sg.getName()).append(" 
(").append(sg.getUuid()).append(") usage");
+                }
+                if (vmInstance != null) {
+                    builder.append(" for VM 
").append(vmInstance.getHostName()).append(" 
(").append(vmInstance.getUuid()).append(")");
+                }
+                usageRecResponse.setDescription(builder.toString());
+            }
         } else if (usageRecord.getUsageType() == UsageTypes.VM_SNAPSHOT) {
-            VMInstanceVO vm = 
_entityMgr.findByIdIncludingRemoved(VMInstanceVO.class, 
usageRecord.getVmInstanceId().toString());
             resourceType = ResourceObjectType.UserVm;
-            if (vm != null) {
-                resourceId = vm.getId();
-                usageRecResponse.setResourceName(vm.getInstanceName());
-                usageRecResponse.setUsageId(vm.getUuid());
+            if (vmInstance != null) {
+                resourceId = vmInstance.getId();
+                usageRecResponse.setResourceName(vmInstance.getInstanceName());
+                usageRecResponse.setUsageId(vmInstance.getUuid());
             }
             usageRecResponse.setSize(usageRecord.getSize());
             if (usageRecord.getOfferingId() != null) {
                 
usageRecResponse.setOfferingId(usageRecord.getOfferingId().toString());
             }
+            if (!oldFormat) {
+                VolumeVO volume = 
_entityMgr.findByIdIncludingRemoved(VolumeVO.class, 
usageRecord.getUsageId().toString());
+                DiskOfferingVO diskOff = null;
+                if (usageRecord.getOfferingId() != null) {
+                    diskOff = 
_entityMgr.findByIdIncludingRemoved(DiskOfferingVO.class, 
usageRecord.getOfferingId());
+                }
+                final StringBuilder builder = new StringBuilder();
+                builder.append("VMSnapshot usage");
+                if (vmInstance != null) {
+                    builder.append(" for VM 
").append(vmInstance.getHostName()).append(" 
(").append(vmInstance.getUuid()).append(")");
+                }
+                if (volume != null) {
+                    builder.append(" with volume 
").append(volume.getName()).append(" (").append(volume.getUuid()).append(")");
+                }
+                if (diskOff != null) {
+                    builder.append(" using disk offering 
").append(diskOff.getName()).append(" (").append(diskOff.getUuid()).append(")");
+                }
+                usageRecResponse.setDescription(builder.toString());
+            }
+        } else if (usageRecord.getUsageType() == UsageTypes.VOLUME_SECONDARY) {
+            VolumeVO volume = 
_entityMgr.findByIdIncludingRemoved(VolumeVO.class, 
usageRecord.getUsageId().toString());
+            if (!oldFormat) {
+                final StringBuilder builder = new StringBuilder();
+                builder.append("Volume on secondary storage usage");
+                if (volume != null) {
+                    builder.append(" for ").append(volume.getName()).append(" 
(").append(volume.getUuid()).append(") ")
+                            .append("with size 
").append(usageRecord.getSize());
+                }
+                usageRecResponse.setDescription(builder.toString());
+            }
+        } else if (usageRecord.getUsageType() == 
UsageTypes.VM_SNAPSHOT_ON_PRIMARY) {
+            if (!oldFormat) {
+                final StringBuilder builder = new StringBuilder();
+                builder.append("VMSnapshot on primary storage usage");
+                if (vmInstance != null) {
+                    builder.append(" for VM 
").append(vmInstance.getHostName()).append(" 
(").append(vmInstance.getUuid()).append(") ")
+                            .append("with size 
").append(usageRecord.getVirtualSize());
+                }
+                usageRecResponse.setDescription(builder.toString());
+            }
         }
-
         if(resourceTagResponseMap != null && 
resourceTagResponseMap.get(resourceId + ":" + resourceType) != null) {
              usageRecResponse.setTags(resourceTagResponseMap.get(resourceId + 
":" + resourceType));
         }

Reply via email to