You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by al...@apache.org on 2012/08/13 23:22:36 UTC
git commit: VPC: CS-15925 - when vpc provider is speficied for a new
network offering, no other providers can be used
Updated Branches:
refs/heads/master dabb82792 -> 71ead9ef4
VPC: CS-15925 - when vpc provider is speficied for a new network offering, no other providers can be used
Conflicts:
server/src/com/cloud/network/NetworkManagerImpl.java
server/src/com/cloud/network/vpc/VpcManagerImpl.java
server/test/com/cloud/network/MockNetworkManagerImpl.java
Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/71ead9ef
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/71ead9ef
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/71ead9ef
Branch: refs/heads/master
Commit: 71ead9ef4e5a81908682456eabef58775fca6767
Parents: dabb827
Author: Alena Prokharchyk <al...@citrix.com>
Authored: Mon Aug 13 13:57:29 2012 -0700
Committer: Alena Prokharchyk <al...@citrix.com>
Committed: Mon Aug 13 14:03:39 2012 -0700
----------------------------------------------------------------------
.../configuration/ConfigurationManagerImpl.java | 13 +++
server/src/com/cloud/network/NetworkManager.java | 4 +-
.../src/com/cloud/network/NetworkManagerImpl.java | 4 +-
server/src/com/cloud/network/vpc/VpcManager.java | 9 ++
.../src/com/cloud/network/vpc/VpcManagerImpl.java | 60 +++++++++-----
.../com/cloud/network/MockNetworkManagerImpl.java | 19 +++--
.../test/com/cloud/vpc/MockNetworkManagerImpl.java | 2 +-
7 files changed, 75 insertions(+), 36 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/71ead9ef/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
index 3b07707..f9da08d 100755
--- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
+++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
@@ -120,6 +120,7 @@ import com.cloud.network.dao.NetworkDao;
import com.cloud.network.dao.PhysicalNetworkDao;
import com.cloud.network.dao.PhysicalNetworkTrafficTypeDao;
import com.cloud.network.dao.PhysicalNetworkTrafficTypeVO;
+import com.cloud.network.vpc.VpcManager;
import com.cloud.offering.DiskOffering;
import com.cloud.offering.NetworkOffering;
import com.cloud.offering.NetworkOffering.Availability;
@@ -230,6 +231,8 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
NicDao _nicDao;
@Inject
FirewallRulesDao _firewallDao;
+ @Inject
+ VpcManager _vpcMgr;
// FIXME - why don't we have interface for DataCenterLinkLocalIpAddressDao?
protected static final DataCenterLinkLocalIpAddressDaoImpl _LinkLocalIpAllocDao = ComponentLocator.inject(DataCenterLinkLocalIpAddressDaoImpl.class);
@@ -3247,11 +3250,21 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
for (Network.Service service : serviceProviderMap.keySet()) {
Set<Provider> providers = serviceProviderMap.get(service);
if (providers != null && !providers.isEmpty()) {
+ boolean vpcOff = false;
for (Network.Provider provider : providers) {
+ if (provider == Provider.VPCVirtualRouter) {
+ vpcOff = true;
+ }
NetworkOfferingServiceMapVO offService = new NetworkOfferingServiceMapVO(offering.getId(), service, provider);
_ntwkOffServiceMapDao.persist(offService);
s_logger.trace("Added service for the network offering: " + offService + " with provider " + provider.getName());
}
+
+ if (vpcOff) {
+ List<Service> supportedSvcs = new ArrayList<Service>();
+ supportedSvcs.addAll(serviceProviderMap.keySet());
+ _vpcMgr.validateNtwkOffForVpc(offering, supportedSvcs);
+ }
} else {
NetworkOfferingServiceMapVO offService = new NetworkOfferingServiceMapVO(offering.getId(), service, null);
_ntwkOffServiceMapDao.persist(offService);
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/71ead9ef/server/src/com/cloud/network/NetworkManager.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/NetworkManager.java b/server/src/com/cloud/network/NetworkManager.java
index 7f06d91..1f803af 100755
--- a/server/src/com/cloud/network/NetworkManager.java
+++ b/server/src/com/cloud/network/NetworkManager.java
@@ -331,10 +331,10 @@ public interface NetworkManager extends NetworkService {
/**
- * @param networkId
+ * @param ntwkOffId
* @return
*/
- List<Provider> getNtwkOffDistinctProviders(long networkId);
+ List<Provider> getNtwkOffDistinctProviders(long ntwkOffId);
/**
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/71ead9ef/server/src/com/cloud/network/NetworkManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java
index d382e92..d089752 100755
--- a/server/src/com/cloud/network/NetworkManagerImpl.java
+++ b/server/src/com/cloud/network/NetworkManagerImpl.java
@@ -7126,8 +7126,8 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
}
@Override
- public List<Provider> getNtwkOffDistinctProviders(long networkId) {
- List<String> providerNames = _ntwkOfferingSrvcDao.getDistinctProviders(networkId);
+ public List<Provider> getNtwkOffDistinctProviders(long ntkwOffId) {
+ List<String> providerNames = _ntwkOfferingSrvcDao.getDistinctProviders(ntkwOffId);
List<Provider> providers = new ArrayList<Provider>();
for (String providerName : providerNames) {
providers.add(Network.Provider.getProvider(providerName));
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/71ead9ef/server/src/com/cloud/network/vpc/VpcManager.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/vpc/VpcManager.java b/server/src/com/cloud/network/vpc/VpcManager.java
index c3bae6f..553891c 100644
--- a/server/src/com/cloud/network/vpc/VpcManager.java
+++ b/server/src/com/cloud/network/vpc/VpcManager.java
@@ -26,8 +26,10 @@ import com.cloud.exception.ResourceAllocationException;
import com.cloud.exception.ResourceUnavailableException;
import com.cloud.network.IpAddress;
import com.cloud.network.Network;
+import com.cloud.network.Network.Service;
import com.cloud.network.PhysicalNetwork;
import com.cloud.network.addr.PublicIp;
+import com.cloud.offering.NetworkOffering;
import com.cloud.user.Account;
import com.cloud.vm.DomainRouterVO;
@@ -127,4 +129,11 @@ public interface VpcManager extends VpcService{
*/
PublicIp assignSourceNatIpAddressToVpc(Account owner, Vpc vpc) throws InsufficientAddressCapacityException, ConcurrentOperationException;
+
+ /**
+ * @param guestNtwkOff
+ * @param supportedSvcs TODO
+ */
+ void validateNtwkOffForVpc(NetworkOffering guestNtwkOff, List<Service> supportedSvcs);
+
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/71ead9ef/server/src/com/cloud/network/vpc/VpcManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/vpc/VpcManagerImpl.java b/server/src/com/cloud/network/vpc/VpcManagerImpl.java
index 0612e65..3d6f930 100644
--- a/server/src/com/cloud/network/vpc/VpcManagerImpl.java
+++ b/server/src/com/cloud/network/vpc/VpcManagerImpl.java
@@ -961,27 +961,12 @@ public class VpcManagerImpl implements VpcManager, Manager{
//1) Validate attributes that has to be passed in when create new guest network
validateNewVpcGuestNetwork(cidr, gateway, networkOwner, vpc, networkDomain);
}
-
- //2) Only Isolated networks with Source nat service enabled can be added to vpc
- if (!(guestNtwkOff.getGuestType() == GuestType.Isolated
- && _ntwkMgr.areServicesSupportedByNetworkOffering(guestNtwkOff.getId(), Service.SourceNat))) {
-
- throw new InvalidParameterValueException("Only networks of type " + GuestType.Isolated + " with service "
- + Service.SourceNat + " can be added as a part of VPC");
- }
-
- //3) No redundant router support
- if (guestNtwkOff.getRedundantRouter()) {
- throw new InvalidParameterValueException("No redunant router support when network belnogs to VPC");
- }
-
- //4) Conserve mode should be off
- if (guestNtwkOff.isConserveMode()) {
- throw new InvalidParameterValueException("Only networks with conserve mode Off can belong to VPC");
- }
-
- //5) Check services/providers against VPC providers
+ //2) validate network offering attributes
+ List<Service> svcs = _ntwkMgr.listNetworkOfferingServices(guestNtwkOff.getId());
+ validateNtwkOffForVpc(guestNtwkOff, svcs);
+
+ //3) Check services/providers against VPC providers
List<NetworkOfferingServiceMapVO> networkProviders = _ntwkOffServiceDao.listByNetworkOfferingId(guestNtwkOff.getId());
for (NetworkOfferingServiceMapVO nSvcVO : networkProviders) {
@@ -992,8 +977,8 @@ public class VpcManagerImpl implements VpcManager, Manager{
pr + " is not supported by VPC " + vpc);
}
}
-
- //6) Only one network in the VPC can support LB
+
+ //4) Only one network in the VPC can support LB
if (_ntwkMgr.areServicesSupportedByNetworkOffering(guestNtwkOff.getId(), Service.Lb)) {
List<? extends Network> networks = getVpcNetworks(vpc.getId());
for (Network network : networks) {
@@ -1010,6 +995,37 @@ public class VpcManagerImpl implements VpcManager, Manager{
}
}
+ @Override
+ public void validateNtwkOffForVpc(NetworkOffering guestNtwkOff, List<Service> supportedSvcs) {
+ //1) in current release, only vpc provider is supported by Vpc offering
+ List<Provider> providers = _ntwkMgr.getNtwkOffDistinctProviders(guestNtwkOff.getId());
+ for (Provider provider : providers) {
+ if (provider != Provider.VPCVirtualRouter) {
+ throw new InvalidParameterValueException("Only provider of type " + Provider.VPCVirtualRouter.getName()
+ + " is supported for network offering that can be used in VPC");
+ }
+ }
+
+ //2) Only Isolated networks with Source nat service enabled can be added to vpc
+ if (!(guestNtwkOff.getGuestType() == GuestType.Isolated
+ && supportedSvcs.contains(Service.SourceNat))) {
+
+ throw new InvalidParameterValueException("Only network offerings of type " + GuestType.Isolated + " with service "
+ + Service.SourceNat.getName() +
+ " are valid for vpc ");
+ }
+
+ //3) No redundant router support
+ if (guestNtwkOff.getRedundantRouter()) {
+ throw new InvalidParameterValueException("No redunant router support when network belnogs to VPC");
+ }
+
+ //4) Conserve mode should be off
+ if (guestNtwkOff.isConserveMode()) {
+ throw new InvalidParameterValueException("Only networks with conserve mode Off can belong to VPC");
+ }
+ }
+
@DB
protected void validateNewVpcGuestNetwork(String cidr, String gateway, Account networkOwner, Vpc vpc, String networkDomain) {
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/71ead9ef/server/test/com/cloud/network/MockNetworkManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/network/MockNetworkManagerImpl.java b/server/test/com/cloud/network/MockNetworkManagerImpl.java
index 78b840e..06104c5 100755
--- a/server/test/com/cloud/network/MockNetworkManagerImpl.java
+++ b/server/test/com/cloud/network/MockNetworkManagerImpl.java
@@ -764,14 +764,6 @@ public class MockNetworkManagerImpl implements NetworkManager, Manager, NetworkS
return null;
}
- /* (non-Javadoc)
- * @see com.cloud.network.NetworkManager#getNtwkOffDistinctProviders(long)
- */
- @Override
- public List<Provider> getNtwkOffDistinctProviders(long networkId) {
- // TODO Auto-generated method stub
- return null;
- }
/* (non-Javadoc)
* @see com.cloud.network.NetworkManager#allocateNic(com.cloud.vm.NicProfile, com.cloud.network.Network, java.lang.Boolean, int, com.cloud.vm.VirtualMachineProfile)
@@ -888,7 +880,7 @@ public class MockNetworkManagerImpl implements NetworkManager, Manager, NetworkS
* @see com.cloud.network.NetworkManager#getDefaultUniqueProviderForService(java.lang.String)
*/
@Override
- public Provider getDefaultUniqueProviderForService(String serviceName) {
+ public List<Provider> getNtwkOffDistinctProviders(long ntwkOffId) {
// TODO Auto-generated method stub
return null;
}
@@ -1136,4 +1128,13 @@ public class MockNetworkManagerImpl implements NetworkManager, Manager, NetworkS
// TODO Auto-generated method stub
return null;
}
+
+ /* (non-Javadoc)
+ * @see com.cloud.network.NetworkManager#getDefaultUniqueProviderForService(java.lang.String)
+ */
+ @Override
+ public Provider getDefaultUniqueProviderForService(String serviceName) {
+ // TODO Auto-generated method stub
+ return null;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/71ead9ef/server/test/com/cloud/vpc/MockNetworkManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/vpc/MockNetworkManagerImpl.java b/server/test/com/cloud/vpc/MockNetworkManagerImpl.java
index f6ad27b..2dc2c16 100644
--- a/server/test/com/cloud/vpc/MockNetworkManagerImpl.java
+++ b/server/test/com/cloud/vpc/MockNetworkManagerImpl.java
@@ -1294,7 +1294,7 @@ public class MockNetworkManagerImpl implements NetworkManager, Manager{
* @see com.cloud.network.NetworkManager#getNtwkOffDistinctProviders(long)
*/
@Override
- public List<Provider> getNtwkOffDistinctProviders(long networkId) {
+ public List<Provider> getNtwkOffDistinctProviders(long ntwkOffId) {
// TODO Auto-generated method stub
return null;
}