Skip to content

Commit 4dc321d

Browse files
author
Daan Hoogland
committed
check if a source NAT IP address is needed before assigning one
1 parent ef1aaa0 commit 4dc321d

File tree

1 file changed

+11
-50
lines changed

1 file changed

+11
-50
lines changed

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

Lines changed: 11 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -205,20 +205,12 @@ public class IpAddressManagerImpl extends ManagerBase implements IpAddressManage
205205
@Inject
206206
AccountDao _accountDao;
207207
@Inject
208-
DomainDao _domainDao;
209-
@Inject
210208
UserDao _userDao;
211209
@Inject
212210
ConfigurationDao _configDao;
213211
@Inject
214-
UserVmDao _userVmDao;
215-
@Inject
216-
AlertManager _alertMgr;
217-
@Inject
218212
AccountManager _accountMgr;
219213
@Inject
220-
ConfigurationManager _configMgr;
221-
@Inject
222214
AccountVlanMapDao _accountVlanMapDao;
223215
@Inject
224216
DomainVlanMapDao _domainVlanMapDao;
@@ -229,8 +221,6 @@ public class IpAddressManagerImpl extends ManagerBase implements IpAddressManage
229221
@Inject
230222
NetworkDetailsDao _networkDetailsDao;
231223
@Inject
232-
NicDao _nicDao;
233-
@Inject
234224
RulesManager _rulesMgr;
235225
@Inject
236226
LoadBalancingRulesManager _lbMgr;
@@ -239,22 +229,10 @@ public class IpAddressManagerImpl extends ManagerBase implements IpAddressManage
239229
@Inject
240230
PodVlanMapDao _podVlanMapDao;
241231
@Inject
242-
NetworkOfferingDetailsDao _ntwkOffDetailsDao;
243-
@Inject
244-
AccountGuestVlanMapDao _accountGuestVlanMapDao;
245-
@Inject
246-
DataCenterVnetDao _datacenterVnetDao;
247-
@Inject
248-
NetworkAccountDao _networkAccountDao;
249-
@Inject
250232
protected NicIpAliasDao _nicIpAliasDao;
251233
@Inject
252234
protected IPAddressDao _publicIpAddressDao;
253235
@Inject
254-
NetworkDomainDao _networkDomainDao;
255-
@Inject
256-
VMInstanceDao _vmDao;
257-
@Inject
258236
FirewallManager _firewallMgr;
259237
@Inject
260238
FirewallRulesDao _firewallDao;
@@ -268,36 +246,10 @@ public class IpAddressManagerImpl extends ManagerBase implements IpAddressManage
268246
@Inject
269247
PhysicalNetworkDao _physicalNetworkDao;
270248
@Inject
271-
PhysicalNetworkServiceProviderDao _pNSPDao;
272-
@Inject
273-
PortForwardingRulesDao _portForwardingRulesDao;
274-
@Inject
275-
LoadBalancerDao _lbDao;
276-
@Inject
277-
PhysicalNetworkTrafficTypeDao _pNTrafficTypeDao;
278-
@Inject
279-
AgentManager _agentMgr;
280-
@Inject
281-
HostDao _hostDao;
282-
@Inject
283-
NetworkServiceMapDao _ntwkSrvcDao;
284-
@Inject
285-
StorageNetworkManager _stnwMgr;
286-
@Inject
287249
VpcManager _vpcMgr;
288250
@Inject
289-
PrivateIpDao _privateIpDao;
290-
@Inject
291-
NetworkACLManager _networkACLMgr;
292-
@Inject
293-
UsageEventDao _usageEventDao;
294-
@Inject
295251
NetworkModel _networkModel;
296252
@Inject
297-
NicSecondaryIpDao _nicSecondaryIpDao;
298-
@Inject
299-
UserIpv6AddressDao _ipv6Dao;
300-
@Inject
301253
Ipv6AddressManager _ipv6Mgr;
302254
@Inject
303255
PortableIpDao _portableIpDao;
@@ -1102,7 +1054,7 @@ public PublicIp assignSourceNatIpAddressToGuestNetwork(Account owner, Network gu
11021054
IPAddressVO sourceNatIp = getExistingSourceNatInNetwork(owner.getId(), guestNetwork.getId());
11031055

11041056
PublicIp ipToReturn = null;
1105-
if (sourceNatIp != null) {
1057+
if (sourceNatIp != null || isRouted(guestNetwork)) {
11061058
ipToReturn = PublicIp.createFromAddrAndVlan(sourceNatIp, _vlanDao.findById(sourceNatIp.getVlanId()));
11071059
} else {
11081060
ipToReturn = assignDedicateIpAddress(owner, guestNetwork.getId(), null, dcId, true);
@@ -1111,6 +1063,15 @@ public PublicIp assignSourceNatIpAddressToGuestNetwork(Account owner, Network gu
11111063
return ipToReturn;
11121064
}
11131065

1066+
private boolean isRouted(Network guestNetwork) {
1067+
VpcOffering vpcOffer = null;
1068+
NetworkOffering netOffer = _networkOfferingDao.findById(guestNetwork.getNetworkOfferingId());
1069+
if (netOffer.isForVpc()) {
1070+
vpcOffer = vpcOfferingDao.findById(guestNetwork.getVpcId());
1071+
}
1072+
return netOffer.getRoutingMode() != null || (vpcOffer != null && vpcOffer.getRoutingMode() != null);
1073+
}
1074+
11141075
@DB
11151076
@Override
11161077
public PublicIp assignDedicateIpAddress(Account owner, final Long guestNtwkId, final Long vpcId, final long dcId, final boolean isSourceNat)
@@ -1633,7 +1594,7 @@ private static void validateNetworkAndIpOwnership(Account owner, IPAddressVO ipT
16331594
*/
16341595
protected boolean isSourceNatAvailableForNetwork(Account owner, IPAddressVO ipToAssoc, Network network) {
16351596
NetworkOffering offering = _networkOfferingDao.findById(network.getNetworkOfferingId());
1636-
boolean sharedSourceNat = offering.isSharedSourceNat();
1597+
boolean sharedSourceNat = offering.isSharedSourceNat() || offering.getRoutingMode() != null;
16371598
boolean isSourceNat = false;
16381599
if (!sharedSourceNat) {
16391600
if (getExistingSourceNatInNetwork(owner.getId(), network.getId()) == null) {

0 commit comments

Comments
 (0)