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/02 04:08:32 UTC

[4/44] git commit: VPC: CS-15805 - verify vpc guest network cidr only against networks in the same vpc

VPC: CS-15805 - verify vpc guest network cidr only against networks in the same vpc

Conflicts:

	server/src/com/cloud/network/vpc/VpcManagerImpl.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/21e8fb37
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/21e8fb37
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/21e8fb37

Branch: refs/heads/vpc
Commit: 21e8fb372bce44a4a6f51103c4be57db884b3e7a
Parents: a4c52d4
Author: Alena Prokharchyk <al...@citrix.com>
Authored: Wed Aug 1 17:58:51 2012 -0700
Committer: Alena Prokharchyk <al...@citrix.com>
Committed: Wed Aug 1 19:02:43 2012 -0700

----------------------------------------------------------------------
 .../com/cloud/api/commands/UpdateNetworkCmd.java   |    2 +-
 .../src/com/cloud/network/NetworkManagerImpl.java  |    4 +-
 server/src/com/cloud/network/dao/NetworkDao.java   |    2 +-
 .../src/com/cloud/network/dao/NetworkDaoImpl.java  |    6 +++-
 .../cloud/network/vpc/Dao/StaticRouteDaoImpl.java  |    2 +-
 .../src/com/cloud/network/vpc/Dao/VpcDaoImpl.java  |    2 +-
 .../src/com/cloud/network/vpc/VpcManagerImpl.java  |   20 +++++++-------
 7 files changed, 21 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/21e8fb37/api/src/com/cloud/api/commands/UpdateNetworkCmd.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/api/commands/UpdateNetworkCmd.java b/api/src/com/cloud/api/commands/UpdateNetworkCmd.java
index c3657fc..15d8451 100644
--- a/api/src/com/cloud/api/commands/UpdateNetworkCmd.java
+++ b/api/src/com/cloud/api/commands/UpdateNetworkCmd.java
@@ -119,7 +119,7 @@ public class UpdateNetworkCmd extends BaseAsyncCmd {
         Account callerAccount = _accountService.getActiveAccountById(callerUser.getAccountId());
         Network network = _networkService.getNetwork(id);
         if (network == null) {
-            throw new InvalidParameterValueException("Couldn't find network by id", null);
+            throw new InvalidParameterValueException("Couldn't find network by id");
         }
         
         Network result = null;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/21e8fb37/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 6d243ed..5ffbdcd 100755
--- a/server/src/com/cloud/network/NetworkManagerImpl.java
+++ b/server/src/com/cloud/network/NetworkManagerImpl.java
@@ -1628,9 +1628,9 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
                         return configs;
                     }
                 }
-            } else if (predefined != null && predefined.getCidr() != null && predefined.getBroadcastUri() == null) {
+            } else if (predefined != null && predefined.getCidr() != null && predefined.getBroadcastUri() == null && vpcId == null) {
                 // don't allow to have 2 networks with the same cidr in the same zone for the account
-                List<NetworkVO> configs = _networksDao.listBy(owner.getId(), plan.getDataCenterId(), predefined.getCidr());
+                List<NetworkVO> configs = _networksDao.listBy(owner.getId(), plan.getDataCenterId(), predefined.getCidr(), true);
                 if (configs.size() > 0) {
                     if (s_logger.isDebugEnabled()) {
                         s_logger.debug("Found existing network configuration for offering " + offering + ": " + configs.get(0));

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/21e8fb37/server/src/com/cloud/network/dao/NetworkDao.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/dao/NetworkDao.java b/server/src/com/cloud/network/dao/NetworkDao.java
index 1b1f769..a2e37b7 100644
--- a/server/src/com/cloud/network/dao/NetworkDao.java
+++ b/server/src/com/cloud/network/dao/NetworkDao.java
@@ -33,7 +33,7 @@ public interface NetworkDao extends GenericDao<NetworkVO, Long> {
 
     List<NetworkVO> listBy(long accountId, long offeringId, long dataCenterId);
 
-    List<NetworkVO> listBy(long accountId, long dataCenterId, String cidr);
+    List<NetworkVO> listBy(long accountId, long dataCenterId, String cidr, boolean skipVpc);
 
     List<NetworkVO> listByZoneAndGuestType(long accountId, long dataCenterId, Network.GuestType type, Boolean isSystem);
 

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/21e8fb37/server/src/com/cloud/network/dao/NetworkDaoImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/dao/NetworkDaoImpl.java b/server/src/com/cloud/network/dao/NetworkDaoImpl.java
index e3a1cc7..cbfec89 100644
--- a/server/src/com/cloud/network/dao/NetworkDaoImpl.java
+++ b/server/src/com/cloud/network/dao/NetworkDaoImpl.java
@@ -113,6 +113,7 @@ public class NetworkDaoImpl extends GenericDaoBase<NetworkVO, Long> implements N
         AccountSearch.join("accounts", join, AccountSearch.entity().getId(), join.entity().getNetworkId(), JoinBuilder.JoinType.INNER);
         AccountSearch.and("datacenter", AccountSearch.entity().getDataCenterId(), Op.EQ);
         AccountSearch.and("cidr", AccountSearch.entity().getCidr(), Op.EQ);
+        AccountSearch.and("vpcId", AccountSearch.entity().getVpcId(), Op.EQ);
         AccountSearch.done();
 
         RelatedConfigSearch = createSearchBuilder();
@@ -240,11 +241,14 @@ public class NetworkDaoImpl extends GenericDaoBase<NetworkVO, Long> implements N
     }
 
     @Override
-    public List<NetworkVO> listBy(long accountId, long dataCenterId, String cidr) {
+    public List<NetworkVO> listBy(long accountId, long dataCenterId, String cidr, boolean skipVpc) {
         SearchCriteria<NetworkVO> sc = AccountSearch.create();
         sc.setJoinParameters("accounts", "account", accountId);
         sc.setParameters("datacenter", dataCenterId);
         sc.setParameters("cidr", cidr);
+        if (skipVpc) {
+            sc.setParameters("vpcId", (Object)null);
+        }
 
         return listBy(sc);
     }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/21e8fb37/server/src/com/cloud/network/vpc/Dao/StaticRouteDaoImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/vpc/Dao/StaticRouteDaoImpl.java b/server/src/com/cloud/network/vpc/Dao/StaticRouteDaoImpl.java
index 20f47f2..b55016d 100644
--- a/server/src/com/cloud/network/vpc/Dao/StaticRouteDaoImpl.java
+++ b/server/src/com/cloud/network/vpc/Dao/StaticRouteDaoImpl.java
@@ -106,7 +106,7 @@ public class StaticRouteDaoImpl extends GenericDaoBase<StaticRouteVO, Long> impl
         txn.start();
         StaticRouteVO entry = findById(id);
         if (entry != null) {
-            _tagsDao.removeBy(id, TaggedResourceType.StaticRoute);
+            _tagsDao.removeByIdAndType(id, TaggedResourceType.StaticRoute);
         }
         boolean result = super.remove(id);
         txn.commit();

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/21e8fb37/server/src/com/cloud/network/vpc/Dao/VpcDaoImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/vpc/Dao/VpcDaoImpl.java b/server/src/com/cloud/network/vpc/Dao/VpcDaoImpl.java
index fcca6dc..773d6ad 100644
--- a/server/src/com/cloud/network/vpc/Dao/VpcDaoImpl.java
+++ b/server/src/com/cloud/network/vpc/Dao/VpcDaoImpl.java
@@ -103,7 +103,7 @@ public class VpcDaoImpl extends GenericDaoBase<VpcVO, Long> implements VpcDao{
         txn.start();
         VpcVO entry = findById(id);
         if (entry != null) {
-            _tagsDao.removeBy(id, TaggedResourceType.Vpc);
+            _tagsDao.removeByIdAndType(id, TaggedResourceType.Vpc);
         }
         boolean result = super.remove(id);
         txn.commit();

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/21e8fb37/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 6e73a2d..34a0c3c 100644
--- a/server/src/com/cloud/network/vpc/VpcManagerImpl.java
+++ b/server/src/com/cloud/network/vpc/VpcManagerImpl.java
@@ -590,16 +590,16 @@ public class VpcManagerImpl implements VpcManager, Manager{
                     "the digits '0' through '9', "
                             + "and the hyphen ('-'); can't start or end with \"-\"");
         }
-        
-        
-        //don't allow overlapping CIDRS for the VPCs of the same account
-        List<? extends Vpc> vpcs = getVpcsForAccount(vpcOwner.getId());
-        for (Vpc vpc : vpcs) {
-            if (NetUtils.isNetworksOverlap(cidr, vpc.getCidr())) {
-                throw new InvalidParameterValueException("Account already has vpc with cidr " + vpc.getCidr() + 
-                        " that overlaps the cidr specified: " + cidr);
-            }
-        }
+
+
+//        //don't allow overlapping CIDRS for the VPCs of the same account
+//        List<? extends Vpc> vpcs = getVpcsForAccount(vpcOwner.getId());
+//        for (Vpc vpc : vpcs) {
+//            if (NetUtils.isNetworksOverlap(cidr, vpc.getCidr())) {
+//                throw new InvalidParameterValueException("Account already has vpc with cidr " + vpc.getCidr() + 
+//                        " that overlaps the cidr specified: " + cidr, null);
+//            }
+//        }
 
         Transaction txn = Transaction.currentTxn();
         txn.start();