@@ -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