Repository: cloudstack Updated Branches: refs/heads/4.3 5ccde5de9 -> e8047e11d
CLOUDSTACK-6472 (4.3 specific) listUsageRecords: Pull information from removed items as well, fixing NPEs/Null UUIDs with usage API calls. Signed-off-by: Sebastien Goasguen <run...@gmail.com> Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/e8047e11 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/e8047e11 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/e8047e11 Branch: refs/heads/4.3 Commit: e8047e11db7ef2bdc44bbedfdc47e63c55f080c5 Parents: 5ccde5d Author: Sam Schmit <sam.sch...@appcore.com> Authored: Mon May 5 16:38:23 2014 -0500 Committer: Sebastien Goasguen <run...@gmail.com> Committed: Tue May 6 08:57:30 2014 -0400 ---------------------------------------------------------------------- server/src/com/cloud/api/ApiResponseHelper.java | 36 ++++++++++---------- utils/src/com/cloud/utils/db/EntityManager.java | 2 ++ 2 files changed, 20 insertions(+), 18 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e8047e11/server/src/com/cloud/api/ApiResponseHelper.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/api/ApiResponseHelper.java b/server/src/com/cloud/api/ApiResponseHelper.java index a8bef47..7718fc1 100755 --- a/server/src/com/cloud/api/ApiResponseHelper.java +++ b/server/src/com/cloud/api/ApiResponseHelper.java @@ -3318,11 +3318,11 @@ public class ApiResponseHelper implements ResponseGenerator { } if(usageRecord.getUsageType() == UsageTypes.RUNNING_VM || usageRecord.getUsageType() == UsageTypes.ALLOCATED_VM){ - ServiceOfferingVO svcOffering = _entityMgr.findById(ServiceOfferingVO.class, usageRecord.getOfferingId().toString()); + ServiceOfferingVO svcOffering = _entityMgr.findByIdIncludingRemoved(ServiceOfferingVO.class, usageRecord.getOfferingId().toString()); //Service Offering Id usageRecResponse.setOfferingId(svcOffering.getUuid()); //VM Instance ID - VMInstanceVO vm = _entityMgr.findById(VMInstanceVO.class, usageRecord.getUsageId().toString()); + VMInstanceVO vm = _entityMgr.findByIdIncludingRemoved(VMInstanceVO.class, usageRecord.getUsageId().toString()); if (vm != null) { usageRecResponse.setUsageId(vm.getUuid()); } @@ -3335,7 +3335,7 @@ public class ApiResponseHelper implements ResponseGenerator { //isSystem usageRecResponse.setSystem((usageRecord.getSize() == 1)?true:false); //IP Address ID - IPAddressVO ip = _entityMgr.findById(IPAddressVO.class, usageRecord.getUsageId().toString()); + IPAddressVO ip = _entityMgr.findByIdIncludingRemoved(IPAddressVO.class, usageRecord.getUsageId().toString()); if (ip != null) { usageRecResponse.setUsageId(ip.getUuid()); } @@ -3345,19 +3345,19 @@ public class ApiResponseHelper implements ResponseGenerator { usageRecResponse.setType(usageRecord.getType()); if(usageRecord.getType().equals("DomainRouter")){ //Domain Router Id - VMInstanceVO vm = _entityMgr.findById(VMInstanceVO.class, usageRecord.getUsageId().toString()); + VMInstanceVO vm = _entityMgr.findByIdIncludingRemoved(VMInstanceVO.class, usageRecord.getUsageId().toString()); if (vm != null) { usageRecResponse.setUsageId(vm.getUuid()); } } else { //External Device Host Id - HostVO host = _entityMgr.findById(HostVO.class, usageRecord.getUsageId().toString()); + HostVO host = _entityMgr.findByIdIncludingRemoved(HostVO.class, usageRecord.getUsageId().toString()); if (host != null) { usageRecResponse.setUsageId(host.getUuid()); } } //Network ID - NetworkVO network = _entityMgr.findById(NetworkVO.class, usageRecord.getNetworkId().toString()); + NetworkVO network = _entityMgr.findByIdIncludingRemoved(NetworkVO.class, usageRecord.getNetworkId().toString()); if (network != null) { usageRecResponse.setNetworkId(network.getUuid()); } @@ -3367,19 +3367,19 @@ public class ApiResponseHelper implements ResponseGenerator { //Device Type usageRecResponse.setType(usageRecord.getType()); //VM Instance Id - VMInstanceVO vm = _entityMgr.findById(VMInstanceVO.class, usageRecord.getVmInstanceId().toString()); + VMInstanceVO vm = _entityMgr.findByIdIncludingRemoved(VMInstanceVO.class, usageRecord.getVmInstanceId().toString()); if (vm != null) { usageRecResponse.setVirtualMachineId(vm.getUuid()); } //Volume ID - VolumeVO volume = _entityMgr.findById(VolumeVO.class, usageRecord.getUsageId().toString()); + VolumeVO volume = _entityMgr.findByIdIncludingRemoved(VolumeVO.class, usageRecord.getUsageId().toString()); if (volume != null) { usageRecResponse.setUsageId(volume.getUuid()); } } else if(usageRecord.getUsageType() == UsageTypes.VOLUME){ //Volume ID - VolumeVO volume = _entityMgr.findById(VolumeVO.class, usageRecord.getUsageId().toString()); + VolumeVO volume = _entityMgr.findByIdIncludingRemoved(VolumeVO.class, usageRecord.getUsageId().toString()); if (volume != null) { usageRecResponse.setUsageId(volume.getUuid()); } @@ -3387,13 +3387,13 @@ public class ApiResponseHelper implements ResponseGenerator { usageRecResponse.setSize(usageRecord.getSize()); //Disk Offering Id if(usageRecord.getOfferingId() != null){ - DiskOfferingVO diskOff = _entityMgr.findById(DiskOfferingVO.class, usageRecord.getOfferingId().toString()); + DiskOfferingVO diskOff = _entityMgr.findByIdIncludingRemoved(DiskOfferingVO.class, usageRecord.getOfferingId().toString()); usageRecResponse.setOfferingId(diskOff.getUuid()); } } else if(usageRecord.getUsageType() == UsageTypes.TEMPLATE || usageRecord.getUsageType() == UsageTypes.ISO){ //Template/ISO ID - VMTemplateVO tmpl = _entityMgr.findById(VMTemplateVO.class, usageRecord.getUsageId().toString()); + VMTemplateVO tmpl = _entityMgr.findByIdIncludingRemoved(VMTemplateVO.class, usageRecord.getUsageId().toString()); if (tmpl != null) { usageRecResponse.setUsageId(tmpl.getUuid()); } @@ -3407,7 +3407,7 @@ public class ApiResponseHelper implements ResponseGenerator { } else if(usageRecord.getUsageType() == UsageTypes.SNAPSHOT){ //Snapshot ID - SnapshotVO snap = _entityMgr.findById(SnapshotVO.class, usageRecord.getUsageId().toString()); + SnapshotVO snap = _entityMgr.findByIdIncludingRemoved(SnapshotVO.class, usageRecord.getUsageId().toString()); if (snap != null) { usageRecResponse.setUsageId(snap.getUuid()); } @@ -3416,39 +3416,39 @@ public class ApiResponseHelper implements ResponseGenerator { } else if(usageRecord.getUsageType() == UsageTypes.LOAD_BALANCER_POLICY){ //Load Balancer Policy ID - LoadBalancerVO lb = _entityMgr.findById(LoadBalancerVO.class, usageRecord.getUsageId().toString()); + LoadBalancerVO lb = _entityMgr.findByIdIncludingRemoved(LoadBalancerVO.class, usageRecord.getUsageId().toString()); if(lb != null){ usageRecResponse.setUsageId(lb.getUuid()); } } else if(usageRecord.getUsageType() == UsageTypes.PORT_FORWARDING_RULE){ //Port Forwarding Rule ID - PortForwardingRuleVO pf = _entityMgr.findById(PortForwardingRuleVO.class, usageRecord.getUsageId().toString()); + PortForwardingRuleVO pf = _entityMgr.findByIdIncludingRemoved(PortForwardingRuleVO.class, usageRecord.getUsageId().toString()); if(pf != null){ usageRecResponse.setUsageId(pf.getUuid()); } } else if(usageRecord.getUsageType() == UsageTypes.NETWORK_OFFERING){ //Network Offering Id - NetworkOfferingVO netOff = _entityMgr.findById(NetworkOfferingVO.class, usageRecord.getOfferingId().toString()); + NetworkOfferingVO netOff = _entityMgr.findByIdIncludingRemoved(NetworkOfferingVO.class, usageRecord.getOfferingId().toString()); usageRecResponse.setOfferingId(netOff.getUuid()); //is Default usageRecResponse.setDefault((usageRecord.getUsageId() == 1)? true:false); } else if(usageRecord.getUsageType() == UsageTypes.VPN_USERS){ //VPN User ID - VpnUserVO vpnUser = _entityMgr.findById(VpnUserVO.class, usageRecord.getUsageId().toString()); + VpnUserVO vpnUser = _entityMgr.findByIdIncludingRemoved(VpnUserVO.class, usageRecord.getUsageId().toString()); if(vpnUser != null){ usageRecResponse.setUsageId(vpnUser.getUuid()); } } else if(usageRecord.getUsageType() == UsageTypes.SECURITY_GROUP){ //Security Group Id - SecurityGroupVO sg = _entityMgr.findById(SecurityGroupVO.class, usageRecord.getUsageId().toString()); + SecurityGroupVO sg = _entityMgr.findByIdIncludingRemoved(SecurityGroupVO.class, usageRecord.getUsageId().toString()); if (sg != null) { usageRecResponse.setUsageId(sg.getUuid()); } } else if(usageRecord.getUsageType() == UsageTypes.VM_SNAPSHOT){ - VMInstanceVO vm = _entityMgr.findById(VMInstanceVO.class, usageRecord.getVmInstanceId().toString()); + VMInstanceVO vm = _entityMgr.findByIdIncludingRemoved(VMInstanceVO.class, usageRecord.getVmInstanceId().toString()); if (vm != null) { usageRecResponse.setVmName(vm.getInstanceName()); usageRecResponse.setUsageId(vm.getUuid()); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e8047e11/utils/src/com/cloud/utils/db/EntityManager.java ---------------------------------------------------------------------- diff --git a/utils/src/com/cloud/utils/db/EntityManager.java b/utils/src/com/cloud/utils/db/EntityManager.java index d613d7d..6dbfdf2 100644 --- a/utils/src/com/cloud/utils/db/EntityManager.java +++ b/utils/src/com/cloud/utils/db/EntityManager.java @@ -69,6 +69,8 @@ public interface EntityManager { */ public <T> List<? extends T> list(Class<T> entityType); + public <T, K extends Serializable> T findByIdIncludingRemoved(Class<T> entityType, K id); + public <T, K extends Serializable> void remove(Class<T> entityType, K id); }