VPC: CS-15681 - execute VPC related methods only when router is a vpc router

Conflicts:

	server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
This commit is contained in:
Alena Prokharchyk 2012-07-24 16:06:47 -07:00
parent 12ee8810f6
commit 119e4e7443
3 changed files with 22 additions and 13 deletions

View File

@ -43,7 +43,7 @@ public interface VpcVirtualNetworkApplianceService {
* @throws ConcurrentOperationException
* @throws ResourceUnavailableException
*/
boolean removeRouterFromGuestNetwork(VirtualRouter router, Network network, boolean isRedundant)
boolean removeVpcRouterFromGuestNetwork(VirtualRouter router, Network network, boolean isRedundant)
throws ConcurrentOperationException, ResourceUnavailableException;
}

View File

@ -239,7 +239,7 @@ public class VpcVirtualRouterElement extends VirtualRouterElement implements Vpc
continue;
}
//2) Call unplugNics in the network service
success = success && _vpcRouterMgr.removeRouterFromGuestNetwork(router, network, false);
success = success && _vpcRouterMgr.removeVpcRouterFromGuestNetwork(router, network, false);
if (!success) {
s_logger.warn("Failed to unplug nic in network " + network + " for virtual router " + router);
} else {
@ -267,7 +267,7 @@ public class VpcVirtualRouterElement extends VirtualRouterElement implements Vpc
continue;
}
//2) Call unplugNics in the network service
success = success && _vpcRouterMgr.removeRouterFromGuestNetwork(router, config, false);
success = success && _vpcRouterMgr.removeVpcRouterFromGuestNetwork(router, config, false);
if (!success) {
s_logger.warn("Failed to unplug nic in network " + config + " for virtual router " + router);
} else {

View File

@ -76,8 +76,6 @@ import com.cloud.network.PhysicalNetworkServiceProvider;
import com.cloud.network.PublicIpAddress;
import com.cloud.network.Site2SiteCustomerGatewayVO;
import com.cloud.network.Site2SiteVpnConnection;
import com.cloud.network.Site2SiteVpnConnectionVO;
import com.cloud.network.Site2SiteVpnGateway;
import com.cloud.network.Site2SiteVpnGatewayVO;
import com.cloud.network.VirtualRouterProvider;
import com.cloud.network.VirtualRouterProvider.VirtualRouterProviderType;
@ -260,7 +258,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
} finally {
if (!result) {
s_logger.debug("Removing the router " + router + " from network " + network + " as a part of cleanup");
if (removeRouterFromGuestNetwork(router, network, isRedundant)) {
if (removeVpcRouterFromGuestNetwork(router, network, isRedundant)) {
s_logger.debug("Removed the router " + router + " from network " + network + " as a part of cleanup");
} else {
s_logger.warn("Failed to remove the router " + router + " from network " + network + " as a part of cleanup");
@ -274,7 +272,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
}
@Override
public boolean removeRouterFromGuestNetwork(VirtualRouter router, Network network, boolean isRedundant)
public boolean removeVpcRouterFromGuestNetwork(VirtualRouter router, Network network, boolean isRedundant)
throws ConcurrentOperationException, ResourceUnavailableException {
if (network.getTrafficType() != TrafficType.Guest) {
s_logger.warn("Network " + network + " is not of type " + TrafficType.Guest);
@ -542,6 +540,10 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
//only one router is supported in VPC now
VirtualRouter router = routers.get(0);
if (router.getVpcId() == null) {
return super.associatePublicIP(network, ipAddress, routers);
}
Pair<Map<String, PublicIpAddress>, Map<String, PublicIpAddress>> nicsToChange = getNicsToChangeOnRouter(ipAddress, router);
Map<String, PublicIpAddress> nicsToPlug = nicsToChange.first();
Map<String, PublicIpAddress> nicsToUnplug = nicsToChange.second();
@ -850,12 +852,14 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
super.finalizeNetworkRulesForNetwork(cmds, router, provider, guestNetworkId);
if (_networkMgr.isProviderSupportServiceInNetwork(guestNetworkId, Service.NetworkACL, Provider.VPCVirtualRouter)) {
List<? extends FirewallRule> networkACLs = _networkACLMgr.listNetworkACLs(guestNetworkId);
s_logger.debug("Found " + networkACLs.size() + " network ACLs to apply as a part of VPC VR " + router
+ " start for guest network id=" + guestNetworkId);
if (!networkACLs.isEmpty()) {
createNetworkACLsCommands(networkACLs, router, cmds, guestNetworkId);
if (router.getVpcId() == null) {
if (_networkMgr.isProviderSupportServiceInNetwork(guestNetworkId, Service.NetworkACL, Provider.VPCVirtualRouter)) {
List<? extends FirewallRule> networkACLs = _networkACLMgr.listNetworkACLs(guestNetworkId);
s_logger.debug("Found " + networkACLs.size() + " network ACLs to apply as a part of VPC VR " + router
+ " start for guest network id=" + guestNetworkId);
if (!networkACLs.isEmpty()) {
createNetworkACLsCommands(networkACLs, router, cmds, guestNetworkId);
}
}
}
}
@ -962,6 +966,11 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
protected void finalizeIpAssocForNetwork(Commands cmds, VirtualRouter router, Provider provider,
Long guestNetworkId) {
if (router.getVpcId() == null) {
super.finalizeIpAssocForNetwork(cmds, router, provider, guestNetworkId);
return;
}
ArrayList<? extends PublicIpAddress> publicIps = getPublicIpsToApply(router, provider, guestNetworkId, IpAddress.State.Releasing);
if (publicIps != null && !publicIps.isEmpty()) {