CLOUDSTACK-737,
         allow to add security group enabled networks in security group enabled 
zone


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

Branch: refs/heads/ui-plugins
Commit: 95aef332cc851f91bafb9af7bf5f0f682bb566ce
Parents: 485761f
Author: anthony <[email protected]>
Authored: Wed Jan 23 11:08:24 2013 -0800
Committer: anthony <[email protected]>
Committed: Wed Jan 23 11:08:24 2013 -0800

----------------------------------------------------------------------
 .../configuration/ConfigurationManagerImpl.java    |   10 ++---
 .../consoleproxy/ConsoleProxyManagerImpl.java      |   29 +++++++++-----
 .../secondary/SecondaryStorageManagerImpl.java     |   32 +++++++++-----
 3 files changed, 43 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/95aef332/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 df6642a..f976fd2 100755
--- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
+++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
@@ -1526,13 +1526,11 @@ public class ConfigurationManagerImpl implements 
ConfigurationManager, Configura
                 // check if zone has necessary trafficTypes before enabling
                 try {
                     PhysicalNetwork mgmtPhyNetwork;
-                    if (NetworkType.Advanced == zone.getNetworkType()) {
-                        // zone should have a physical network with public and 
management traffiType
+                    // zone should have a physical network with management 
traffiType
+                    mgmtPhyNetwork = 
_networkModel.getDefaultPhysicalNetworkByZoneAndTrafficType(zoneId, 
TrafficType.Management);
+                    if (NetworkType.Advanced == zone.getNetworkType() && ! 
zone.isSecurityGroupEnabled() ) {
+                        // advanced zone without SG should have a physical 
network with public Thpe
                         
_networkModel.getDefaultPhysicalNetworkByZoneAndTrafficType(zoneId, 
TrafficType.Public);
-                        mgmtPhyNetwork = 
_networkModel.getDefaultPhysicalNetworkByZoneAndTrafficType(zoneId, 
TrafficType.Management);
-                    } else {
-                        // zone should have a physical network with management 
traffiType
-                        mgmtPhyNetwork = 
_networkModel.getDefaultPhysicalNetworkByZoneAndTrafficType(zoneId, 
TrafficType.Management);
                     }
 
                     try {

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/95aef332/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java 
b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
index 6b2d8ad..2d10497 100755
--- a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
+++ b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
@@ -756,19 +756,28 @@ public class ConsoleProxyManagerImpl implements 
ConsoleProxyManager, ConsoleProx
 
         DataCenterDeployment plan = new DataCenterDeployment(dataCenterId);
 
-        TrafficType defaultTrafficType = TrafficType.Public;
-        if (dc.getNetworkType() == NetworkType.Basic || 
dc.isSecurityGroupEnabled()) {
-            defaultTrafficType = TrafficType.Guest;
-        }
-
-        List<NetworkVO> defaultNetworks = 
_networkDao.listByZoneAndTrafficType(dataCenterId, defaultTrafficType);
+        NetworkVO defaultNetwork = null;
+        if (dc.getNetworkType() == NetworkType.Advanced && 
dc.isSecurityGroupEnabled()) {
+            List<NetworkVO> networks = 
_networkDao.listByZoneSecurityGroup(dataCenterId);
+            if (networks == null || networks.size() == 0) {
+                throw new CloudRuntimeException("Can not found security 
enabled network in SG Zone " + dc);
+            }
+            defaultNetwork = networks.get(0);
+        } else {
+            TrafficType defaultTrafficType = TrafficType.Public;
+            if (dc.getNetworkType() == NetworkType.Basic || 
dc.isSecurityGroupEnabled()) {
+                defaultTrafficType = TrafficType.Guest;
+            }
+            List<NetworkVO> defaultNetworks = 
_networkDao.listByZoneAndTrafficType(dataCenterId, defaultTrafficType);
 
-        if (defaultNetworks.size() != 1) {
-            throw new CloudRuntimeException("Found " + defaultNetworks.size() 
+ " networks of type " + defaultTrafficType + " when expect to find 1");
+            // api should never allow this situation to happen
+            if (defaultNetworks.size() != 1) {
+                throw new CloudRuntimeException("Found " + 
defaultNetworks.size() + " networks of type "
+                      + defaultTrafficType + " when expect to find 1");
+            }
+             defaultNetwork = defaultNetworks.get(0);
         }
 
-        NetworkVO defaultNetwork = defaultNetworks.get(0);
-
         List<? extends NetworkOffering> offerings = 
_networkModel.getSystemAccountNetworkOfferings(NetworkOffering.SystemControlNetwork,
 NetworkOffering.SystemManagementNetwork);
         List<Pair<NetworkVO, NicProfile>> networks = new 
ArrayList<Pair<NetworkVO, NicProfile>>(offerings.size() + 1);
         NicProfile defaultNic = new NicProfile();

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/95aef332/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java
----------------------------------------------------------------------
diff --git 
a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java 
b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java
index e420881..b53ecd3 100755
--- a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java
+++ b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java
@@ -537,19 +537,27 @@ public class SecondaryStorageManagerImpl implements 
SecondaryStorageVmManager, V
         DataCenterDeployment plan = new DataCenterDeployment(dataCenterId);
         DataCenter dc = _dcDao.findById(plan.getDataCenterId());
         
-        TrafficType defaultTrafficType = TrafficType.Public;
-        if (dc.getNetworkType() == NetworkType.Basic || 
dc.isSecurityGroupEnabled()) {
-               defaultTrafficType = TrafficType.Guest;
-        }
-        
-        List<NetworkVO> defaultNetworks = 
_networkDao.listByZoneAndTrafficType(dataCenterId, defaultTrafficType);
-        
-        //api should never allow this situation to happen
-        if (defaultNetworks.size() != 1) {
-               throw new CloudRuntimeException("Found " + 
defaultNetworks.size() + " networks of type " + defaultTrafficType + " when 
expect to find 1");
+        NetworkVO defaultNetwork = null;
+        if (dc.getNetworkType() == NetworkType.Advanced && 
dc.isSecurityGroupEnabled()) {
+            List<NetworkVO> networks = 
_networkDao.listByZoneSecurityGroup(dataCenterId);
+            if (networks == null || networks.size() == 0) {
+                throw new CloudRuntimeException("Can not found security 
enabled network in SG Zone " + dc);
+            }
+            defaultNetwork = networks.get(0);
+        } else {
+            TrafficType defaultTrafficType = TrafficType.Public;
+
+            if (dc.getNetworkType() == NetworkType.Basic || 
dc.isSecurityGroupEnabled()) {
+                defaultTrafficType = TrafficType.Guest;
+            }
+            List<NetworkVO> defaultNetworks = 
_networkDao.listByZoneAndTrafficType(dataCenterId, defaultTrafficType);
+            // api should never allow this situation to happen
+            if (defaultNetworks.size() != 1) {
+                throw new CloudRuntimeException("Found " + 
defaultNetworks.size() + " networks of type "
+                                + defaultTrafficType + " when expect to find 
1");
+            }
+            defaultNetwork = defaultNetworks.get(0);
         }
-        
-        NetworkVO defaultNetwork = defaultNetworks.get(0);
 
         List<? extends NetworkOffering> offerings = 
_networkModel.getSystemAccountNetworkOfferings(NetworkOfferingVO.SystemControlNetwork,
 NetworkOfferingVO.SystemManagementNetwork, 
NetworkOfferingVO.SystemStorageNetwork);
         List<Pair<NetworkVO, NicProfile>> networks = new 
ArrayList<Pair<NetworkVO, NicProfile>>(offerings.size() + 1);

Reply via email to