You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by we...@apache.org on 2013/06/10 19:27:22 UTC

[28/50] [abbrv] git commit: updated refs/heads/disk_io_throttling to 8b8a0d3

CLOUDSTACK-2604 Fixed deleting secondary ip when no PF rules set

Signed-off-by: Abhinandan Prateek <ap...@apache.org>


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

Branch: refs/heads/disk_io_throttling
Commit: c1ad3b7974449f457a1cc4e50fe7af260d1c5bf6
Parents: 673b293
Author: Jayapal <ja...@citrix.com>
Authored: Thu May 23 16:10:44 2013 +0530
Committer: Abhinandan Prateek <ap...@apache.org>
Committed: Mon Jun 10 12:13:08 2013 +0530

----------------------------------------------------------------------
 api/src/com/cloud/network/NetworkModel.java            |  2 ++
 .../network/rules/dao/PortForwardingRulesDao.java      |  2 +-
 .../network/rules/dao/PortForwardingRulesDaoImpl.java  |  9 ++++++++-
 server/src/com/cloud/network/NetworkModelImpl.java     |  5 +++--
 server/src/com/cloud/network/NetworkServiceImpl.java   | 13 +++++++++----
 .../src/com/cloud/network/rules/RulesManagerImpl.java  |  2 +-
 .../test/com/cloud/network/MockNetworkModelImpl.java   |  5 +++++
 server/test/com/cloud/vpc/MockNetworkModelImpl.java    |  5 +++++
 8 files changed, 34 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c1ad3b79/api/src/com/cloud/network/NetworkModel.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/network/NetworkModel.java b/api/src/com/cloud/network/NetworkModel.java
index f84a8b0..05307eb 100644
--- a/api/src/com/cloud/network/NetworkModel.java
+++ b/api/src/com/cloud/network/NetworkModel.java
@@ -272,4 +272,6 @@ public interface NetworkModel {
     Map<Detail, String> getNtwkOffDetails(long offId);
 
     Networks.IsolationType[] listNetworkIsolationMethods();
+
+    Nic getNicInNetworkIncludingRemoved(long vmId, long networkId);
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c1ad3b79/engine/schema/src/com/cloud/network/rules/dao/PortForwardingRulesDao.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/network/rules/dao/PortForwardingRulesDao.java b/engine/schema/src/com/cloud/network/rules/dao/PortForwardingRulesDao.java
index 682a941..9a1d321 100644
--- a/engine/schema/src/com/cloud/network/rules/dao/PortForwardingRulesDao.java
+++ b/engine/schema/src/com/cloud/network/rules/dao/PortForwardingRulesDao.java
@@ -43,5 +43,5 @@ public interface PortForwardingRulesDao extends GenericDao<PortForwardingRuleVO,
     List<PortForwardingRuleVO> listByAccount(long accountId);
 
     List<PortForwardingRuleVO> listByDestIpAddr(String ip4Address);
-    
+    PortForwardingRuleVO findByIdAndIp(long id, String secondaryIp);
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c1ad3b79/engine/schema/src/com/cloud/network/rules/dao/PortForwardingRulesDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/network/rules/dao/PortForwardingRulesDaoImpl.java b/engine/schema/src/com/cloud/network/rules/dao/PortForwardingRulesDaoImpl.java
index cc780cb..c0db780 100644
--- a/engine/schema/src/com/cloud/network/rules/dao/PortForwardingRulesDaoImpl.java
+++ b/engine/schema/src/com/cloud/network/rules/dao/PortForwardingRulesDaoImpl.java
@@ -158,5 +158,12 @@ public class PortForwardingRulesDaoImpl extends GenericDaoBase<PortForwardingRul
         sc.setParameters("dstIp", ip4Address);
         return listBy(sc);
     }
-  
+
+    @Override
+    public PortForwardingRuleVO findByIdAndIp(long id, String secondaryIp) {
+        SearchCriteria<PortForwardingRuleVO> sc = AllFieldsSearch.create();
+        sc.setParameters("id", id);
+        sc.setParameters("dstIp", secondaryIp);
+        return findOneBy(sc);
+    }
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c1ad3b79/server/src/com/cloud/network/NetworkModelImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/NetworkModelImpl.java b/server/src/com/cloud/network/NetworkModelImpl.java
index 21917f7..fa34d65 100755
--- a/server/src/com/cloud/network/NetworkModelImpl.java
+++ b/server/src/com/cloud/network/NetworkModelImpl.java
@@ -770,7 +770,7 @@ public class NetworkModelImpl extends ManagerBase implements NetworkModel {
 
     @Override
     public Nic getNicInNetwork(long vmId, long networkId) {
-        return _nicDao.findByInstanceIdAndNetworkIdIncludingRemoved(networkId, vmId);
+        return _nicDao.findByNtwkIdAndInstanceId(networkId, vmId);
     }
 
     @Override
@@ -1761,7 +1761,8 @@ public class NetworkModelImpl extends ManagerBase implements NetworkModel {
         return true;
     }
 
-    Nic getNicInNetworkIncludingRemoved(long vmId, long networkId) {
+    @Override
+    public Nic getNicInNetworkIncludingRemoved(long vmId, long networkId) {
         return _nicDao.findByInstanceIdAndNetworkIdIncludingRemoved(networkId, vmId);
     }
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c1ad3b79/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 c7be2c6..d5a59d6 100755
--- a/server/src/com/cloud/network/NetworkServiceImpl.java
+++ b/server/src/com/cloud/network/NetworkServiceImpl.java
@@ -789,10 +789,15 @@ public class NetworkServiceImpl extends ManagerBase implements  NetworkService {
         if (dc.getNetworkType() == NetworkType.Advanced && network.getGuestType() == Network.GuestType.Isolated) {
             //check PF or static NAT is configured on this ip address
             String secondaryIp = secIpVO.getIp4Address();
-            List<PortForwardingRuleVO> pfRuleList = _portForwardingDao.listByDestIpAddr(secondaryIp);
-            if (pfRuleList.size() != 0) {
-                s_logger.debug("VM nic IP " + secondaryIp + " is associated with the port forwarding rule");
-                throw new InvalidParameterValueException("Can't remove the secondary ip " + secondaryIp + " is associate with the port forwarding rule");
+            List<FirewallRuleVO> fwRulesList =  _firewallDao.listByNetworkAndPurpose(network.getId(), Purpose.PortForwarding);
+
+            if (fwRulesList.size() != 0) {
+                for (FirewallRuleVO rule: fwRulesList) {
+                    if (_portForwardingDao.findByIdAndIp(rule.getId(), secondaryIp) != null) {
+                        s_logger.debug("VM nic IP " + secondaryIp + " is associated with the port forwarding rule");
+                        throw new InvalidParameterValueException("Can't remove the secondary ip " + secondaryIp + " is associate with the port forwarding rule");
+                    }
+                }
             }
             //check if the secondary ip associated with any static nat rule
             IPAddressVO publicIpVO = _ipAddressDao.findByVmIp(secondaryIp);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c1ad3b79/server/src/com/cloud/network/rules/RulesManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/rules/RulesManagerImpl.java b/server/src/com/cloud/network/rules/RulesManagerImpl.java
index 41bf2b3..bcda32d 100755
--- a/server/src/com/cloud/network/rules/RulesManagerImpl.java
+++ b/server/src/com/cloud/network/rules/RulesManagerImpl.java
@@ -1371,7 +1371,7 @@ public class RulesManagerImpl extends ManagerBase implements RulesManager, Rules
 
         // create new static nat rule
         // Get nic IP4 address
-        Nic guestNic = _networkModel.getNicInNetwork(vm.getId(), networkId);
+        Nic guestNic = _networkModel.getNicInNetworkIncludingRemoved(vm.getId(), networkId);
         if (guestNic == null) {
             throw new InvalidParameterValueException("Vm doesn't belong to the network with specified id");
         }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c1ad3b79/server/test/com/cloud/network/MockNetworkModelImpl.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/network/MockNetworkModelImpl.java b/server/test/com/cloud/network/MockNetworkModelImpl.java
index c3a0d6c..3a36748 100644
--- a/server/test/com/cloud/network/MockNetworkModelImpl.java
+++ b/server/test/com/cloud/network/MockNetworkModelImpl.java
@@ -874,4 +874,9 @@ public class MockNetworkModelImpl extends ManagerBase implements NetworkModel {
         // TODO Auto-generated method stub
         return null;
     }
+
+    @Override
+    public Nic getNicInNetworkIncludingRemoved(long vmId, long networkId) {
+        return null;
+    }
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c1ad3b79/server/test/com/cloud/vpc/MockNetworkModelImpl.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/vpc/MockNetworkModelImpl.java b/server/test/com/cloud/vpc/MockNetworkModelImpl.java
index d9e33b7..3e67f5e 100644
--- a/server/test/com/cloud/vpc/MockNetworkModelImpl.java
+++ b/server/test/com/cloud/vpc/MockNetworkModelImpl.java
@@ -887,4 +887,9 @@ public class MockNetworkModelImpl extends ManagerBase implements NetworkModel {
         return null;
     }
 
+    @Override
+    public Nic getNicInNetworkIncludingRemoved(long vmId, long networkId) {
+        return null;
+    }
+
 }