mirror of https://github.com/apache/cloudstack.git
CLOUDSTACK-1218: Use the first IP in the first vlan range for VR in shared network
This commit is contained in:
parent
0bf5f5edec
commit
98291d043d
|
|
@ -257,4 +257,6 @@ public interface NetworkModel {
|
|||
void checkIp6Parameters(String startIPv6, String endIPv6, String ip6Gateway, String ip6Cidr) throws InvalidParameterValueException;
|
||||
|
||||
void checkRequestedIpAddresses(long networkId, String ip4, String ip6) throws InvalidParameterValueException;
|
||||
|
||||
String getStartIpv6Address(long id);
|
||||
}
|
||||
|
|
@ -1972,4 +1972,21 @@ public class NetworkModelImpl extends ManagerBase implements NetworkModel {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getStartIpv6Address(long networkId) {
|
||||
List<VlanVO> vlans = _vlanDao.listVlansByNetworkId(networkId);
|
||||
if (vlans == null) {
|
||||
return null;
|
||||
}
|
||||
String startIpv6 = null;
|
||||
// Get the start ip of first create vlan(not the lowest, because if you add a lower vlan, lowest vlan would change)
|
||||
for (Vlan vlan : vlans) {
|
||||
if (vlan.getIp6Range() != null) {
|
||||
startIpv6 = vlan.getIp6Range().split("-")[0];
|
||||
break;
|
||||
}
|
||||
}
|
||||
return startIpv6;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -162,6 +162,7 @@ import com.cloud.network.dao.Site2SiteCustomerGatewayDao;
|
|||
import com.cloud.network.dao.Site2SiteVpnConnectionDao;
|
||||
import com.cloud.network.dao.Site2SiteVpnConnectionVO;
|
||||
import com.cloud.network.dao.Site2SiteVpnGatewayDao;
|
||||
import com.cloud.network.dao.UserIpv6AddressDao;
|
||||
import com.cloud.network.dao.VirtualRouterProviderDao;
|
||||
import com.cloud.network.dao.VpnUserDao;
|
||||
import com.cloud.network.lb.LoadBalancingRule;
|
||||
|
|
@ -340,6 +341,8 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
|
|||
Site2SiteVpnConnectionDao _s2sVpnConnectionDao;
|
||||
@Inject
|
||||
Site2SiteVpnManager _s2sVpnMgr;
|
||||
@Inject
|
||||
UserIpv6AddressDao _ipv6Dao;
|
||||
|
||||
|
||||
int _routerRamSize;
|
||||
|
|
@ -1696,18 +1699,30 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
|
|||
boolean hasGuestNetwork = false;
|
||||
if (guestNetwork != null) {
|
||||
s_logger.debug("Adding nic for Virtual Router in Guest network " + guestNetwork);
|
||||
String defaultNetworkStartIp = null;
|
||||
if (guestNetwork.getCidr() != null && !setupPublicNetwork) {
|
||||
String startIp = _networkModel.getStartIpAddress(guestNetwork.getId());
|
||||
if (startIp != null && _ipAddressDao.findByIpAndSourceNetworkId(guestNetwork.getId(), startIp).getAllocatedTime() == null) {
|
||||
defaultNetworkStartIp = startIp;
|
||||
} else if (s_logger.isDebugEnabled()){
|
||||
s_logger.debug("First ip " + startIp + " in network id=" + guestNetwork.getId() +
|
||||
" is already allocated, can't use it for domain router; will get random ip address from the range");
|
||||
}
|
||||
String defaultNetworkStartIp = null, defaultNetworkStartIpv6 = null;
|
||||
if (!setupPublicNetwork) {
|
||||
if (guestNetwork.getCidr() != null) {
|
||||
String startIp = _networkModel.getStartIpAddress(guestNetwork.getId());
|
||||
if (startIp != null && _ipAddressDao.findByIpAndSourceNetworkId(guestNetwork.getId(), startIp).getAllocatedTime() == null) {
|
||||
defaultNetworkStartIp = startIp;
|
||||
} else if (s_logger.isDebugEnabled()){
|
||||
s_logger.debug("First ip " + startIp + " in network id=" + guestNetwork.getId() +
|
||||
" is already allocated, can't use it for domain router; will get random ip address from the range");
|
||||
}
|
||||
}
|
||||
|
||||
if (guestNetwork.getIp6Cidr() != null) {
|
||||
String startIpv6 = _networkModel.getStartIpv6Address(guestNetwork.getId());
|
||||
if (startIpv6 != null && _ipv6Dao.findByNetworkIdAndIp(guestNetwork.getId(), startIpv6) == null) {
|
||||
defaultNetworkStartIpv6 = startIpv6;
|
||||
} else if (s_logger.isDebugEnabled()){
|
||||
s_logger.debug("First ipv6 " + startIpv6 + " in network id=" + guestNetwork.getId() +
|
||||
" is already allocated, can't use it for domain router; will get random ipv6 address from the range");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
NicProfile gatewayNic = new NicProfile(defaultNetworkStartIp, null);
|
||||
NicProfile gatewayNic = new NicProfile(defaultNetworkStartIp, defaultNetworkStartIpv6);
|
||||
if (setupPublicNetwork) {
|
||||
if (isRedundant) {
|
||||
gatewayNic.setIp4Address(_networkMgr.acquireGuestIpAddress(guestNetwork, null));
|
||||
|
|
|
|||
|
|
@ -835,4 +835,10 @@ public class MockNetworkModelImpl extends ManagerBase implements NetworkModel {
|
|||
throws InvalidParameterValueException {
|
||||
// TODO Auto-generated method stub
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getStartIpv6Address(long id) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -848,4 +848,10 @@ public class MockNetworkModelImpl extends ManagerBase implements NetworkModel {
|
|||
// TODO Auto-generated method stub
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getStartIpv6Address(long id) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue