You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ch...@apache.org on 2013/01/18 02:01:23 UTC

[1/39] git commit: Not all network service providers need to be NetworkElements. NetworkElements are only those that are interested in L2 events. Since only NetworkElements were injected, and only in NetworkManagerImpl, this has led to all kinds of conto

Not all network service providers need to be NetworkElements. NetworkElements are only those that are interested in L2 events. Since only NetworkElements were injected, and only in NetworkManagerImpl, this has led to all kinds of contortions. As a first step, enable individual service providers to be injected.

Signed-off-by: Chiradeep Vittal <ch...@apache.org>


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

Branch: refs/heads/master
Commit: b0a1a47d48570b1026bbb24ced6e10f23fd2463d
Parents: 42f3804
Author: Chiradeep Vittal <ch...@apache.org>
Authored: Thu Jan 3 15:05:12 2013 -0800
Committer: Chiradeep Vittal <ch...@apache.org>
Committed: Fri Jan 4 12:14:49 2013 -0800

----------------------------------------------------------------------
 api/src/com/cloud/network/element/IpDeployer.java  |    3 +-
 client/tomcatconf/components.xml.in                |   35 +++++++++++++++
 .../element/JuniperSRXExternalFirewallElement.java |    2 +-
 .../src/com/cloud/network/NetworkManagerImpl.java  |    2 +
 .../network/element/VirtualRouterElement.java      |    5 ++-
 .../network/firewall/FirewallManagerImpl.java      |    6 +++
 6 files changed, 50 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b0a1a47d/api/src/com/cloud/network/element/IpDeployer.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/network/element/IpDeployer.java b/api/src/com/cloud/network/element/IpDeployer.java
index 3eebe82..8036d4b 100644
--- a/api/src/com/cloud/network/element/IpDeployer.java
+++ b/api/src/com/cloud/network/element/IpDeployer.java
@@ -23,8 +23,9 @@ import com.cloud.exception.ResourceUnavailableException;
 import com.cloud.network.Network;
 import com.cloud.network.Network.Service;
 import com.cloud.network.PublicIpAddress;
+import com.cloud.utils.component.Adapter;
 
-public interface IpDeployer {
+public interface IpDeployer extends Adapter{
     /**
      * Apply ip addresses to this network
      * @param network

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b0a1a47d/client/tomcatconf/components.xml.in
----------------------------------------------------------------------
diff --git a/client/tomcatconf/components.xml.in b/client/tomcatconf/components.xml.in
index 5957b61..49c075b 100755
--- a/client/tomcatconf/components.xml.in
+++ b/client/tomcatconf/components.xml.in
@@ -159,6 +159,41 @@ under the License.
             <adapter name="VpcVirtualRouter" class="com.cloud.network.element.VpcVirtualRouterElement"/>
             <adapter name="NiciraNvp" class="com.cloud.network.element.NiciraNvpElement"/>
         </adapters>
+        <adapters key="com.cloud.network.element.FirewallServiceProvider">
+            <adapter name="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement"/>
+            <adapter name="VirtualRouter" class="com.cloud.network.element.JuniperSRXExternalFirewallElement"/>
+        </adapters>
+        <adapters key="com.cloud.network.element.FirewallServiceProvider">
+            <adapter name="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement"/>
+            <adapter name="JuniperSRXExternalFirewallElement" class="com.cloud.network.element.JuniperSRXExternalFirewallElement"/>
+        </adapters>
+        <adapters key="com.cloud.network.element.DhcpServiceProvider">
+            <adapter name="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement"/>
+            <adapter name="ExternalDhcpElement" class="com.cloud.network.element.ExternalDhcpElement"/>
+        </adapters>
+        <adapters key="com.cloud.network.element.UserDataServiceProvider">
+            <adapter name="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement"/>
+        </adapters>
+        <adapters key="com.cloud.network.element.SourceNatServiceProvider">
+            <adapter name="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement"/>
+            <adapter name="JuniperSRXExternalFirewallElement" class="com.cloud.network.element.JuniperSRXExternalFirewallElement"/> 
+            <adapter name="NiciraNvp" class="com.cloud.network.element.NiciraNvpElement"/>  
+        </adapters>
+        <adapters key="com.cloud.network.element.StaticNatServiceProvider">
+            <adapter name="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement"/>
+        </adapters>
+        <adapters key="com.cloud.network.element.PortForwardingServiceProvider">
+            <adapter name="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement"/>
+        </adapters>
+        <adapters key="com.cloud.network.element.LoadBalancingServiceProvider">
+            <adapter name="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement"/>
+        </adapters>
+        <adapters key="com.cloud.network.element.RemoteAccessVPNServiceProvider">
+            <adapter name="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement"/>
+        </adapters>
+        <adapters key="com.cloud.network.element.IpDeployer">
+            <adapter name="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement"/>
+        </adapters>
         <adapters key="com.cloud.cluster.agentlb.AgentLoadBalancerPlanner">
             <adapter name="ClusterBasedAgentLbPlanner" class="com.cloud.cluster.agentlb.ClusterBasedAgentLoadBalancerPlanner"/>
         </adapters>

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b0a1a47d/plugins/network-elements/juniper-srx/src/com/cloud/network/element/JuniperSRXExternalFirewallElement.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/juniper-srx/src/com/cloud/network/element/JuniperSRXExternalFirewallElement.java b/plugins/network-elements/juniper-srx/src/com/cloud/network/element/JuniperSRXExternalFirewallElement.java
index 95bc031..fc47f3d 100644
--- a/plugins/network-elements/juniper-srx/src/com/cloud/network/element/JuniperSRXExternalFirewallElement.java
+++ b/plugins/network-elements/juniper-srx/src/com/cloud/network/element/JuniperSRXExternalFirewallElement.java
@@ -88,7 +88,7 @@ import com.cloud.vm.ReservationContext;
 import com.cloud.vm.VirtualMachine;
 import com.cloud.vm.VirtualMachineProfile;
 
-@Local(value = NetworkElement.class)
+@Local(value = {NetworkElement.class, FirewallServiceProvider.class})
 public class JuniperSRXExternalFirewallElement extends ExternalFirewallDeviceManagerImpl implements SourceNatServiceProvider, FirewallServiceProvider,
         PortForwardingServiceProvider, RemoteAccessVPNServiceProvider, IpDeployer, JuniperSRXFirewallElementService {
 

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b0a1a47d/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 3f8b085..ef331e5 100755
--- a/server/src/com/cloud/network/NetworkManagerImpl.java
+++ b/server/src/com/cloud/network/NetworkManagerImpl.java
@@ -185,6 +185,8 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
     Adapters<NetworkGuru> _networkGurus;
     @Inject(adapter = NetworkElement.class)
     Adapters<NetworkElement> _networkElements;
+    @Inject(adapter = IpDeployer.class)
+    Adapters<IpDeployer> _ipDeployers;
     @Inject
     NetworkDomainDao _networkDomainDao;
     @Inject

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b0a1a47d/server/src/com/cloud/network/element/VirtualRouterElement.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/element/VirtualRouterElement.java b/server/src/com/cloud/network/element/VirtualRouterElement.java
index 4ff1082..abd9a50 100755
--- a/server/src/com/cloud/network/element/VirtualRouterElement.java
+++ b/server/src/com/cloud/network/element/VirtualRouterElement.java
@@ -88,7 +88,10 @@ import com.cloud.vm.dao.DomainRouterDao;
 import com.cloud.vm.dao.UserVmDao;
 import com.google.gson.Gson;
 
-@Local(value = NetworkElement.class)
+@Local(value = {NetworkElement.class, FirewallServiceProvider.class, 
+		        DhcpServiceProvider.class, UserDataServiceProvider.class, 
+		        StaticNatServiceProvider.class, LoadBalancingServiceProvider.class,
+		        PortForwardingServiceProvider.class, IpDeployer.class, RemoteAccessVPNServiceProvider.class} )
 public class VirtualRouterElement extends AdapterBase implements VirtualRouterElementService, DhcpServiceProvider, 
     UserDataServiceProvider, SourceNatServiceProvider, StaticNatServiceProvider, FirewallServiceProvider,
         LoadBalancingServiceProvider, PortForwardingServiceProvider, RemoteAccessVPNServiceProvider, IpDeployer {

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b0a1a47d/server/src/com/cloud/network/firewall/FirewallManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/firewall/FirewallManagerImpl.java b/server/src/com/cloud/network/firewall/FirewallManagerImpl.java
index 6e3805b..54611e1 100644
--- a/server/src/com/cloud/network/firewall/FirewallManagerImpl.java
+++ b/server/src/com/cloud/network/firewall/FirewallManagerImpl.java
@@ -49,6 +49,8 @@ import com.cloud.network.NetworkManager;
 import com.cloud.network.dao.FirewallRulesCidrsDao;
 import com.cloud.network.dao.FirewallRulesDao;
 import com.cloud.network.dao.IPAddressDao;
+import com.cloud.network.element.FirewallServiceProvider;
+import com.cloud.network.element.NetworkElement;
 import com.cloud.network.rules.FirewallManager;
 import com.cloud.network.rules.FirewallRule;
 import com.cloud.network.rules.FirewallRule.FirewallRuleType;
@@ -69,6 +71,7 @@ import com.cloud.user.UserContext;
 import com.cloud.utils.IdentityProxy;
 import com.cloud.utils.Pair;
 import com.cloud.utils.Ternary;
+import com.cloud.utils.component.Adapters;
 import com.cloud.utils.component.Inject;
 import com.cloud.utils.component.Manager;
 import com.cloud.utils.db.DB;
@@ -116,6 +119,8 @@ public class FirewallManagerImpl implements FirewallService, FirewallManager, Ma
     ResourceTagDao _resourceTagDao;
     @Inject
     VpcManager _vpcMgr;
+    @Inject(adapter = FirewallServiceProvider.class)
+    Adapters<FirewallServiceProvider> _firewallElements;
 
     private boolean _elbEnabled = false;
 
@@ -139,6 +144,7 @@ public class FirewallManagerImpl implements FirewallService, FirewallManager, Ma
         _name = name;
         String elbEnabledString = _configDao.getValue(Config.ElasticLoadBalancerEnabled.key());
         _elbEnabled = Boolean.parseBoolean(elbEnabledString);
+        s_logger.info("Firewall provider list is " + _firewallElements.iterator().next());
         return true;
     }