diff --git a/api/src/main/java/org/apache/cloudstack/api/response/UsageRecordResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/UsageRecordResponse.java index 92db8f88f81..8710790a507 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/UsageRecordResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/UsageRecordResponse.java @@ -144,6 +144,10 @@ public class UsageRecordResponse extends BaseResponseWithTagInformation implemen @Param(description = "True if the resource is default") private Boolean isDefault; + @SerializedName("vpcid") + @Param(description = "id of the vpc") + private String vpcId; + public UsageRecordResponse() { tags = new LinkedHashSet(); } @@ -276,4 +280,8 @@ public class UsageRecordResponse extends BaseResponseWithTagInformation implemen public String getDomainName(){ return domainName; } + + public void setVpcId(String vpcId) { + this.vpcId = vpcId; + } } diff --git a/server/src/main/java/com/cloud/api/ApiDBUtils.java b/server/src/main/java/com/cloud/api/ApiDBUtils.java index a2433ab634d..87b9f36fd23 100644 --- a/server/src/main/java/com/cloud/api/ApiDBUtils.java +++ b/server/src/main/java/com/cloud/api/ApiDBUtils.java @@ -1571,6 +1571,10 @@ public class ApiDBUtils { return s_vpcDao.findById(vpcId); } + public static VpcVO findVpcByIdIncludingRemoved(long vpcId) { + return s_vpcDao.findByIdIncludingRemoved(vpcId); + } + public static SnapshotPolicy findSnapshotPolicyById(long policyId) { return s_snapshotPolicyDao.findById(policyId); } diff --git a/server/src/main/java/com/cloud/api/ApiResponseHelper.java b/server/src/main/java/com/cloud/api/ApiResponseHelper.java index e07a94c44b4..46a3afdd415 100644 --- a/server/src/main/java/com/cloud/api/ApiResponseHelper.java +++ b/server/src/main/java/com/cloud/api/ApiResponseHelper.java @@ -3471,8 +3471,15 @@ public class ApiResponseHelper implements ResponseGenerator { network = _entityMgr.findByIdIncludingRemoved(NetworkVO.class, usageRecord.getNetworkId().toString()); if (network != null) { resourceType = ResourceObjectType.Network; - resourceId = network.getId(); - usageRecResponse.setNetworkId(network.getUuid()); + if (network.getTrafficType() == TrafficType.Public) { + VirtualRouter router = ApiDBUtils.findDomainRouterById(usageRecord.getUsageId()); + Vpc vpc = ApiDBUtils.findVpcByIdIncludingRemoved(router.getVpcId()); + usageRecResponse.setVpcId(vpc.getUuid()); + resourceId = vpc.getId(); + } else { + usageRecResponse.setNetworkId(network.getUuid()); + resourceId = network.getId(); + } usageRecResponse.setResourceName(network.getName()); } }