From 3e089166bb7e1e4df264796d21393b6d697107f2 Mon Sep 17 00:00:00 2001 From: alena Date: Thu, 23 Dec 2010 18:27:49 -0800 Subject: [PATCH] Fixed listPublicIpAddresses for Direct guest network to return networkId associated with corresponding vlan (if null is returned, UI IP tab gives an error on listPublicIp) Conflicts: server/src/com/cloud/api/ApiDBUtils.java server/src/com/cloud/api/ApiResponseHelper.java --- server/src/com/cloud/api/ApiDBUtils.java | 12 ++++++++++-- .../src/com/cloud/api/ApiResponseHelper.java | 19 ++++++++++++++++--- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/server/src/com/cloud/api/ApiDBUtils.java b/server/src/com/cloud/api/ApiDBUtils.java index 23129e80b4c..5682e8af0b9 100755 --- a/server/src/com/cloud/api/ApiDBUtils.java +++ b/server/src/com/cloud/api/ApiDBUtils.java @@ -32,10 +32,10 @@ import com.cloud.network.LoadBalancerVO; import com.cloud.network.Network; import com.cloud.network.Network.Capability; import com.cloud.network.Network.Service; -import com.cloud.network.Networks.TrafficType; import com.cloud.network.NetworkManager; import com.cloud.network.NetworkRuleConfigVO; import com.cloud.network.NetworkVO; +import com.cloud.network.Networks.TrafficType; import com.cloud.network.dao.IPAddressDao; import com.cloud.network.dao.LoadBalancerDao; import com.cloud.network.dao.NetworkDao; @@ -43,7 +43,6 @@ import com.cloud.network.dao.NetworkRuleConfigDao; import com.cloud.network.security.SecurityGroup; import com.cloud.network.security.SecurityGroupManager; import com.cloud.network.security.dao.SecurityGroupDao; -import com.cloud.offering.NetworkOffering; import com.cloud.offering.ServiceOffering; import com.cloud.offerings.NetworkOfferingVO; import com.cloud.offerings.dao.NetworkOfferingDao; @@ -538,5 +537,14 @@ public class ApiDBUtils { } return networks.get(0).getId(); } + + public static Long getVlanNetworkId(long vlanId) { + VlanVO vlan = _vlanDao.findById(vlanId); + if (vlan != null) { + return vlan.getNetworkId(); + } else { + return null; + } + } } diff --git a/server/src/com/cloud/api/ApiResponseHelper.java b/server/src/com/cloud/api/ApiResponseHelper.java index 1a6cfbbcc4d..7fd9cff27b9 100644 --- a/server/src/com/cloud/api/ApiResponseHelper.java +++ b/server/src/com/cloud/api/ApiResponseHelper.java @@ -616,14 +616,27 @@ public class ApiResponseHelper implements ResponseGenerator { ipResponse.setForVirtualNetwork(forVirtualNetworks); ipResponse.setStaticNat(ipAddress.isOneToOneNat()); - //Network id the ip is associated with ipResponse.setAssociatedNetworkId(ipAddress.getAssociatedNetworkId()); + //Network id the ip is associated withif associated networkId is null, try to get this information from vlan + Long associatedNetworkId = ipAddress.getAssociatedNetworkId(); + Long vlanNetworkId = ApiDBUtils.getVlanNetworkId(ipAddress.getVlanId()); + if (associatedNetworkId == null) { + associatedNetworkId = vlanNetworkId; + } + + ipResponse.setAssociatedNetworkId(associatedNetworkId); + //Network id the ip belongs to - long networkId = ApiDBUtils.getPublicNetworkIdByZone(zoneId); + Long networkId; + if (vlanNetworkId != null) { + networkId = vlanNetworkId; + } else { + networkId = ApiDBUtils.getPublicNetworkIdByZone(zoneId); + } + ipResponse.setNetworkId(networkId); - // show this info to admin only Account account = UserContext.current().getAccount(); if ((account == null) || account.getType() == Account.ACCOUNT_TYPE_ADMIN) {