mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
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 <chiradeep@apache.org>
This commit is contained in:
parent
42f3804fbd
commit
b0a1a47d48
@ -23,8 +23,9 @@ import com.cloud.exception.ResourceUnavailableException;
|
|||||||
import com.cloud.network.Network;
|
import com.cloud.network.Network;
|
||||||
import com.cloud.network.Network.Service;
|
import com.cloud.network.Network.Service;
|
||||||
import com.cloud.network.PublicIpAddress;
|
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
|
* Apply ip addresses to this network
|
||||||
* @param network
|
* @param network
|
||||||
|
|||||||
@ -159,6 +159,41 @@ under the License.
|
|||||||
<adapter name="VpcVirtualRouter" class="com.cloud.network.element.VpcVirtualRouterElement"/>
|
<adapter name="VpcVirtualRouter" class="com.cloud.network.element.VpcVirtualRouterElement"/>
|
||||||
<adapter name="NiciraNvp" class="com.cloud.network.element.NiciraNvpElement"/>
|
<adapter name="NiciraNvp" class="com.cloud.network.element.NiciraNvpElement"/>
|
||||||
</adapters>
|
</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">
|
<adapters key="com.cloud.cluster.agentlb.AgentLoadBalancerPlanner">
|
||||||
<adapter name="ClusterBasedAgentLbPlanner" class="com.cloud.cluster.agentlb.ClusterBasedAgentLoadBalancerPlanner"/>
|
<adapter name="ClusterBasedAgentLbPlanner" class="com.cloud.cluster.agentlb.ClusterBasedAgentLoadBalancerPlanner"/>
|
||||||
</adapters>
|
</adapters>
|
||||||
|
|||||||
@ -88,7 +88,7 @@ import com.cloud.vm.ReservationContext;
|
|||||||
import com.cloud.vm.VirtualMachine;
|
import com.cloud.vm.VirtualMachine;
|
||||||
import com.cloud.vm.VirtualMachineProfile;
|
import com.cloud.vm.VirtualMachineProfile;
|
||||||
|
|
||||||
@Local(value = NetworkElement.class)
|
@Local(value = {NetworkElement.class, FirewallServiceProvider.class})
|
||||||
public class JuniperSRXExternalFirewallElement extends ExternalFirewallDeviceManagerImpl implements SourceNatServiceProvider, FirewallServiceProvider,
|
public class JuniperSRXExternalFirewallElement extends ExternalFirewallDeviceManagerImpl implements SourceNatServiceProvider, FirewallServiceProvider,
|
||||||
PortForwardingServiceProvider, RemoteAccessVPNServiceProvider, IpDeployer, JuniperSRXFirewallElementService {
|
PortForwardingServiceProvider, RemoteAccessVPNServiceProvider, IpDeployer, JuniperSRXFirewallElementService {
|
||||||
|
|
||||||
|
|||||||
@ -185,6 +185,8 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
|||||||
Adapters<NetworkGuru> _networkGurus;
|
Adapters<NetworkGuru> _networkGurus;
|
||||||
@Inject(adapter = NetworkElement.class)
|
@Inject(adapter = NetworkElement.class)
|
||||||
Adapters<NetworkElement> _networkElements;
|
Adapters<NetworkElement> _networkElements;
|
||||||
|
@Inject(adapter = IpDeployer.class)
|
||||||
|
Adapters<IpDeployer> _ipDeployers;
|
||||||
@Inject
|
@Inject
|
||||||
NetworkDomainDao _networkDomainDao;
|
NetworkDomainDao _networkDomainDao;
|
||||||
@Inject
|
@Inject
|
||||||
|
|||||||
@ -88,7 +88,10 @@ import com.cloud.vm.dao.DomainRouterDao;
|
|||||||
import com.cloud.vm.dao.UserVmDao;
|
import com.cloud.vm.dao.UserVmDao;
|
||||||
import com.google.gson.Gson;
|
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,
|
public class VirtualRouterElement extends AdapterBase implements VirtualRouterElementService, DhcpServiceProvider,
|
||||||
UserDataServiceProvider, SourceNatServiceProvider, StaticNatServiceProvider, FirewallServiceProvider,
|
UserDataServiceProvider, SourceNatServiceProvider, StaticNatServiceProvider, FirewallServiceProvider,
|
||||||
LoadBalancingServiceProvider, PortForwardingServiceProvider, RemoteAccessVPNServiceProvider, IpDeployer {
|
LoadBalancingServiceProvider, PortForwardingServiceProvider, RemoteAccessVPNServiceProvider, IpDeployer {
|
||||||
|
|||||||
@ -49,6 +49,8 @@ import com.cloud.network.NetworkManager;
|
|||||||
import com.cloud.network.dao.FirewallRulesCidrsDao;
|
import com.cloud.network.dao.FirewallRulesCidrsDao;
|
||||||
import com.cloud.network.dao.FirewallRulesDao;
|
import com.cloud.network.dao.FirewallRulesDao;
|
||||||
import com.cloud.network.dao.IPAddressDao;
|
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.FirewallManager;
|
||||||
import com.cloud.network.rules.FirewallRule;
|
import com.cloud.network.rules.FirewallRule;
|
||||||
import com.cloud.network.rules.FirewallRule.FirewallRuleType;
|
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.IdentityProxy;
|
||||||
import com.cloud.utils.Pair;
|
import com.cloud.utils.Pair;
|
||||||
import com.cloud.utils.Ternary;
|
import com.cloud.utils.Ternary;
|
||||||
|
import com.cloud.utils.component.Adapters;
|
||||||
import com.cloud.utils.component.Inject;
|
import com.cloud.utils.component.Inject;
|
||||||
import com.cloud.utils.component.Manager;
|
import com.cloud.utils.component.Manager;
|
||||||
import com.cloud.utils.db.DB;
|
import com.cloud.utils.db.DB;
|
||||||
@ -116,6 +119,8 @@ public class FirewallManagerImpl implements FirewallService, FirewallManager, Ma
|
|||||||
ResourceTagDao _resourceTagDao;
|
ResourceTagDao _resourceTagDao;
|
||||||
@Inject
|
@Inject
|
||||||
VpcManager _vpcMgr;
|
VpcManager _vpcMgr;
|
||||||
|
@Inject(adapter = FirewallServiceProvider.class)
|
||||||
|
Adapters<FirewallServiceProvider> _firewallElements;
|
||||||
|
|
||||||
private boolean _elbEnabled = false;
|
private boolean _elbEnabled = false;
|
||||||
|
|
||||||
@ -139,6 +144,7 @@ public class FirewallManagerImpl implements FirewallService, FirewallManager, Ma
|
|||||||
_name = name;
|
_name = name;
|
||||||
String elbEnabledString = _configDao.getValue(Config.ElasticLoadBalancerEnabled.key());
|
String elbEnabledString = _configDao.getValue(Config.ElasticLoadBalancerEnabled.key());
|
||||||
_elbEnabled = Boolean.parseBoolean(elbEnabledString);
|
_elbEnabled = Boolean.parseBoolean(elbEnabledString);
|
||||||
|
s_logger.info("Firewall provider list is " + _firewallElements.iterator().next());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user