Pearl1594 commented on code in PR #13695:
URL: https://github.com/apache/cloudstack/pull/13695#discussion_r4049181709


##########
server/src/main/java/com/cloud/api/ApiResponseHelper.java:
##########
@@ -4116,474 +4139,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());
+        //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());
+        }
+        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());
+        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());
+            if (vm != null) {
+                resourceDetails.resourceId = vm.getId();
+                usageRecResponse.setUsageId(vm.getUuid());
+            }
+        } else {
+            //External Device Host Id
+            host = _entityMgr.findByIdIncludingRemoved(HostVO.class, 
usageRecord.getUsageId());
+            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());
+            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())  + " ");

Review Comment:
   should we add the null check as done before:
   ```suggestion
                   if (usageRecord.getRawUsage()!= null) {
                       builder.append(" " + 
toHumanReadableSize(usageRecord.getRawUsage().longValue())  + " ");
                   }
   ```



-- 
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