diff --git a/api/src/com/cloud/network/VpcVirtualNetworkApplianceService.java b/api/src/com/cloud/network/VpcVirtualNetworkApplianceService.java index 81df02f0af9..b597463ba83 100644 --- a/api/src/com/cloud/network/VpcVirtualNetworkApplianceService.java +++ b/api/src/com/cloud/network/VpcVirtualNetworkApplianceService.java @@ -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; } diff --git a/server/src/com/cloud/network/element/VpcVirtualRouterElement.java b/server/src/com/cloud/network/element/VpcVirtualRouterElement.java index 78d1ff472be..0e713521a3d 100644 --- a/server/src/com/cloud/network/element/VpcVirtualRouterElement.java +++ b/server/src/com/cloud/network/element/VpcVirtualRouterElement.java @@ -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 { diff --git a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java index b9d972b5939..2560aecc3c0 100644 --- a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java @@ -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> nicsToChange = getNicsToChangeOnRouter(ipAddress, router); Map nicsToPlug = nicsToChange.first(); Map 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 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); + } } } } @@ -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 publicIps = getPublicIpsToApply(router, provider, guestNetworkId, IpAddress.State.Releasing); if (publicIps != null && !publicIps.isEmpty()) {