You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by mu...@apache.org on 2013/04/01 12:55:35 UTC

git commit: updated refs/heads/master to 8dd0b77

Updated Branches:
  refs/heads/master 355589c1f -> 8dd0b7747


Mulitiple ip address per nic support for advacned shared networks

Description:
Changes added for supporting multiple ip address per nic for shared networks

Testing Done:
Tested adding and removing the ip for nic using the APIs


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/8dd0b774
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/8dd0b774
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/8dd0b774

Branch: refs/heads/master
Commit: 8dd0b7747b2da1aa71110e871b0bd4ffdbcdfcb4
Parents: 355589c
Author: Jayapal Reddy <ja...@citrix.com>
Authored: Mon Apr 1 16:22:12 2013 +0530
Committer: Murali Reddy <mu...@citrix.com>
Committed: Mon Apr 1 16:24:48 2013 +0530

----------------------------------------------------------------------
 .../src/com/cloud/network/NetworkServiceImpl.java  |   24 ++++++++-------
 1 files changed, 13 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8dd0b774/server/src/com/cloud/network/NetworkServiceImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/NetworkServiceImpl.java b/server/src/com/cloud/network/NetworkServiceImpl.java
index d503459..4eb620c 100755
--- a/server/src/com/cloud/network/NetworkServiceImpl.java
+++ b/server/src/com/cloud/network/NetworkServiceImpl.java
@@ -490,6 +490,9 @@ public class NetworkServiceImpl extends ManagerBase implements  NetworkService {
         accountId = network.getAccountId();
         domainId = network.getDomainId();
 
+        // Validate network offering
+        NetworkOfferingVO ntwkOff = _networkOfferingDao.findById(network.getNetworkOfferingId());
+
         // verify permissions
         _accountMgr.checkAccess(ipOwner, null, true, network);
 
@@ -518,7 +521,7 @@ public class NetworkServiceImpl extends ManagerBase implements  NetworkService {
             } catch (InsufficientAddressCapacityException e) {
                 throw new InvalidParameterValueException("Allocating guest ip for nic failed");
             }
-        } else if (dc.getNetworkType() == NetworkType.Basic) {
+        } else if (dc.getNetworkType() == NetworkType.Basic || ntwkOff.getGuestType()  == Network.GuestType.Shared) {
             Account caller = UserContext.current().getCaller();
             long callerUserId = UserContext.current().getCallerUserId();
             _accountMgr.checkAccess(caller, AccessType.UseNetwork, false, network);
@@ -546,14 +549,6 @@ public class NetworkServiceImpl extends ManagerBase implements  NetworkService {
                 s_logger.error("Allocating ip to guest nic " + nicId + " failed");
                 return null;
             }
-        } else if (isSharedNetworkOfferingWithServices(network.getNetworkOfferingId()) && zone.getNetworkType() == NetworkType.Advanced) {
-            // if shared network in the advanced zone, then check the caller against the network for 'AccessType.UseNetwork'
-            Account caller = UserContext.current().getCaller();
-            long callerUserId = UserContext.current().getCallerUserId();
-            _accountMgr.checkAccess(caller, AccessType.UseNetwork, false, network);
-            if (s_logger.isDebugEnabled()) {
-                s_logger.debug("Associate IP address called by the user " + callerUserId + " account " + ipOwner.getId());
-            }
         } else {
             s_logger.error("AddIpToVMNic is not supported in this network...");
             return null;
@@ -594,6 +589,13 @@ public class NetworkServiceImpl extends ManagerBase implements  NetworkService {
 
         Network network = _networksDao.findById(secIpVO.getNetworkId());
 
+        if (network == null) {
+            throw new InvalidParameterValueException("Invalid network id is given");
+        }
+
+        // Validate network offering
+        NetworkOfferingVO ntwkOff = _networkOfferingDao.findById(network.getNetworkOfferingId());
+
         // verify permissions
         _accountMgr.checkAccess(caller, null, true, network);
 
@@ -627,7 +629,7 @@ public class NetworkServiceImpl extends ManagerBase implements  NetworkService {
                 s_logger.debug("VM nic IP " + secondaryIp + " is associated with the static NAT rule public IP address id " + publicIpVO.getId());
                 throw new InvalidParameterValueException("Can' remove the ip " + secondaryIp + "is associate with static NAT rule public IP address id " + publicIpVO.getId());
             }
-        } else if (dc.getNetworkType() == NetworkType.Basic) {
+        } else if (dc.getNetworkType() == NetworkType.Basic || ntwkOff.getGuestType()  == Network.GuestType.Shared) {
             IPAddressVO ip = _ipAddressDao.findByIpAndNetworkId(secIpVO.getNetworkId(), secIpVO.getIp4Address());
             if (ip != null) {
                 Transaction txn = Transaction.currentTxn();
@@ -636,7 +638,7 @@ public class NetworkServiceImpl extends ManagerBase implements  NetworkService {
                 _ipAddressDao.unassignIpAddress(ip.getId());
                 txn.commit();
             }
-        } else if (isSharedNetworkOfferingWithServices(network.getNetworkOfferingId()) && dc.getNetworkType() == NetworkType.Advanced) {
+        } else {
             throw new InvalidParameterValueException("Not supported for this network now");
         }