diff --git a/api/src/main/java/com/cloud/network/element/VpcProvider.java b/api/src/main/java/com/cloud/network/element/VpcProvider.java index 14e86195a70..6debd1fbc2d 100644 --- a/api/src/main/java/com/cloud/network/element/VpcProvider.java +++ b/api/src/main/java/com/cloud/network/element/VpcProvider.java @@ -22,6 +22,7 @@ import com.cloud.deploy.DeployDestination; import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.InsufficientCapacityException; import com.cloud.exception.ResourceUnavailableException; +import com.cloud.network.IpAddress; import com.cloud.network.vpc.NetworkACLItem; import com.cloud.network.vpc.PrivateGateway; import com.cloud.network.vpc.StaticRouteProfile; @@ -52,4 +53,6 @@ public interface VpcProvider extends NetworkElement { boolean applyStaticRoutes(Vpc vpc, List routes) throws ResourceUnavailableException; boolean applyACLItemsToPrivateGw(PrivateGateway gateway, List rules) throws ResourceUnavailableException; + + boolean updateVpcSourceNatIp(Vpc vpc, IpAddress address); } diff --git a/client/pom.xml b/client/pom.xml index 666c0a4722d..a73aed7d032 100644 --- a/client/pom.xml +++ b/client/pom.xml @@ -296,11 +296,6 @@ cloud-plugin-network-tungsten ${project.version} - - org.apache.cloudstack - cloud-plugin-network-nsx - ${project.version} - org.apache.cloudstack cloud-plugin-network-elb @@ -1102,6 +1097,11 @@ cloud-plugin-network-cisco-vnmc ${project.version} + + org.apache.cloudstack + cloud-plugin-network-nsx + ${project.version} + org.apache.cloudstack cloud-plugin-api-vmware-sioc diff --git a/plugins/network-elements/juniper-contrail/src/main/java/org/apache/cloudstack/network/contrail/management/ContrailVpcElementImpl.java b/plugins/network-elements/juniper-contrail/src/main/java/org/apache/cloudstack/network/contrail/management/ContrailVpcElementImpl.java index 85125bf3af6..d5060443c9e 100644 --- a/plugins/network-elements/juniper-contrail/src/main/java/org/apache/cloudstack/network/contrail/management/ContrailVpcElementImpl.java +++ b/plugins/network-elements/juniper-contrail/src/main/java/org/apache/cloudstack/network/contrail/management/ContrailVpcElementImpl.java @@ -31,6 +31,7 @@ import com.cloud.deploy.DeployDestination; import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.InsufficientCapacityException; import com.cloud.exception.ResourceUnavailableException; +import com.cloud.network.IpAddress; import com.cloud.network.Network; import com.cloud.network.Network.Provider; import com.cloud.network.element.NetworkACLServiceProvider; @@ -196,4 +197,8 @@ public class ContrailVpcElementImpl extends ContrailElementImpl implements Netwo return true; } + @Override + public boolean updateVpcSourceNatIp(Vpc vpc, IpAddress address) { + return true; + } } diff --git a/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/service/NsxElement.java b/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/service/NsxElement.java index 1fb546ed122..d09049700e5 100644 --- a/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/service/NsxElement.java +++ b/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/service/NsxElement.java @@ -39,6 +39,7 @@ import com.cloud.exception.ResourceUnavailableException; import com.cloud.host.Host; import com.cloud.host.HostVO; import com.cloud.host.Status; +import com.cloud.network.IpAddress; import com.cloud.network.Network; import com.cloud.network.NetworkModel; import com.cloud.network.Networks; @@ -899,4 +900,9 @@ public class NsxElement extends AdapterBase implements DhcpServiceProvider, Dns cmdList.add(ListInternalLoadBalancerElementsCmd.class); return cmdList; } + + @Override + public boolean updateVpcSourceNatIp(Vpc vpc, IpAddress address) { + return nsxService.updateVpcSourceNatIp(vpc, address); + } } diff --git a/plugins/pom.xml b/plugins/pom.xml index 1083c36275f..bfe3060addf 100755 --- a/plugins/pom.xml +++ b/plugins/pom.xml @@ -113,7 +113,6 @@ network-elements/brocade-vcs network-elements/vxlan network-elements/tungsten - network-elements/nsx outofbandmanagement-drivers/ipmitool outofbandmanagement-drivers/nested-cloudstack @@ -231,6 +230,7 @@ backup/veeam hypervisors/vmware network-elements/cisco-vnmc + network-elements/nsx diff --git a/server/src/main/java/com/cloud/network/NetworkServiceImpl.java b/server/src/main/java/com/cloud/network/NetworkServiceImpl.java index ca7d336f0a4..6168de1ef63 100644 --- a/server/src/main/java/com/cloud/network/NetworkServiceImpl.java +++ b/server/src/main/java/com/cloud/network/NetworkServiceImpl.java @@ -4109,7 +4109,13 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService, C // Add the config drive provider addConfigDriveToPhysicalNetwork(pNetwork.getId()); - addNSXProviderToPhysicalNetwork(pNetwork.getId()); + + // Add NSX provider + try { + addNSXProviderToPhysicalNetwork(pNetwork.getId()); + } catch (Exception ex) { + logger.warn("Failed to add NSX provider to physical network due to:", ex.getMessage()); + } CallContext.current().putContextParameter(PhysicalNetwork.class, pNetwork.getUuid()); @@ -5510,7 +5516,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService, C DataCenterVO dvo = _dcDao.findById(pvo.getDataCenterId()); if (dvo.getNetworkType() == NetworkType.Advanced) { - Provider provider = Network.Provider.getProvider("Nsx"); + Provider provider = Network.Provider.getProvider(Provider.Nsx.getName()); if (provider == null) { return null; } diff --git a/server/src/main/java/com/cloud/network/element/VpcVirtualRouterElement.java b/server/src/main/java/com/cloud/network/element/VpcVirtualRouterElement.java index b8960629d80..0a1114b8307 100644 --- a/server/src/main/java/com/cloud/network/element/VpcVirtualRouterElement.java +++ b/server/src/main/java/com/cloud/network/element/VpcVirtualRouterElement.java @@ -716,4 +716,9 @@ public class VpcVirtualRouterElement extends VirtualRouterElement implements Vpc } return result; } + + @Override + public boolean updateVpcSourceNatIp(Vpc vpc, IpAddress address) { + return true; + } } diff --git a/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java b/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java index 755cf2bb05c..a7a4f67c6d5 100644 --- a/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java +++ b/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java @@ -42,7 +42,6 @@ import javax.inject.Inject; import javax.naming.ConfigurationException; import com.cloud.configuration.ConfigurationManager; -import com.cloud.network.nsx.NsxService; import org.apache.cloudstack.acl.ControlledEntity.ACLType; import org.apache.cloudstack.alert.AlertService; import org.apache.cloudstack.annotation.AnnotationService; @@ -265,9 +264,6 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis @Autowired @Qualifier("networkHelper") protected NetworkHelper networkHelper; - @Inject - private NsxService nsxService; - @Inject private VpcPrivateGatewayTransactionCallable vpcTxCallable; @@ -1433,7 +1429,11 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis try { _ipAddrMgr.updateSourceNatIpAddress(requestedIp, userIps); if (isVpcForNsx(vpc)) { - nsxService.updateVpcSourceNatIp(vpc, requestedIp); + VpcProvider nsxElement = (VpcProvider) _ntwkModel.getElementImplementingProvider(Provider.Nsx.getName()); + if (nsxElement == null) { + return true; + } + nsxElement.updateVpcSourceNatIp(vpc, requestedIp); // The NSX source NAT IP change does not require to update the VPC VR return false; }