From 2c24b7446e0c5eec11c50ded2e927a41692b3a6d Mon Sep 17 00:00:00 2001 From: Alena Prokharchyk Date: Tue, 24 Jul 2012 16:06:47 -0700 Subject: [PATCH] VPC: CS-15681 - execute VPC related methods only when router is a vpc router --- .../VpcVirtualNetworkApplianceService.java | 2 +- .../element/VpcVirtualRouterElement.java | 4 +-- ...VpcVirtualNetworkApplianceManagerImpl.java | 28 +++++++++++++------ 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/api/src/com/cloud/network/VpcVirtualNetworkApplianceService.java b/api/src/com/cloud/network/VpcVirtualNetworkApplianceService.java index 078d4053534..3123cc2432b 100644 --- a/api/src/com/cloud/network/VpcVirtualNetworkApplianceService.java +++ b/api/src/com/cloud/network/VpcVirtualNetworkApplianceService.java @@ -42,7 +42,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; } diff --git a/server/src/com/cloud/network/element/VpcVirtualRouterElement.java b/server/src/com/cloud/network/element/VpcVirtualRouterElement.java index dc966337d69..e6959b0f3ac 100644 --- a/server/src/com/cloud/network/element/VpcVirtualRouterElement.java +++ b/server/src/com/cloud/network/element/VpcVirtualRouterElement.java @@ -240,7 +240,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 { @@ -268,7 +268,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 { diff --git a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java index 7e37b93ba69..24f724c2ef1 100644 --- a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java @@ -74,7 +74,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.Site2SiteVpnGatewayVO; import com.cloud.network.VirtualRouterProvider; import com.cloud.network.VirtualRouterProvider.VirtualRouterProviderType; @@ -260,7 +259,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 +273,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 +541,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> nicsToChange = getNicsToChangeOnRouter(ipAddress, router); Map nicsToPlug = nicsToChange.first(); Map nicsToUnplug = nicsToChange.second(); @@ -859,12 +862,14 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian super.finalizeNetworkRulesForNetwork(cmds, router, provider, guestNetworkId); - if (_networkMgr.isProviderSupportServiceInNetwork(guestNetworkId, Service.NetworkACL, Provider.VPCVirtualRouter)) { - List 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 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); + } } } } @@ -971,6 +976,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 publicIps = getPublicIpsToApply(router, provider, guestNetworkId, IpAddress.State.Releasing); if (publicIps != null && !publicIps.isEmpty()) {