mirror of
https://github.com/apache/cloudstack.git
synced 2025-11-03 04:12:31 +01:00
VPC: finilize start for the VR - send ip assoc commands only after plug nic is done for all public nics
This commit is contained in:
parent
d35eb73c9b
commit
96c273ad55
@ -1179,7 +1179,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
||||
boolean isSourceNat = false;
|
||||
if (!sharedSourceNat) {
|
||||
if (getExistingSourceNat(owner.getId(), networkId, null) == null) {
|
||||
if (network.getGuestType() == GuestType.Isolated) {
|
||||
if (network.getGuestType() == GuestType.Isolated && network.getVpcId() == null) {
|
||||
isSourceNat = true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1954,7 +1954,7 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian
|
||||
protected void finalizeNetworkRulesForNetwork(Commands cmds, DomainRouterVO router, Provider provider, Long guestNetworkId) {
|
||||
s_logger.debug("Resending ipAssoc, port forwarding, load balancing rules as a part of Virtual router start");
|
||||
|
||||
ArrayList<PublicIp> publicIps = getPublicIpsToApply(router, provider, guestNetworkId);
|
||||
ArrayList<? extends PublicIpAddress> publicIps = getPublicIpsToApply(router, provider, guestNetworkId);
|
||||
|
||||
if (publicIps != null && !publicIps.isEmpty()) {
|
||||
List<RemoteAccessVpn> vpns = new ArrayList<RemoteAccessVpn>();
|
||||
@ -1964,7 +1964,7 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian
|
||||
List<FirewallRule> firewallRules = new ArrayList<FirewallRule>();
|
||||
|
||||
//Get information about all the rules (StaticNats and StaticNatRules; PFVPN to reapply on domR start)
|
||||
for (PublicIp ip : publicIps) {
|
||||
for (PublicIpAddress ip : publicIps) {
|
||||
if (_networkMgr.isProviderSupportServiceInNetwork(guestNetworkId, Service.PortForwarding, provider)) {
|
||||
pfRules.addAll(_pfRulesDao.listForApplication(ip.getId()));
|
||||
}
|
||||
@ -2046,10 +2046,10 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian
|
||||
}
|
||||
}
|
||||
|
||||
protected ArrayList<PublicIp> finalizeIpAssocForNetwork(Commands cmds, DomainRouterVO router, Provider provider,
|
||||
protected void finalizeIpAssocForNetwork(Commands cmds, VirtualRouter router, Provider provider,
|
||||
Long guestNetworkId) {
|
||||
|
||||
ArrayList<PublicIp> publicIps = getPublicIpsToApply(router, provider, guestNetworkId);
|
||||
ArrayList<? extends PublicIpAddress> publicIps = getPublicIpsToApply(router, provider, guestNetworkId);
|
||||
|
||||
if (publicIps != null && !publicIps.isEmpty()) {
|
||||
s_logger.debug("Found " + publicIps.size() + " ip(s) to apply as a part of domR " + router + " start.");
|
||||
@ -2058,10 +2058,9 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian
|
||||
createAssociateIPCommands(router, publicIps, cmds, 0);
|
||||
}
|
||||
}
|
||||
return publicIps;
|
||||
}
|
||||
|
||||
protected ArrayList<PublicIp> getPublicIpsToApply(DomainRouterVO router, Provider provider, Long guestNetworkId) {
|
||||
protected ArrayList<? extends PublicIpAddress> getPublicIpsToApply(VirtualRouter router, Provider provider, Long guestNetworkId) {
|
||||
long ownerId = router.getAccountId();
|
||||
final List<IPAddressVO> userIps = _networkMgr.listPublicIpsAssignedToGuestNtwk(ownerId, guestNetworkId, null);
|
||||
List<PublicIp> allPublicIps = new ArrayList<PublicIp>();
|
||||
|
||||
@ -712,7 +712,6 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
|
||||
return super.finalizeCommandsOnStart(cmds, profile);
|
||||
}
|
||||
|
||||
|
||||
//1) FORM SSH CHECK COMMAND
|
||||
NicProfile controlNic = getControlNic(profile);
|
||||
if (controlNic == null) {
|
||||
@ -737,26 +736,25 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
|
||||
}
|
||||
}
|
||||
|
||||
List<PublicIp> publicIps = new ArrayList<PublicIp>(1);
|
||||
try {
|
||||
//add VPC router to public networks
|
||||
List<PublicIp> publicIps = new ArrayList<PublicIp>(1);
|
||||
for (Nic publicNic : publicNics.keySet()) {
|
||||
Network publicNtwk = publicNics.get(publicNic);
|
||||
IPAddressVO userIp = _ipAddressDao.findByIpAndSourceNetworkId(publicNtwk.getId(),
|
||||
publicNic.getIp4Address());
|
||||
PublicIp publicIp = new PublicIp(userIp, _vlanDao.findById(userIp.getVlanId()),
|
||||
NetUtils.createSequenceBasedMacAddress(userIp.getMacAddress()));
|
||||
|
||||
|
||||
if (publicIp.isSourceNat()) {
|
||||
|
||||
if (userIp.isSourceNat()) {
|
||||
PublicIp publicIp = new PublicIp(userIp, _vlanDao.findById(userIp.getVlanId()),
|
||||
NetUtils.createSequenceBasedMacAddress(userIp.getMacAddress()));
|
||||
publicIps.add(publicIp);
|
||||
}
|
||||
|
||||
PlugNicCommand plugNicCmd = new PlugNicCommand(_itMgr.toVmTO(profile), getNicTO(router, publicNic.getNetworkId()));
|
||||
cmds.addCommand(plugNicCmd);
|
||||
cmds.addCommand(plugNicCmd);
|
||||
}
|
||||
|
||||
// create vpc assoc commands
|
||||
// create ip assoc for source nat
|
||||
if (!publicIps.isEmpty()) {
|
||||
createVpcAssociateIPCommands(router, publicIps, cmds);
|
||||
}
|
||||
@ -787,7 +785,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
|
||||
return false;
|
||||
}
|
||||
|
||||
//3) REAPPLY FIREWALL RULES
|
||||
//3) REPROGRAM GUEST NETWORK
|
||||
boolean reprogramGuestNtwks = true;
|
||||
if (profile.getParameter(Param.ReProgramGuestNetworks) != null
|
||||
&& (Boolean) profile.getParameter(Param.ReProgramGuestNetworks) == false) {
|
||||
@ -806,6 +804,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
|
||||
List<Long> routerGuestNtwkIds = _routerDao.getRouterNetworks(router.getId());
|
||||
for (Long guestNetworkId : routerGuestNtwkIds) {
|
||||
if (reprogramGuestNtwks) {
|
||||
finalizeIpAssocForNetwork(cmds, router, provider, guestNetworkId);
|
||||
finalizeNetworkRulesForNetwork(cmds, router, provider, guestNetworkId);
|
||||
}
|
||||
|
||||
@ -922,4 +921,19 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void finalizeIpAssocForNetwork(Commands cmds, VirtualRouter router, Provider provider,
|
||||
Long guestNetworkId) {
|
||||
|
||||
ArrayList<? extends PublicIpAddress> publicIps = getPublicIpsToApply(router, provider, guestNetworkId);
|
||||
|
||||
if (publicIps != null && !publicIps.isEmpty()) {
|
||||
s_logger.debug("Found " + publicIps.size() + " ip(s) to apply as a part of domR " + router + " start.");
|
||||
// Re-apply public ip addresses - should come before PF/LB/VPN
|
||||
if (_networkMgr.isProviderSupportServiceInNetwork(guestNetworkId, Service.Firewall, provider)) {
|
||||
createVpcAssociateIPCommands(router, publicIps, cmds);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -177,6 +177,7 @@ public class RulesManagerImpl implements RulesManager, RulesService, Manager {
|
||||
s_logger.debug("The ip is not associated with the network id="+ networkId + " so assigning");
|
||||
try {
|
||||
_networkMgr.associateIPToGuestNetwork(ipAddrId, networkId);
|
||||
ipAddress = _ipAddressDao.findById(ipAddrId);
|
||||
} catch (Exception ex) {
|
||||
s_logger.warn("Failed to associate ip id=" + ipAddrId + " to network id=" + networkId + " as " +
|
||||
"a part of port forwarding rule creation");
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user