Skip to content

Commit a9a1737

Browse files
authored
vpc: set traffic type of private gateway IP to Public to fix ke… (apache#3851)
1 parent bfdb914 commit a9a1737

File tree

4 files changed

+32
-5
lines changed

4 files changed

+32
-5
lines changed

engine/schema/src/main/java/com/cloud/network/vpc/dao/VpcGatewayDao.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,6 @@ public interface VpcGatewayDao extends GenericDao<VpcGatewayVO, Long> {
3232
List<VpcGatewayVO> listByAclIdAndType(long aclId, VpcGateway.Type type);
3333

3434
List<VpcGatewayVO> listByVpcId(long vpcId);
35+
36+
VpcGatewayVO getVpcGatewayByNetworkId(long networkId);
3537
}

engine/schema/src/main/java/com/cloud/network/vpc/dao/VpcGatewayDaoImpl.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,4 +89,11 @@ public List<VpcGatewayVO> listByVpcId(long vpcId) {
8989
sc.setParameters("vpcId", vpcId);
9090
return listBy(sc);
9191
}
92+
93+
@Override
94+
public VpcGatewayVO getVpcGatewayByNetworkId(long networkId) {
95+
SearchCriteria<VpcGatewayVO> sc = AllFieldsSearch.create();
96+
sc.setParameters("networkid", networkId);
97+
return findOneBy(sc);
98+
}
9299
}

server/src/main/java/com/cloud/network/NetworkModelImpl.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,9 @@
9494
import com.cloud.network.rules.FirewallRule.Purpose;
9595
import com.cloud.network.rules.FirewallRuleVO;
9696
import com.cloud.network.rules.dao.PortForwardingRulesDao;
97+
import com.cloud.network.vpc.VpcGatewayVO;
9798
import com.cloud.network.vpc.dao.PrivateIpDao;
99+
import com.cloud.network.vpc.dao.VpcGatewayDao;
98100
import com.cloud.offering.NetworkOffering;
99101
import com.cloud.offering.NetworkOffering.Detail;
100102
import com.cloud.offerings.NetworkOfferingServiceMapVO;
@@ -158,6 +160,8 @@ public class NetworkModelImpl extends ManagerBase implements NetworkModel, Confi
158160
NicDao _nicDao = null;
159161
@Inject
160162
PodVlanMapDao _podVlanMapDao;
163+
@Inject
164+
VpcGatewayDao _vpcGatewayDao;
161165

162166
private List<NetworkElement> networkElements;
163167

@@ -1780,8 +1784,8 @@ public List<? extends PhysicalNetwork> getPhysicalNtwksSupportingTrafficType(lon
17801784

17811785
@Override
17821786
public boolean isPrivateGateway(long ntwkId) {
1783-
Network network = getNetwork(ntwkId);
1784-
if (network.getTrafficType() != TrafficType.Guest || network.getNetworkOfferingId() != s_privateOfferingId.longValue()) {
1787+
final VpcGatewayVO gateway = _vpcGatewayDao.getVpcGatewayByNetworkId(ntwkId);
1788+
if (gateway == null) {
17851789
return false;
17861790
}
17871791
return true;

server/src/main/java/com/cloud/network/router/CommandSetupHelper.java

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,9 @@
104104
import com.cloud.network.vpc.StaticRouteProfile;
105105
import com.cloud.network.vpc.Vpc;
106106
import com.cloud.network.vpc.VpcGateway;
107+
import com.cloud.network.vpc.VpcGatewayVO;
107108
import com.cloud.network.vpc.dao.VpcDao;
109+
import com.cloud.network.vpc.dao.VpcGatewayDao;
108110
import com.cloud.offering.NetworkOffering;
109111
import com.cloud.offerings.NetworkOfferingVO;
110112
import com.cloud.offerings.dao.NetworkOfferingDao;
@@ -170,6 +172,8 @@ public class CommandSetupHelper {
170172
@Inject
171173
private VpcDao _vpcDao;
172174
@Inject
175+
private VpcGatewayDao _vpcGatewayDao;
176+
@Inject
173177
private VlanDao _vlanDao;
174178
@Inject
175179
private IPAddressDao _ipAddressDao;
@@ -707,7 +711,7 @@ public int compare(final PublicIpAddress o1, final PublicIpAddress o2) {
707711
final IpAddressTO ip = new IpAddressTO(ipAddr.getAccountId(), ipAddr.getAddress().addr(), add, firstIP, sourceNat, BroadcastDomainType.fromString(ipAddr.getVlanTag()).toString(), ipAddr.getGateway(),
708712
ipAddr.getNetmask(), macAddress, networkRate, ipAddr.isOneToOneNat());
709713

710-
ip.setTrafficType(network.getTrafficType());
714+
ip.setTrafficType(getNetworkTrafficType(network));
711715
ip.setNetworkName(_networkModel.getNetworkTag(router.getHypervisorType(), network));
712716
ipsToSend[i++] = ip;
713717
if (ipAddr.isSourceNat()) {
@@ -823,7 +827,7 @@ public int compare(final PublicIpAddress o1, final PublicIpAddress o2) {
823827
final IpAddressTO ip = new IpAddressTO(ipAddr.getAccountId(), ipAddr.getAddress().addr(), add, firstIP, sourceNat, vlanId, vlanGateway, vlanNetmask,
824828
vifMacAddress, networkRate, ipAddr.isOneToOneNat());
825829

826-
ip.setTrafficType(network.getTrafficType());
830+
ip.setTrafficType(getNetworkTrafficType(network));
827831
ip.setNetworkName(_networkModel.getNetworkTag(router.getHypervisorType(), network));
828832
ipsToSend[i++] = ip;
829833
/*
@@ -948,7 +952,7 @@ public void createVpcAssociatePrivateIPCommands(final VirtualRouter router, fina
948952
final IpAddressTO ip = new IpAddressTO(Account.ACCOUNT_ID_SYSTEM, ipAddr.getIpAddress(), add, false, ipAddr.getSourceNat(), ipAddr.getBroadcastUri(),
949953
ipAddr.getGateway(), ipAddr.getNetmask(), ipAddr.getMacAddress(), null, false);
950954

951-
ip.setTrafficType(network.getTrafficType());
955+
ip.setTrafficType(getNetworkTrafficType(network));
952956
ip.setNetworkName(_networkModel.getNetworkTag(router.getHypervisorType(), network));
953957
ipsToSend[i++] = ip;
954958

@@ -1101,4 +1105,14 @@ protected String getGuestDhcpRange(final NicProfile guestNic, final Network gues
11011105
}
11021106
return dhcpRange;
11031107
}
1108+
1109+
private TrafficType getNetworkTrafficType(Network network) {
1110+
final VpcGatewayVO gateway = _vpcGatewayDao.getVpcGatewayByNetworkId(network.getId());
1111+
if (gateway != null) {
1112+
s_logger.debug("network " + network.getId() + " (name: " + network.getName() + " ) is a vpc private gateway, set traffic type to Public");
1113+
return TrafficType.Public;
1114+
} else {
1115+
return network.getTrafficType();
1116+
}
1117+
}
11041118
}

0 commit comments

Comments
 (0)