Damans227 commented on code in PR #13490:
URL: https://github.com/apache/cloudstack/pull/13490#discussion_r3624821347


##########
server/src/main/java/com/cloud/api/ApiResponseHelper.java:
##########
@@ -5312,18 +5439,18 @@ public NetworkPermissionsResponse 
createNetworkPermissionsResponse(NetworkPermis
         return response;
     }
 
-    protected void handleCertificateResponse(String certStr, 
DirectDownloadCertificateResponse response) {
+protected void handleCertificateResponse(String certStr, 
DirectDownloadCertificateResponse response) {
         try {
-            Certificate cert = CertificateHelper.buildCertificate(certStr);
-            if (cert instanceof X509CertImpl) {
-                X509CertImpl certificate = (X509CertImpl) cert;
+            java.security.cert.Certificate cert = 
CertificateHelper.buildCertificate(certStr);

Review Comment:
   Nit: fully-qualified `java.security.cert.*` used inline here instead of 
importing, especially odd since the old imports for this package were just 
removed above.



##########
server/src/main/java/com/cloud/api/ApiResponseHelper.java:
##########
@@ -5312,18 +5439,18 @@ public NetworkPermissionsResponse 
createNetworkPermissionsResponse(NetworkPermis
         return response;
     }
 
-    protected void handleCertificateResponse(String certStr, 
DirectDownloadCertificateResponse response) {
+protected void handleCertificateResponse(String certStr, 
DirectDownloadCertificateResponse response) {

Review Comment:
   Nit: this line lost its indentation.



##########
server/src/main/java/com/cloud/api/ApiResponseHelper.java:
##########
@@ -4184,474 +4183,602 @@ public UsageRecordResponse createUsageResponse(Usage 
usageRecord, Map<String, Se
             }
         }
 
-        ResourceTag.ResourceObjectType resourceType = null;
-        Long resourceId = null;
+        UsageResourceDetails resourceDetails = 
populateUsageTypeSpecificDetails(usageRecord, usageRecResponse, oldFormat, 
vmInstance, template);
+        if (resourceTagResponseMap != null && resourceDetails.resourceId != 
null && resourceDetails.resourceType != null) {
+            final String tagKey = resourceDetails.resourceId + ":" + 
resourceDetails.resourceType;
+            if (resourceTagResponseMap.get(tagKey) != null) {
+                usageRecResponse.setTags(resourceTagResponseMap.get(tagKey));
+            }
+        }
+
+        if (usageRecord.getRawUsage() != null) {
+            DecimalFormat decimalFormat = new 
DecimalFormat("###########.######");
+            
usageRecResponse.setRawUsage(decimalFormat.format(usageRecord.getRawUsage()));
+        }
+
+        if (usageRecord.getStartDate() != null) {
+            usageRecResponse.setStartDate(usageRecord.getStartDate());
+        }
+        if (usageRecord.getEndDate() != null) {
+            usageRecResponse.setEndDate(usageRecord.getEndDate());
+        }
+
+        return usageRecResponse;
+    }
+
+    private UsageResourceDetails populateUsageTypeSpecificDetails(Usage 
usageRecord, UsageRecordResponse usageRecResponse, boolean oldFormat,
+            VMInstanceVO vmInstance, VMTemplateVO template) {
         if (usageRecord.getUsageType() == UsageTypes.RUNNING_VM || 
usageRecord.getUsageType() == UsageTypes.ALLOCATED_VM) {
-            ServiceOfferingVO svcOffering = 
_entityMgr.findByIdIncludingRemoved(ServiceOfferingVO.class, 
usageRecord.getOfferingId().toString());
-            //Service Offering Id
-            if(svcOffering != null) {
-                usageRecResponse.setOfferingId(svcOffering.getUuid());
-            }
-            //VM Instance ID
-            VMInstanceVO vm = null;
-            if (usageRecord.getUsageId() != null && 
usageRecord.getUsageId().equals(usageRecord.getVmInstanceId())) {
-                vm = vmInstance;
-            } else {
-                vm = _entityMgr.findByIdIncludingRemoved(VMInstanceVO.class, 
usageRecord.getUsageId().toString());
+            return populateRunningOrAllocatedVmUsageResponse(usageRecord, 
usageRecResponse, oldFormat, vmInstance, template);
+        } else if (usageRecord.getUsageType() == UsageTypes.IP_ADDRESS) {
+            return populateIpAddressUsageResponse(usageRecord, 
usageRecResponse);
+        } else if (usageRecord.getUsageType() == UsageTypes.NETWORK_BYTES_SENT 
|| usageRecord.getUsageType() == UsageTypes.NETWORK_BYTES_RECEIVED) {
+            return populateNetworkBytesUsageResponse(usageRecord, 
usageRecResponse, oldFormat);
+        } 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) {
+            return populateVmDiskUsageResponse(usageRecord, usageRecResponse, 
oldFormat, vmInstance);
+        } else if (usageRecord.getUsageType() == UsageTypes.VOLUME) {
+            return populateVolumeUsageResponse(usageRecord, usageRecResponse, 
oldFormat, vmInstance, template);
+        } else if (usageRecord.getUsageType() == UsageTypes.TEMPLATE || 
usageRecord.getUsageType() == UsageTypes.ISO) {
+            return populateTemplateOrIsoUsageResponse(usageRecord, 
usageRecResponse, oldFormat);
+        } else if (usageRecord.getUsageType() == UsageTypes.SNAPSHOT) {
+            return populateSnapshotUsageResponse(usageRecord, 
usageRecResponse, oldFormat);
+        } else if (usageRecord.getUsageType() == 
UsageTypes.LOAD_BALANCER_POLICY) {
+            return populateLoadBalancerPolicyUsageResponse(usageRecord, 
usageRecResponse, oldFormat);
+        } else if (usageRecord.getUsageType() == 
UsageTypes.PORT_FORWARDING_RULE) {
+            return populatePortForwardingRuleUsageResponse(usageRecord, 
usageRecResponse, oldFormat);
+        } else if (usageRecord.getUsageType() == UsageTypes.NETWORK_OFFERING) {
+            return populateNetworkOfferingUsageResponse(usageRecord, 
usageRecResponse, oldFormat, vmInstance);
+        } else if (usageRecord.getUsageType() == UsageTypes.VPN_USERS) {
+            return populateVpnUsersUsageResponse(usageRecord, 
usageRecResponse, oldFormat);
+        } else if (usageRecord.getUsageType() == UsageTypes.SECURITY_GROUP) {
+            return populateSecurityGroupUsageResponse(usageRecord, 
usageRecResponse, oldFormat, vmInstance);
+        } else if (usageRecord.getUsageType() == UsageTypes.BACKUP) {
+            return populateBackupUsageResponse(usageRecord, usageRecResponse, 
vmInstance);
+        } else if (usageRecord.getUsageType() == UsageTypes.VM_SNAPSHOT) {
+            return populateVmSnapshotUsageResponse(usageRecord, 
usageRecResponse, oldFormat, vmInstance);
+        } else if (usageRecord.getUsageType() == UsageTypes.VOLUME_SECONDARY) {
+            return populateVolumeSecondaryUsageResponse(usageRecord, 
usageRecResponse, oldFormat);
+        } else if (usageRecord.getUsageType() == 
UsageTypes.VM_SNAPSHOT_ON_PRIMARY) {
+            return populateVmSnapshotOnPrimaryUsageResponse(usageRecord, 
usageRecResponse, oldFormat, vmInstance);
+        } else if (usageRecord.getUsageType() == UsageTypes.BUCKET) {
+            return populateBucketUsageResponse(usageRecord, usageRecResponse);
+        }
+
+        return new UsageResourceDetails();
+    }
+
+    private UsageResourceDetails 
populateRunningOrAllocatedVmUsageResponse(Usage usageRecord, 
UsageRecordResponse usageRecResponse, boolean oldFormat,
+            VMInstanceVO vmInstance, VMTemplateVO template) {
+        UsageResourceDetails resourceDetails = new UsageResourceDetails();
+        ServiceOfferingVO svcOffering = 
_entityMgr.findByIdIncludingRemoved(ServiceOfferingVO.class, 
usageRecord.getOfferingId().toString());
+        //Service Offering Id
+        if(svcOffering != null) {
+            usageRecResponse.setOfferingId(svcOffering.getUuid());
+        }
+        //VM Instance ID
+        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) {
+            resourceDetails.resourceType = 
ResourceTag.ResourceObjectType.UserVm;
+            usageRecResponse.setUsageId(vm.getUuid());
+            resourceDetails.resourceId = vm.getId();
+            final GuestOS guestOS = _guestOsDao.findById(vm.getGuestOSId());
+            if (guestOS != null) {
+                usageRecResponse.setOsTypeId(guestOS.getUuid());
+                usageRecResponse.setOsDisplayName(guestOS.getDisplayName());
+                final GuestOsCategory guestOsCategory = 
_guestOsCategoryDao.findById(guestOS.getCategoryId());
+                if (guestOsCategory != null) {
+                    
usageRecResponse.setOsCategoryId(guestOsCategory.getUuid());
+                    
usageRecResponse.setOsCategoryName(guestOsCategory.getName());
+                }
+            }
+        }
+        //Hypervisor Type
+        usageRecResponse.setType(usageRecord.getType());
+        //Dynamic compute offerings details
+        if (usageRecord.getCpuCores() != null) {
+            usageRecResponse.setCpuNumber(usageRecord.getCpuCores());
+        } else if (svcOffering != null && svcOffering.getCpu() != null) {
+            usageRecResponse.setCpuNumber(svcOffering.getCpu().longValue());
+        }
+        if (usageRecord.getCpuSpeed() != null) {
+            usageRecResponse.setCpuSpeed(usageRecord.getCpuSpeed());
+        } else if (svcOffering != null && svcOffering.getSpeed() != null) {
+            usageRecResponse.setCpuSpeed(svcOffering.getSpeed().longValue());
+        }
+        if (usageRecord.getMemory() != null) {
+            usageRecResponse.setMemory(usageRecord.getMemory());
+        } else if (svcOffering != null && 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) {
-                resourceType = ResourceTag.ResourceObjectType.UserVm;
-                usageRecResponse.setUsageId(vm.getUuid());
-                resourceId = vm.getId();
-                final GuestOS guestOS = 
_guestOsDao.findById(vm.getGuestOSId());
-                if (guestOS != null) {
-                    usageRecResponse.setOsTypeId(guestOS.getUuid());
-                    
usageRecResponse.setOsDisplayName(guestOS.getDisplayName());
-                    final GuestOsCategory guestOsCategory = 
_guestOsCategoryDao.findById(guestOS.getCategoryId());
-                    if (guestOsCategory != null) {
-                        
usageRecResponse.setOsCategoryId(guestOsCategory.getUuid());
-                        
usageRecResponse.setOsCategoryName(guestOsCategory.getName());
-                    }
-                }
+                builder.append("for ").append(vm.getHostName()).append(" 
(").append(vm.getInstanceName()).append(") (").append(vm.getUuid()).append(") 
");
             }
-            //Hypervisor Type
-            usageRecResponse.setType(usageRecord.getType());
-            //Dynamic compute offerings details
-            if(usageRecord.getCpuCores() != null) {
-                usageRecResponse.setCpuNumber(usageRecord.getCpuCores());
-            } else if (svcOffering.getCpu() != null){
-                
usageRecResponse.setCpuNumber(svcOffering.getCpu().longValue());
-            }
-            if(usageRecord.getCpuSpeed() != null) {
-                usageRecResponse.setCpuSpeed(usageRecord.getCpuSpeed());
-            } else if(svcOffering.getSpeed() != null){
-                
usageRecResponse.setCpuSpeed(svcOffering.getSpeed().longValue());
-            }
-            if(usageRecord.getMemory() != null) {
-                usageRecResponse.setMemory(usageRecord.getMemory());
-            } 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());
+            if (svcOffering != null) {
+                builder.append("using service offering 
").append(svcOffering.getName()).append(" 
(").append(svcOffering.getUuid()).append(") ");
             }
-        } else if (usageRecord.getUsageType() == UsageTypes.IP_ADDRESS) {
-            //IP Address ID
-            IPAddressVO ip = 
_entityMgr.findByIdIncludingRemoved(IPAddressVO.class, 
usageRecord.getUsageId().toString());
-            if (ip != null) {
-                Long networkId = ip.getAssociatedWithNetworkId();
-                if (networkId == null) {
-                    networkId = ip.getSourceNetworkId();
-                }
-                resourceType = ResourceObjectType.PublicIpAddress;
-                resourceId = ip.getId();
-                usageRecResponse.setUsageId(ip.getUuid());
-            }
-            //isSourceNAT
-            
usageRecResponse.setSourceNat((usageRecord.getType().equals("SourceNat")) ? 
true : false);
-            //isSystem
-            usageRecResponse.setSystem((usageRecord.getSize() == 1) ? true : 
false);
-        } else if (usageRecord.getUsageType() == UsageTypes.NETWORK_BYTES_SENT 
|| usageRecord.getUsageType() == UsageTypes.NETWORK_BYTES_RECEIVED) {
-            //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
-                vm = _entityMgr.findByIdIncludingRemoved(VMInstanceVO.class, 
usageRecord.getUsageId().toString());
-                if (vm != null) {
-                    resourceId = vm.getId();
-                    usageRecResponse.setUsageId(vm.getUuid());
-                }
-            } else {
-                //External Device Host Id
-                host = _entityMgr.findByIdIncludingRemoved(HostVO.class, 
usageRecord.getUsageId().toString());
-                if (host != null) {
-                    usageRecResponse.setUsageId(host.getUuid());
-                }
+            if (template != null) {
+                builder.append("and template 
").append(template.getName()).append(" 
(").append(template.getUuid()).append(")");
             }
-            //Network ID
-            NetworkVO network = null;
-            if((usageRecord.getNetworkId() != null) && 
(usageRecord.getNetworkId() != 0)) {
-                network = _entityMgr.findByIdIncludingRemoved(NetworkVO.class, 
usageRecord.getNetworkId().toString());
-                if (network != null) {
-                    resourceType = ResourceObjectType.Network;
-                    if (network.getTrafficType() == TrafficType.Public) {
-                        VirtualRouter router = 
ApiDBUtils.findDomainRouterById(usageRecord.getUsageId());
-                        Vpc vpc = 
ApiDBUtils.findVpcByIdIncludingRemoved(router.getVpcId());
+            usageRecResponse.setDescription(builder.toString());
+        }
+        return resourceDetails;
+    }
+
+    private UsageResourceDetails populateIpAddressUsageResponse(Usage 
usageRecord, UsageRecordResponse usageRecResponse) {
+        UsageResourceDetails resourceDetails = new UsageResourceDetails();
+        //IP Address ID
+        IPAddressVO ip = 
_entityMgr.findByIdIncludingRemoved(IPAddressVO.class, 
usageRecord.getUsageId().toString());
+        if (ip != null) {
+            resourceDetails.resourceType = ResourceObjectType.PublicIpAddress;
+            resourceDetails.resourceId = ip.getId();
+            usageRecResponse.setUsageId(ip.getUuid());
+        }
+        //isSourceNAT
+        
usageRecResponse.setSourceNat((usageRecord.getType().equals("SourceNat")) ? 
true : false);
+        //isSystem
+        usageRecResponse.setSystem((usageRecord.getSize() == 1) ? true : 
false);
+        return resourceDetails;
+    }
+
+    private UsageResourceDetails populateNetworkBytesUsageResponse(Usage 
usageRecord, UsageRecordResponse usageRecResponse, boolean oldFormat) {
+        UsageResourceDetails resourceDetails = new UsageResourceDetails();
+        //Device Type
+        resourceDetails.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
+            vm = _entityMgr.findByIdIncludingRemoved(VMInstanceVO.class, 
usageRecord.getUsageId().toString());
+            if (vm != null) {
+                resourceDetails.resourceId = vm.getId();
+                usageRecResponse.setUsageId(vm.getUuid());
+            }
+        } else {
+            //External Device Host Id
+            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)) {
+            network = _entityMgr.findByIdIncludingRemoved(NetworkVO.class, 
usageRecord.getNetworkId().toString());
+            if (network != null) {
+                resourceDetails.resourceType = ResourceObjectType.Network;
+                if (network.getTrafficType() == TrafficType.Public) {
+                    VirtualRouter router = 
ApiDBUtils.findDomainRouterById(usageRecord.getUsageId());
+                    Vpc vpc = router != null && router.getVpcId() != null ? 
ApiDBUtils.findVpcByIdIncludingRemoved(router.getVpcId()) : null;
+                    if (vpc != null) {
                         usageRecResponse.setVpcId(vpc.getUuid());
-                        resourceId = vpc.getId();
+                        resourceDetails.resourceId = vpc.getId();
                     } else {
                         usageRecResponse.setNetworkId(network.getUuid());
-                        resourceId = network.getId();
+                        resourceDetails.resourceId = network.getId();
                     }
-                    usageRecResponse.setResourceName(network.getName());
+                } else {
+                    usageRecResponse.setNetworkId(network.getUuid());
+                    resourceDetails.resourceId = network.getId();
                 }
+                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) {
-                    if (network.getName() != null) {
-                        builder.append(network.getName());
-                    }
-                    if (network.getUuid() != null){
-                        builder.append(" 
(").append(network.getUuid()).append(") ");
-                    }
-                    builder.append(" " + 
toHumanReadableSize(usageRecord.getRawUsage().longValue())  + " ");
-                }
-                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());
+        }
+        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 ");
             }
-        } 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;
-            //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(")");
+            if (network != null) {
+                if (network.getName() != null) {
+                    builder.append(network.getName());
                 }
-                if (usageRecord.getRawUsage()!= null){
-                    builder.append(" " + 
toHumanReadableSize(usageRecord.getRawUsage().longValue()));
+                if (network.getUuid() != null){
+                    builder.append(" (").append(network.getUuid()).append(") 
");
                 }
-                usageRecResponse.setDescription(builder.toString());
+                builder.append(" " + 
toHumanReadableSize(usageRecord.getRawUsage().longValue())  + " ");
+            }
+            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());
+        }
+        return resourceDetails;
+    }
+
+    private UsageResourceDetails populateVmDiskUsageResponse(Usage 
usageRecord, UsageRecordResponse usageRecResponse, boolean oldFormat, 
VMInstanceVO vmInstance) {
+        UsageResourceDetails resourceDetails = new UsageResourceDetails();
+        //Device Type
+        usageRecResponse.setType(usageRecord.getType());
+        resourceDetails.resourceType = ResourceObjectType.Volume;
+        //Volume ID
+        VolumeVO volume = _entityMgr.findByIdIncludingRemoved(VolumeVO.class, 
usageRecord.getUsageId().toString());
+        if (volume != null) {
+            usageRecResponse.setUsageId(volume.getUuid());
+            resourceDetails.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(")");
             }
-        } else if (usageRecord.getUsageType() == UsageTypes.VOLUME) {
-            //Volume ID
-            VolumeVO volume = 
_entityMgr.findByIdIncludingRemoved(VolumeVO.class, 
usageRecord.getUsageId().toString());
-            resourceType = ResourceObjectType.Volume;
             if (volume != null) {
-                usageRecResponse.setUsageId(volume.getUuid());
-                resourceId = volume.getId();
+                builder.append(" and volume 
").append(volume.getName()).append(" (").append(volume.getUuid()).append(")");
             }
-            //Volume Size
-            usageRecResponse.setSize(usageRecord.getSize());
-            //Disk Offering Id
-            DiskOfferingVO diskOff = null;
-            if (usageRecord.getOfferingId() != null) {
-                diskOff = 
_entityMgr.findByIdIncludingRemoved(DiskOfferingVO.class, 
usageRecord.getOfferingId().toString());
+            if (usageRecord.getRawUsage()!= null){
+                builder.append(" " + 
toHumanReadableSize(usageRecord.getRawUsage().longValue()));
+            }
+            usageRecResponse.setDescription(builder.toString());
+        }
+        return resourceDetails;
+    }
+
+    private UsageResourceDetails populateVolumeUsageResponse(Usage 
usageRecord, UsageRecordResponse usageRecResponse, boolean oldFormat,
+            VMInstanceVO vmInstance, VMTemplateVO template) {
+        UsageResourceDetails resourceDetails = new UsageResourceDetails();
+        //Volume ID
+        VolumeVO volume = _entityMgr.findByIdIncludingRemoved(VolumeVO.class, 
usageRecord.getUsageId().toString());
+        resourceDetails.resourceType = ResourceObjectType.Volume;
+        if (volume != null) {
+            usageRecResponse.setUsageId(volume.getUuid());
+            resourceDetails.resourceId = volume.getId();
+        }
+        //Volume Size
+        usageRecResponse.setSize(usageRecord.getSize());
+        //Disk Offering Id
+        DiskOfferingVO diskOff = null;
+        if (usageRecord.getOfferingId() != null) {
+            diskOff = 
_entityMgr.findByIdIncludingRemoved(DiskOfferingVO.class, 
usageRecord.getOfferingId().toString());
+            if (diskOff != null) {
                 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 (vmInstance != null) {
-                    builder.append(" attached to VM 
").append(vmInstance.getHostName()).append(" 
(").append(vmInstance.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(")");
-                }
-                if (usageRecord.getSize() != null) {
-                    builder.append(" and size " + 
toHumanReadableSize(usageRecord.getSize()));
-                }
-                usageRecResponse.setDescription(builder.toString());
+        }
+        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 (vmInstance != null) {
+                builder.append(" attached to VM 
").append(vmInstance.getHostName()).append(" 
(").append(vmInstance.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(")");
+            }
+            if (usageRecord.getSize() != null) {
+                builder.append(" and size " + 
toHumanReadableSize(usageRecord.getSize()));
+            }
+            usageRecResponse.setDescription(builder.toString());
+        }
+        return resourceDetails;
+    }
+
+    private UsageResourceDetails populateTemplateOrIsoUsageResponse(Usage 
usageRecord, UsageRecordResponse usageRecResponse, boolean oldFormat) {
+        UsageResourceDetails resourceDetails = new UsageResourceDetails();
+        //Template/ISO ID
+        VMTemplateVO tmpl = 
_entityMgr.findByIdIncludingRemoved(VMTemplateVO.class, 
usageRecord.getUsageId().toString());
+        if (tmpl != null) {
+            usageRecResponse.setUsageId(tmpl.getUuid());
+            resourceDetails.resourceId = tmpl.getId();
+        }
+        //Template/ISO Size
+        usageRecResponse.setSize(usageRecord.getSize());
+        if (usageRecord.getUsageType() == UsageTypes.ISO) {
+            usageRecResponse.setVirtualSize(usageRecord.getSize());
+            resourceDetails.resourceType = ResourceObjectType.ISO;
+        } else {
+            usageRecResponse.setVirtualSize(usageRecord.getVirtualSize());
+            resourceDetails.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");
             }
-        } else if (usageRecord.getUsageType() == UsageTypes.TEMPLATE || 
usageRecord.getUsageType() == UsageTypes.ISO) {
-            //Template/ISO ID
-            VMTemplateVO tmpl = 
_entityMgr.findByIdIncludingRemoved(VMTemplateVO.class, 
usageRecord.getUsageId().toString());
             if (tmpl != null) {
-                usageRecResponse.setUsageId(tmpl.getUuid());
-                resourceId = tmpl.getId();
-            }
-            //Template/ISO Size
-            usageRecResponse.setSize(usageRecord.getSize());
-            if (usageRecord.getUsageType() == UsageTypes.ISO) {
-                usageRecResponse.setVirtualSize(usageRecord.getSize());
-                resourceType = ResourceObjectType.ISO;
-            } else {
-                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(toHumanReadableSize(usageRecord.getSize())).append(" and virtual size 
").append(toHumanReadableSize(usageRecord.getVirtualSize()));
-                }
-                usageRecResponse.setDescription(builder.toString());
+                builder.append(" for ").append(tmpl.getName()).append(" 
(").append(tmpl.getUuid()).append(") ")
+                        .append("with size 
").append(toHumanReadableSize(usageRecord.getSize())).append(" and virtual size 
").append(toHumanReadableSize(usageRecord.getVirtualSize()));
             }
-        } else if (usageRecord.getUsageType() == UsageTypes.SNAPSHOT) {
-            //Snapshot ID
-            SnapshotVO snap = 
_entityMgr.findByIdIncludingRemoved(SnapshotVO.class, 
usageRecord.getUsageId().toString());
-            resourceType = ResourceObjectType.Snapshot;
+            usageRecResponse.setDescription(builder.toString());
+        }
+        return resourceDetails;
+    }
+
+    private UsageResourceDetails populateSnapshotUsageResponse(Usage 
usageRecord, UsageRecordResponse usageRecResponse, boolean oldFormat) {
+        UsageResourceDetails resourceDetails = new UsageResourceDetails();
+        //Snapshot ID
+        SnapshotVO snap = 
_entityMgr.findByIdIncludingRemoved(SnapshotVO.class, 
usageRecord.getUsageId().toString());
+        resourceDetails.resourceType = ResourceObjectType.Snapshot;
+        if (snap != null) {
+            usageRecResponse.setUsageId(snap.getUuid());
+            resourceDetails.resourceId = snap.getId();
+        }
+        //Snapshot Size
+        usageRecResponse.setSize(usageRecord.getSize());
+        if (!oldFormat) {
+            final StringBuilder builder = new StringBuilder();
+            builder.append("Snapshot usage ");
             if (snap != null) {
-                usageRecResponse.setUsageId(snap.getUuid());
-                resourceId = snap.getId();
-            }
-            //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(toHumanReadableSize(usageRecord.getSize()));
-                }
-                usageRecResponse.setDescription(builder.toString());
+                builder.append("for ").append(snap.getName()).append(" 
(").append(snap.getUuid()).append(") ")
+                        .append("with size 
").append(toHumanReadableSize(usageRecord.getSize()));
             }
-        } else if (usageRecord.getUsageType() == 
UsageTypes.LOAD_BALANCER_POLICY) {
-            //Load Balancer Policy ID
-            LoadBalancerVO lb = 
_entityMgr.findByIdIncludingRemoved(LoadBalancerVO.class, 
usageRecord.getUsageId().toString());
-            resourceType = ResourceObjectType.LoadBalancer;
+            usageRecResponse.setDescription(builder.toString());
+        }
+        return resourceDetails;
+    }
+
+    private UsageResourceDetails populateLoadBalancerPolicyUsageResponse(Usage 
usageRecord, UsageRecordResponse usageRecResponse, boolean oldFormat) {
+        UsageResourceDetails resourceDetails = new UsageResourceDetails();
+        //Load Balancer Policy ID
+        LoadBalancerVO lb = 
_entityMgr.findByIdIncludingRemoved(LoadBalancerVO.class, 
usageRecord.getUsageId().toString());
+        resourceDetails.resourceType = ResourceObjectType.LoadBalancer;
+        if (lb != null) {
+            usageRecResponse.setUsageId(lb.getUuid());
+            resourceDetails.resourceId = lb.getId();
+        }
+        if (!oldFormat) {
+            final StringBuilder builder = new StringBuilder();
+            builder.append("Loadbalancer policy usage ");
             if (lb != null) {
-                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());
+                builder.append(lb.getName()).append(" 
(").append(lb.getUuid()).append(")");
             }
-        } else if (usageRecord.getUsageType() == 
UsageTypes.PORT_FORWARDING_RULE) {
-            //Port Forwarding Rule ID
-            PortForwardingRuleVO pf = 
_entityMgr.findByIdIncludingRemoved(PortForwardingRuleVO.class, 
usageRecord.getUsageId().toString());
-            resourceType = ResourceObjectType.PortForwardingRule;
+            usageRecResponse.setDescription(builder.toString());
+        }
+        return resourceDetails;
+    }
+
+    private UsageResourceDetails populatePortForwardingRuleUsageResponse(Usage 
usageRecord, UsageRecordResponse usageRecResponse, boolean oldFormat) {
+        UsageResourceDetails resourceDetails = new UsageResourceDetails();
+        //Port Forwarding Rule ID
+        PortForwardingRuleVO pf = 
_entityMgr.findByIdIncludingRemoved(PortForwardingRuleVO.class, 
usageRecord.getUsageId().toString());
+        resourceDetails.resourceType = ResourceObjectType.PortForwardingRule;
+        if (pf != null) {
+            usageRecResponse.setUsageId(pf.getUuid());
+            resourceDetails.resourceId = pf.getId();
+        }
+        if (!oldFormat) {
+            final StringBuilder builder = new StringBuilder();
+            builder.append("Port forwarding rule usage");
             if (pf != null) {
-                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());
+                builder.append(" (").append(pf.getUuid()).append(")");
             }
-        } else if (usageRecord.getUsageType() == UsageTypes.NETWORK_OFFERING) {
-            //Network Offering Id
-            NetworkOfferingVO netOff = 
_entityMgr.findByIdIncludingRemoved(NetworkOfferingVO.class, 
usageRecord.getOfferingId().toString());
+            usageRecResponse.setDescription(builder.toString());
+        }
+        return resourceDetails;
+    }
+
+    private UsageResourceDetails populateNetworkOfferingUsageResponse(Usage 
usageRecord, UsageRecordResponse usageRecResponse, boolean oldFormat, 
VMInstanceVO vmInstance) {

Review Comment:
   Nit: this method (and `populateVpnUsersUsageResponse`, 
`populateVolumeSecondaryUsageResponse`, `populateBucketUsageResponse` below) 
just returns `new UsageResourceDetails()` directly, while the other `populate*` 
methods declare a local `resourceDetails`, mutate it, and return that. Minor 
inconsistency in the extraction pattern.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to