mirror of https://github.com/apache/cloudstack.git
-Added LB serive provider (seperating it out from Firewall service provider)
-Bringing add/delete/list of all external network devices under one unified API's (addNetworkDevice, deleteNetworkDevice, listNetworkDevice) -Refactoring External network manager to work from both sets of API's add/delete/list NetworkDevice and add/delete/list External Firewall/LoadBalancer
This commit is contained in:
parent
219978a9be
commit
aa808f5685
|
|
@ -0,0 +1,18 @@
|
|||
package com.cloud.network.element;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.cloud.exception.ResourceUnavailableException;
|
||||
import com.cloud.network.Network;
|
||||
import com.cloud.network.rules.FirewallRule;
|
||||
|
||||
public interface LoadBalancingServiceProvider extends NetworkElement {
|
||||
/**
|
||||
* Apply rules
|
||||
* @param network
|
||||
* @param rules
|
||||
* @return
|
||||
* @throws ResourceUnavailableException
|
||||
*/
|
||||
boolean applyRules(Network network, List<? extends FirewallRule> rules) throws ResourceUnavailableException;
|
||||
}
|
||||
|
|
@ -20,7 +20,7 @@
|
|||
<adapter name="DirectPodBasedNetworkGuru" class="com.cloud.network.guru.DirectPodBasedNetworkGuru"/>
|
||||
</adapters>
|
||||
<adapters key="com.cloud.network.element.NetworkElement">
|
||||
<adapter name="ExternalFirewall" class="com.cloud.network.element.ExternalFirewallElement"/>
|
||||
<adapter name="JuniperSRXExternalFirewallElement" class="com.cloud.network.element.JuniperSRXExternalFirewallElement"/>
|
||||
<adapter name="NetscalerExternalLoadBalancer" class="com.cloud.network.element.NetscalerExternalLoadBalancerElement"/>
|
||||
<adapter name="F5ExternalLoadBalancer" class="com.cloud.network.element.F5ExternalLoadBalancerElement"/>
|
||||
<adapter name="DomainRouter" class="com.cloud.network.element.VirtualRouterElement"/>
|
||||
|
|
|
|||
|
|
@ -26,9 +26,10 @@ import com.cloud.api.BaseCmd;
|
|||
import com.cloud.api.Implementation;
|
||||
import com.cloud.api.Parameter;
|
||||
import com.cloud.api.ServerApiException;
|
||||
import com.cloud.api.BaseCmd.CommandType;
|
||||
import com.cloud.exception.InvalidParameterValueException;
|
||||
import com.cloud.host.Host;
|
||||
import com.cloud.network.ExternalNetworkManager;
|
||||
import com.cloud.network.ExternalNetworkDeviceManager;
|
||||
import com.cloud.server.ManagementService;
|
||||
import com.cloud.server.api.response.ExternalFirewallResponse;
|
||||
import com.cloud.user.Account;
|
||||
|
|
@ -46,7 +47,10 @@ public class AddExternalFirewallCmd extends BaseCmd {
|
|||
|
||||
@Parameter(name=ApiConstants.ZONE_ID, type=CommandType.LONG, required = true, description="Zone in which to add the external firewall appliance.")
|
||||
private Long zoneId;
|
||||
|
||||
|
||||
@Parameter(name=ApiConstants.NETWORK_ID, type=CommandType.LONG, required = false, description="Pyshical network in the zone to which external firewall appliance will be added.")
|
||||
private Long networkId;
|
||||
|
||||
@Parameter(name=ApiConstants.URL, type=CommandType.STRING, required = true, description="URL of the external firewall appliance.")
|
||||
private String url;
|
||||
|
||||
|
|
@ -56,7 +60,7 @@ public class AddExternalFirewallCmd extends BaseCmd {
|
|||
@Parameter(name=ApiConstants.PASSWORD, type=CommandType.STRING, required = true, description="Password of the external firewall appliance.")
|
||||
private String password;
|
||||
|
||||
@Parameter(name=ApiConstants.EXTERNAL_FIREWALL_TYPE, type=CommandType.STRING, description="External firewall type. Now supports JuniperSRX.")
|
||||
@Parameter(name=ApiConstants.NETWORK_DEVICE_TYPE, type=CommandType.STRING, required = false, description="External firewall type. Now supports JuniperSRXFirewall.")
|
||||
private String type;
|
||||
///////////////////////////////////////////////////
|
||||
/////////////////// Accessors ///////////////////////
|
||||
|
|
@ -65,7 +69,11 @@ public class AddExternalFirewallCmd extends BaseCmd {
|
|||
public Long getZoneId() {
|
||||
return zoneId;
|
||||
}
|
||||
|
||||
|
||||
public Long getNetworkId() {
|
||||
return networkId;
|
||||
}
|
||||
|
||||
public String getUrl() {
|
||||
return url;
|
||||
}
|
||||
|
|
@ -78,7 +86,7 @@ public class AddExternalFirewallCmd extends BaseCmd {
|
|||
return password;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
public String getDeviceType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
|
|
@ -99,8 +107,8 @@ public class AddExternalFirewallCmd extends BaseCmd {
|
|||
@Override
|
||||
public void execute(){
|
||||
try {
|
||||
ComponentLocator locator = ComponentLocator.getLocator(ManagementService.Name);
|
||||
ExternalNetworkManager externalNetworkMgr = locator.getManager(ExternalNetworkManager.class);
|
||||
ComponentLocator locator = ComponentLocator.getLocator(ManagementService.Name);
|
||||
ExternalNetworkDeviceManager externalNetworkMgr = locator.getManager(ExternalNetworkDeviceManager.class);
|
||||
Host externalFirewall = externalNetworkMgr.addExternalFirewall(this);
|
||||
ExternalFirewallResponse response = externalNetworkMgr.createExternalFirewallResponse(externalFirewall);
|
||||
response.setObjectName("externalfirewall");
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ import com.cloud.api.Parameter;
|
|||
import com.cloud.api.ServerApiException;
|
||||
import com.cloud.exception.InvalidParameterValueException;
|
||||
import com.cloud.host.Host;
|
||||
import com.cloud.network.ExternalNetworkManager;
|
||||
import com.cloud.network.ExternalNetworkDeviceManager;
|
||||
import com.cloud.server.ManagementService;
|
||||
import com.cloud.server.api.response.ExternalLoadBalancerResponse;
|
||||
import com.cloud.user.Account;
|
||||
|
|
@ -46,6 +46,9 @@ public class AddExternalLoadBalancerCmd extends BaseCmd {
|
|||
|
||||
@Parameter(name=ApiConstants.ZONE_ID, type=CommandType.LONG, required = true, description="Zone in which to add the external load balancer appliance.")
|
||||
private Long zoneId;
|
||||
|
||||
@Parameter(name=ApiConstants.NETWORK_ID, type=CommandType.LONG, required = false, description="Pyshical network in the zone to which external load balancer appliance will be added.")
|
||||
private Long networkId;
|
||||
|
||||
@Parameter(name=ApiConstants.URL, type=CommandType.STRING, required = true, description="URL of the external load balancer appliance.")
|
||||
private String url;
|
||||
|
|
@ -56,7 +59,7 @@ public class AddExternalLoadBalancerCmd extends BaseCmd {
|
|||
@Parameter(name=ApiConstants.PASSWORD, type=CommandType.STRING, required = true, description="Password of the external load balancer appliance.")
|
||||
private String password;
|
||||
|
||||
@Parameter(name=ApiConstants.EXTERNAL_LB_TYPE, type=CommandType.STRING, description="External load balancer type. Now supports F5BigIP.")
|
||||
@Parameter(name=ApiConstants.NETWORK_DEVICE_TYPE, type=CommandType.STRING, required = false, description="External load balancer type. Now supports NetscalerLoadBalancer, F5BigIpLoadBalancer.")
|
||||
private String type;
|
||||
|
||||
///////////////////////////////////////////////////
|
||||
|
|
@ -67,6 +70,10 @@ public class AddExternalLoadBalancerCmd extends BaseCmd {
|
|||
return zoneId;
|
||||
}
|
||||
|
||||
public Long getNetworkId() {
|
||||
return networkId;
|
||||
}
|
||||
|
||||
public String getUrl() {
|
||||
return url;
|
||||
}
|
||||
|
|
@ -79,7 +86,7 @@ public class AddExternalLoadBalancerCmd extends BaseCmd {
|
|||
return password;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
public String getDeviceType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
|
|
@ -101,7 +108,7 @@ public class AddExternalLoadBalancerCmd extends BaseCmd {
|
|||
public void execute(){
|
||||
try {
|
||||
ComponentLocator locator = ComponentLocator.getLocator(ManagementService.Name);
|
||||
ExternalNetworkManager externalNetworkMgr = locator.getManager(ExternalNetworkManager.class);
|
||||
ExternalNetworkDeviceManager externalNetworkMgr = locator.getManager(ExternalNetworkDeviceManager.class);
|
||||
Host externalLoadBalancer = externalNetworkMgr.addExternalLoadBalancer(this);
|
||||
ExternalLoadBalancerResponse response = externalNetworkMgr.createExternalLoadBalancerResponse(externalLoadBalancer);
|
||||
response.setObjectName("externalloadbalancer");
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ public class AddNetworkDeviceCmd extends BaseCmd {
|
|||
// ////////////// API parameters /////////////////////
|
||||
// ///////////////////////////////////////////////////
|
||||
|
||||
@Parameter(name = ApiConstants.NETWORK_DEVICE_TYPE, type = CommandType.STRING, description = "Network device type, now supports ExternalDhcp, ExternalFirewall, ExternalLoadBalancer, PxeServer")
|
||||
@Parameter(name = ApiConstants.NETWORK_DEVICE_TYPE, type = CommandType.STRING, description = "Network device type, now supports ExternalDhcp, PxeServer, NetscalerLoadBalancer, F5BigIpLoadBalancer, JuniperSRXFirewall")
|
||||
private String type;
|
||||
|
||||
@Parameter(name = ApiConstants.NETWORK_DEVICE_PARAMETER_LIST, type = CommandType.MAP, description = "parameters for network device")
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ import com.cloud.api.Parameter;
|
|||
import com.cloud.api.ServerApiException;
|
||||
import com.cloud.api.response.SuccessResponse;
|
||||
import com.cloud.exception.InvalidParameterValueException;
|
||||
import com.cloud.network.ExternalNetworkManager;
|
||||
import com.cloud.network.ExternalNetworkDeviceManager;
|
||||
import com.cloud.server.ManagementService;
|
||||
import com.cloud.user.Account;
|
||||
import com.cloud.utils.component.ComponentLocator;
|
||||
|
|
@ -71,7 +71,7 @@ public class DeleteExternalFirewallCmd extends BaseCmd {
|
|||
public void execute(){
|
||||
try {
|
||||
ComponentLocator locator = ComponentLocator.getLocator(ManagementService.Name);
|
||||
ExternalNetworkManager externalNetworkMgr = locator.getManager(ExternalNetworkManager.class);
|
||||
ExternalNetworkDeviceManager externalNetworkMgr = locator.getManager(ExternalNetworkDeviceManager.class);
|
||||
boolean result = externalNetworkMgr.deleteExternalFirewall(this);
|
||||
if (result) {
|
||||
SuccessResponse response = new SuccessResponse(getCommandName());
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ import com.cloud.api.Parameter;
|
|||
import com.cloud.api.ServerApiException;
|
||||
import com.cloud.api.response.SuccessResponse;
|
||||
import com.cloud.exception.InvalidParameterValueException;
|
||||
import com.cloud.network.ExternalNetworkManager;
|
||||
import com.cloud.network.ExternalNetworkDeviceManager;
|
||||
import com.cloud.server.ManagementService;
|
||||
import com.cloud.user.Account;
|
||||
import com.cloud.utils.component.ComponentLocator;
|
||||
|
|
@ -71,7 +71,7 @@ public class DeleteExternalLoadBalancerCmd extends BaseCmd {
|
|||
public void execute(){
|
||||
try {
|
||||
ComponentLocator locator = ComponentLocator.getLocator(ManagementService.Name);
|
||||
ExternalNetworkManager externalNetworkMgr = locator.getManager(ExternalNetworkManager.class);
|
||||
ExternalNetworkDeviceManager externalNetworkMgr = locator.getManager(ExternalNetworkDeviceManager.class);
|
||||
boolean result = externalNetworkMgr.deleteExternalLoadBalancer(this);
|
||||
if (result) {
|
||||
SuccessResponse response = new SuccessResponse(getCommandName());
|
||||
|
|
|
|||
|
|
@ -28,9 +28,10 @@ import com.cloud.api.ApiConstants;
|
|||
import com.cloud.api.BaseListCmd;
|
||||
import com.cloud.api.Implementation;
|
||||
import com.cloud.api.Parameter;
|
||||
import com.cloud.api.BaseCmd.CommandType;
|
||||
import com.cloud.api.response.ListResponse;
|
||||
import com.cloud.host.Host;
|
||||
import com.cloud.network.ExternalNetworkManager;
|
||||
import com.cloud.network.ExternalNetworkDeviceManager;
|
||||
import com.cloud.server.ManagementService;
|
||||
import com.cloud.server.api.response.ExternalFirewallResponse;
|
||||
import com.cloud.utils.component.ComponentLocator;
|
||||
|
|
@ -47,6 +48,11 @@ public class ListExternalFirewallsCmd extends BaseListCmd {
|
|||
@Parameter(name=ApiConstants.ZONE_ID, type=CommandType.LONG, required = true, description="zone Id")
|
||||
private long zoneId;
|
||||
|
||||
@Parameter(name=ApiConstants.NETWORK_ID, type=CommandType.LONG, description="Pyshical network in the zone from which which external load balancer appliance will be listed.")
|
||||
private Long networkId;
|
||||
|
||||
@Parameter(name=ApiConstants.NETWORK_DEVICE_TYPE, type=CommandType.STRING, description="External firewall type. Now supports only JuniperSRXFirewall.")
|
||||
private String type;
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
/////////////////// Accessors ///////////////////////
|
||||
|
|
@ -56,6 +62,14 @@ public class ListExternalFirewallsCmd extends BaseListCmd {
|
|||
return zoneId;
|
||||
}
|
||||
|
||||
public Long getNetworkId() {
|
||||
return networkId;
|
||||
}
|
||||
|
||||
public String getDeviceType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
/////////////// API Implementation///////////////////
|
||||
/////////////////////////////////////////////////////
|
||||
|
|
@ -68,7 +82,7 @@ public class ListExternalFirewallsCmd extends BaseListCmd {
|
|||
@Override
|
||||
public void execute(){
|
||||
ComponentLocator locator = ComponentLocator.getLocator(ManagementService.Name);
|
||||
ExternalNetworkManager externalNetworkMgr = locator.getManager(ExternalNetworkManager.class);
|
||||
ExternalNetworkDeviceManager externalNetworkMgr = locator.getManager(ExternalNetworkDeviceManager.class);
|
||||
List<? extends Host> externalFirewalls = externalNetworkMgr.listExternalFirewalls(this);
|
||||
|
||||
ListResponse<ExternalFirewallResponse> listResponse = new ListResponse<ExternalFirewallResponse>();
|
||||
|
|
|
|||
|
|
@ -28,10 +28,11 @@ import com.cloud.api.ApiConstants;
|
|||
import com.cloud.api.BaseListCmd;
|
||||
import com.cloud.api.Implementation;
|
||||
import com.cloud.api.Parameter;
|
||||
import com.cloud.api.BaseCmd.CommandType;
|
||||
import com.cloud.api.response.HostResponse;
|
||||
import com.cloud.api.response.ListResponse;
|
||||
import com.cloud.host.Host;
|
||||
import com.cloud.network.ExternalNetworkManager;
|
||||
import com.cloud.network.ExternalNetworkDeviceManager;
|
||||
import com.cloud.server.ManagementService;
|
||||
import com.cloud.server.api.response.ExternalLoadBalancerResponse;
|
||||
import com.cloud.utils.component.ComponentLocator;
|
||||
|
|
@ -48,6 +49,11 @@ public class ListExternalLoadBalancersCmd extends BaseListCmd {
|
|||
@Parameter(name=ApiConstants.ZONE_ID, type=CommandType.LONG, description="zone Id")
|
||||
private long zoneId;
|
||||
|
||||
@Parameter(name=ApiConstants.NETWORK_ID, type=CommandType.LONG, description="Pyshical network in the zone from which which external load balancer appliance will be listed.")
|
||||
private Long networkId;
|
||||
|
||||
@Parameter(name=ApiConstants.NETWORK_DEVICE_TYPE, type=CommandType.STRING, description="External load balancer type. Now supports NetscalerLoadBalancer, F5BigIpLoadBalancer.")
|
||||
private String type;
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
/////////////////// Accessors ///////////////////////
|
||||
|
|
@ -57,6 +63,14 @@ public class ListExternalLoadBalancersCmd extends BaseListCmd {
|
|||
return zoneId;
|
||||
}
|
||||
|
||||
public Long getNetworkId() {
|
||||
return networkId;
|
||||
}
|
||||
|
||||
public String getDeviceType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
/////////////// API Implementation///////////////////
|
||||
/////////////////////////////////////////////////////
|
||||
|
|
@ -69,7 +83,7 @@ public class ListExternalLoadBalancersCmd extends BaseListCmd {
|
|||
@Override
|
||||
public void execute(){
|
||||
ComponentLocator locator = ComponentLocator.getLocator(ManagementService.Name);
|
||||
ExternalNetworkManager externalNetworkMgr = locator.getManager(ExternalNetworkManager.class);
|
||||
ExternalNetworkDeviceManager externalNetworkMgr = locator.getManager(ExternalNetworkDeviceManager.class);
|
||||
List<? extends Host> externalLoadBalancers = externalNetworkMgr.listExternalLoadBalancers(this);
|
||||
|
||||
ListResponse<ExternalLoadBalancerResponse> listResponse = new ListResponse<ExternalLoadBalancerResponse>();
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ public class ListNetworkDeviceCmd extends BaseListCmd {
|
|||
//////////////// API parameters /////////////////////
|
||||
/////////////////////////////////////////////////////
|
||||
|
||||
@Parameter(name = ApiConstants.NETWORK_DEVICE_TYPE, type = CommandType.STRING, description = "Network device type, now supports ExternalDhcp, ExternalFirewall, ExternalLoadBalancer, PxeServer")
|
||||
@Parameter(name = ApiConstants.NETWORK_DEVICE_TYPE, type = CommandType.STRING, description = "Network device type, now supports ExternalDhcp, PxeServer, NetscalerLoadBalancer, F5BigIpLoadBalancer, JuniperSRXFirewall")
|
||||
private String type;
|
||||
|
||||
@Parameter(name = ApiConstants.NETWORK_DEVICE_PARAMETER_LIST, type = CommandType.MAP, description = "parameters for network device")
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ import com.cloud.netapp.NetappManagerImpl;
|
|||
import com.cloud.netapp.dao.LunDaoImpl;
|
||||
import com.cloud.netapp.dao.PoolDaoImpl;
|
||||
import com.cloud.netapp.dao.VolumeDaoImpl;
|
||||
import com.cloud.network.ExternalNetworkManagerImpl;
|
||||
import com.cloud.network.ExternalNetworkDeviceManagerImpl;
|
||||
import com.cloud.network.NetworkDeviceManagerImpl;
|
||||
import com.cloud.network.NetworkUsageManagerImpl;
|
||||
import com.cloud.secstorage.CommandExecLogDaoImpl;
|
||||
|
|
@ -66,7 +66,7 @@ public class PremiumComponentLibrary extends DefaultComponentLibrary {
|
|||
|
||||
addManager("HA Manager", HighAvailabilityManagerExtImpl.class);
|
||||
addManager("VMWareManager", VmwareManagerImpl.class);
|
||||
addManager("ExternalNetworkManager", ExternalNetworkManagerImpl.class);
|
||||
addManager("ExternalNetworkManager", ExternalNetworkDeviceManagerImpl.class);
|
||||
addManager("BareMetalVmManager", BareMetalVmManagerImpl.class);
|
||||
addManager("ExternalDhcpManager", ExternalDhcpManagerImpl.class);
|
||||
addManager("PxeServerManager", PxeServerManagerImpl.class);
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@
|
|||
package com.cloud.network;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.cloud.api.commands.AddExternalFirewallCmd;
|
||||
import com.cloud.api.commands.AddExternalLoadBalancerCmd;
|
||||
|
|
@ -30,38 +31,29 @@ import com.cloud.api.commands.ListExternalLoadBalancersCmd;
|
|||
import com.cloud.exception.ResourceUnavailableException;
|
||||
import com.cloud.host.Host;
|
||||
import com.cloud.host.HostVO;
|
||||
import com.cloud.network.NetworkDeviceManager.NetworkDeviceType;
|
||||
import com.cloud.network.rules.FirewallRule;
|
||||
import com.cloud.offering.NetworkOffering;
|
||||
import com.cloud.server.api.response.ExternalFirewallResponse;
|
||||
import com.cloud.server.api.response.ExternalLoadBalancerResponse;
|
||||
import com.cloud.utils.component.Manager;
|
||||
|
||||
public interface ExternalNetworkManager extends Manager {
|
||||
|
||||
public static class ExternalNetworkDeviceType {
|
||||
private String _name;
|
||||
|
||||
public static final ExternalNetworkDeviceType F5BigIP = new ExternalNetworkDeviceType("F5BigIP");
|
||||
public static final ExternalNetworkDeviceType JuniperSRX = new ExternalNetworkDeviceType("JuniperSRX");
|
||||
public static final ExternalNetworkDeviceType NetscalerMPX = new ExternalNetworkDeviceType("NetscalerMPX");
|
||||
|
||||
public ExternalNetworkDeviceType(String name) {
|
||||
_name = name;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return _name;
|
||||
}
|
||||
}
|
||||
public interface ExternalNetworkDeviceManager extends Manager {
|
||||
|
||||
// External Firewall methods
|
||||
|
||||
public Host addExternalFirewall(AddExternalFirewallCmd cmd);
|
||||
|
||||
|
||||
public Host addExternalFirewall(Long zoneId, Long physicalNetworkId, String deviceType, Map deviceParamList);
|
||||
|
||||
public boolean deleteExternalFirewall(DeleteExternalFirewallCmd cmd);
|
||||
|
||||
public List<HostVO> listExternalFirewalls(ListExternalFirewallsCmd cmd);
|
||||
public boolean deleteExternalFirewall(Long hostId);
|
||||
|
||||
public List<Host> listExternalFirewalls(ListExternalFirewallsCmd cmd);
|
||||
|
||||
public List<Host> listExternalFirewalls(Long zoneId, Long networkId, String deviceType);
|
||||
|
||||
public ExternalFirewallResponse createExternalFirewallResponse(Host externalFirewall);
|
||||
|
||||
public boolean manageGuestNetworkWithExternalFirewall(boolean add, Network network, NetworkOffering offering) throws ResourceUnavailableException;
|
||||
|
|
@ -78,9 +70,15 @@ public interface ExternalNetworkManager extends Manager {
|
|||
|
||||
public Host addExternalLoadBalancer(AddExternalLoadBalancerCmd cmd);
|
||||
|
||||
public Host addExternalLoadBalancer(Long zoneId, Long physicalNetworkId, String deviceType, Map deviceParamList);
|
||||
|
||||
public boolean deleteExternalLoadBalancer(DeleteExternalLoadBalancerCmd cmd);
|
||||
|
||||
public boolean deleteExternalLoadBalancer(Long hostId);
|
||||
|
||||
public List<HostVO> listExternalLoadBalancers(ListExternalLoadBalancersCmd cmd);
|
||||
public List<Host> listExternalLoadBalancers(ListExternalLoadBalancersCmd cmd);
|
||||
|
||||
public List<Host> listExternalLoadBalancers(Long zoneId, Long networkId, String deviceType);
|
||||
|
||||
public ExternalLoadBalancerResponse createExternalLoadBalancerResponse(Host externalLoadBalancer);
|
||||
|
||||
|
|
@ -48,6 +48,7 @@ import com.cloud.agent.api.to.IpAddressTO;
|
|||
import com.cloud.agent.api.to.LoadBalancerTO;
|
||||
import com.cloud.agent.api.to.PortForwardingRuleTO;
|
||||
import com.cloud.agent.api.to.StaticNatRuleTO;
|
||||
import com.cloud.api.ApiConstants;
|
||||
import com.cloud.api.commands.AddExternalFirewallCmd;
|
||||
import com.cloud.api.commands.AddExternalLoadBalancerCmd;
|
||||
import com.cloud.api.commands.DeleteExternalFirewallCmd;
|
||||
|
|
@ -71,6 +72,7 @@ import com.cloud.host.Host;
|
|||
import com.cloud.host.HostVO;
|
||||
import com.cloud.host.dao.HostDao;
|
||||
import com.cloud.host.dao.HostDetailsDao;
|
||||
import com.cloud.network.NetworkDeviceManager.NetworkDeviceType;
|
||||
import com.cloud.network.Networks.TrafficType;
|
||||
import com.cloud.network.dao.IPAddressDao;
|
||||
import com.cloud.network.dao.InlineLoadBalancerNicMapDao;
|
||||
|
|
@ -121,8 +123,8 @@ import com.cloud.vm.NicVO;
|
|||
import com.cloud.vm.dao.DomainRouterDao;
|
||||
import com.cloud.vm.dao.NicDao;
|
||||
|
||||
@Local(value = {ExternalNetworkManager.class})
|
||||
public class ExternalNetworkManagerImpl implements ExternalNetworkManager {
|
||||
@Local(value = {ExternalNetworkDeviceManager.class})
|
||||
public class ExternalNetworkDeviceManagerImpl implements ExternalNetworkDeviceManager {
|
||||
public enum ExternalNetworkResourceName {
|
||||
JuniperSrx,
|
||||
F5BigIp,
|
||||
|
|
@ -153,7 +155,7 @@ public class ExternalNetworkManagerImpl implements ExternalNetworkManager {
|
|||
ScheduledExecutorService _executor;
|
||||
int _externalNetworkStatsInterval;
|
||||
|
||||
private static final org.apache.log4j.Logger s_logger = Logger.getLogger(ExternalNetworkManagerImpl.class);
|
||||
private static final org.apache.log4j.Logger s_logger = Logger.getLogger(ExternalNetworkDeviceManagerImpl.class);
|
||||
protected String _name;
|
||||
|
||||
@Override
|
||||
|
|
@ -205,10 +207,24 @@ public class ExternalNetworkManagerImpl implements ExternalNetworkManager {
|
|||
|
||||
@Override
|
||||
public Host addExternalLoadBalancer(AddExternalLoadBalancerCmd cmd) {
|
||||
long zoneId = cmd.getZoneId();
|
||||
Long zoneId = cmd.getZoneId();
|
||||
Long networkId = cmd.getNetworkId();
|
||||
String deviceType = cmd.getDeviceType();
|
||||
Map deviceParams = new HashMap<String, String>();
|
||||
deviceParams.put(ApiConstants.USERNAME, cmd.getUsername());
|
||||
deviceParams.put(ApiConstants.PASSWORD, cmd.getPassword());
|
||||
deviceParams.put(ApiConstants.URL, cmd.getUrl());
|
||||
return addExternalLoadBalancer(zoneId, networkId, deviceType, deviceParams);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Host addExternalLoadBalancer(Long zoneId, Long networkId, String deviceType, Map deviceParamList) {
|
||||
|
||||
ServerResource resource =null;
|
||||
String guid;
|
||||
String deviceType;
|
||||
String url = (String) deviceParamList.get(ApiConstants.URL);
|
||||
String username = (String) deviceParamList.get(ApiConstants.USERNAME);
|
||||
String password = (String) deviceParamList.get(ApiConstants.PASSWORD);
|
||||
|
||||
DataCenterVO zone = _dcDao.findById(zoneId);
|
||||
String zoneName;
|
||||
|
|
@ -225,15 +241,14 @@ public class ExternalNetworkManagerImpl implements ExternalNetworkManager {
|
|||
|
||||
URI uri;
|
||||
try {
|
||||
uri = new URI(cmd.getUrl());
|
||||
uri = new URI(url);
|
||||
} catch (Exception e) {
|
||||
s_logger.debug(e);
|
||||
throw new InvalidParameterValueException(e.getMessage());
|
||||
}
|
||||
|
||||
String ipAddress = uri.getHost();
|
||||
String username = cmd.getUsername();
|
||||
String password = cmd.getPassword();
|
||||
|
||||
Map<String, String> params = new HashMap<String, String>();
|
||||
UrlUtil.parseQueryParameters(uri.getQuery(), true, params);
|
||||
String publicInterface = params.get("publicinterface");
|
||||
|
|
@ -253,15 +268,14 @@ public class ExternalNetworkManagerImpl implements ExternalNetworkManager {
|
|||
numRetries = "1";
|
||||
}
|
||||
|
||||
deviceType = cmd.getType();
|
||||
if (deviceType ==null) {
|
||||
deviceType = ExternalNetworkDeviceType.NetscalerMPX.getName(); //TODO: default it to NetscalerMPX for now, till UI support Netscaler & F5
|
||||
deviceType = NetworkDeviceType.NetscalerLoadBalancer.getName(); //TODO: default it to Netscaler LB for now, till UI support Netscaler & F5
|
||||
}
|
||||
|
||||
if (deviceType.equalsIgnoreCase(ExternalNetworkDeviceType.F5BigIP.getName())) {
|
||||
if (deviceType.equalsIgnoreCase(NetworkDeviceType.F5BigIpLoadBalancer.getName())) {
|
||||
resource = new F5BigIpResource();
|
||||
guid = getExternalNetworkResourceGuid(zoneId, ExternalNetworkResourceName.F5BigIp, ipAddress);
|
||||
} else if (deviceType.equalsIgnoreCase(ExternalNetworkDeviceType.NetscalerMPX.getName())) {
|
||||
} else if (deviceType.equalsIgnoreCase(NetworkDeviceType.NetscalerLoadBalancer.getName())) {
|
||||
resource = new NetscalerMPXResource();
|
||||
guid = getExternalNetworkResourceGuid(zoneId, ExternalNetworkResourceName.NetscalerMPX, ipAddress);
|
||||
} else {
|
||||
|
|
@ -289,9 +303,9 @@ public class ExternalNetworkManagerImpl implements ExternalNetworkManager {
|
|||
|
||||
Host host = _agentMgr.addHost(zoneId, resource, Host.Type.ExternalLoadBalancer, hostDetails);
|
||||
if (host != null) {
|
||||
if (deviceType.equalsIgnoreCase(ExternalNetworkDeviceType.F5BigIP.getName())) {
|
||||
if (deviceType.equalsIgnoreCase(NetworkDeviceType.F5BigIpLoadBalancer.getName())) {
|
||||
zone.setLoadBalancerProvider(Network.Provider.F5BigIp.getName());
|
||||
} else if (deviceType.equalsIgnoreCase(ExternalNetworkDeviceType.NetscalerMPX.getName())) {
|
||||
} else if (deviceType.equalsIgnoreCase(NetworkDeviceType.NetscalerLoadBalancer.getName())) {
|
||||
zone.setLoadBalancerProvider(Network.Provider.NetscalerMPX.getName());
|
||||
}
|
||||
_dcDao.update(zone.getId(), zone);
|
||||
|
|
@ -303,7 +317,11 @@ public class ExternalNetworkManagerImpl implements ExternalNetworkManager {
|
|||
|
||||
@Override
|
||||
public boolean deleteExternalLoadBalancer(DeleteExternalLoadBalancerCmd cmd) {
|
||||
long hostId = cmd.getId();
|
||||
return deleteExternalLoadBalancer(cmd.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean deleteExternalLoadBalancer(Long hostId) {
|
||||
User caller = _accountMgr.getActiveUser(UserContext.current().getCallerUserId());
|
||||
HostVO externalLoadBalancer = _hostDao.findById(hostId);
|
||||
if (externalLoadBalancer == null) {
|
||||
|
|
@ -331,9 +349,21 @@ public class ExternalNetworkManagerImpl implements ExternalNetworkManager {
|
|||
}
|
||||
|
||||
@Override
|
||||
public List<HostVO> listExternalLoadBalancers(ListExternalLoadBalancersCmd cmd) {
|
||||
long zoneId = cmd.getZoneId();
|
||||
return _hostDao.listByTypeDataCenter(Host.Type.ExternalLoadBalancer, zoneId);
|
||||
public List<Host> listExternalLoadBalancers(ListExternalLoadBalancersCmd cmd) {
|
||||
List<Host> lbHosts = new ArrayList<Host>();
|
||||
if (NetworkDeviceType.NetscalerLoadBalancer.getName().equalsIgnoreCase(cmd.getDeviceType())) {
|
||||
lbHosts.addAll(listExternalLoadBalancers(cmd.getZoneId(), cmd.getNetworkId(), NetworkDeviceType.NetscalerLoadBalancer.getName()));
|
||||
} else if (NetworkDeviceType.F5BigIpLoadBalancer.getName().equalsIgnoreCase(cmd.getDeviceType())) {
|
||||
lbHosts.addAll(listExternalLoadBalancers(cmd.getZoneId(), cmd.getNetworkId(), NetworkDeviceType.F5BigIpLoadBalancer.getName()));
|
||||
}
|
||||
return lbHosts;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Host> listExternalLoadBalancers(Long zoneId, Long networkId, String type) {
|
||||
List<Host> lbHosts = new ArrayList<Host>();
|
||||
lbHosts.addAll(_hostDao.listByTypeDataCenter(Host.Type.ExternalLoadBalancer, zoneId));
|
||||
return lbHosts;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -524,10 +554,24 @@ public class ExternalNetworkManagerImpl implements ExternalNetworkManager {
|
|||
|
||||
@Override
|
||||
public Host addExternalFirewall(AddExternalFirewallCmd cmd) {
|
||||
long zoneId = cmd.getZoneId();
|
||||
String deviceType;
|
||||
Long zoneId = cmd.getZoneId();
|
||||
Long networkId = cmd.getNetworkId();
|
||||
String deviceType = cmd.getDeviceType();
|
||||
Map deviceParams = new HashMap<String, String>();
|
||||
deviceParams.put(ApiConstants.USERNAME, cmd.getUsername());
|
||||
deviceParams.put(ApiConstants.URL, cmd.getUrl());
|
||||
deviceParams.put(ApiConstants.PASSWORD, cmd.getPassword());
|
||||
return addExternalFirewall(zoneId, networkId, deviceType, deviceParams);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Host addExternalFirewall(Long zoneId, Long networkId, String deviceType, Map deviceParamList) {
|
||||
|
||||
DataCenterVO zone = _dcDao.findById(zoneId);
|
||||
String url = (String) deviceParamList.get(ApiConstants.URL);
|
||||
String username = (String) deviceParamList.get(ApiConstants.USERNAME);
|
||||
String password = (String) deviceParamList.get(ApiConstants.PASSWORD);
|
||||
|
||||
String zoneName;
|
||||
if (zone == null) {
|
||||
throw new InvalidParameterValueException("Could not find zone with ID: " + zoneId);
|
||||
|
|
@ -542,15 +586,13 @@ public class ExternalNetworkManagerImpl implements ExternalNetworkManager {
|
|||
|
||||
URI uri;
|
||||
try {
|
||||
uri = new URI(cmd.getUrl());
|
||||
uri = new URI(url);
|
||||
} catch (Exception e) {
|
||||
s_logger.debug(e);
|
||||
throw new InvalidParameterValueException(e.getMessage());
|
||||
}
|
||||
|
||||
String ipAddress = uri.getHost();
|
||||
String username = cmd.getUsername();
|
||||
String password = cmd.getPassword();
|
||||
Map<String, String> params = new HashMap<String, String>();
|
||||
UrlUtil.parseQueryParameters(uri.getQuery(), true, params);
|
||||
String publicInterface = params.get("publicinterface");
|
||||
|
|
@ -597,11 +639,10 @@ public class ExternalNetworkManagerImpl implements ExternalNetworkManager {
|
|||
timeout = "300";
|
||||
}
|
||||
|
||||
deviceType = cmd.getType();
|
||||
if (deviceType ==null) {
|
||||
deviceType = ExternalNetworkDeviceType.JuniperSRX.getName(); //default it to Juniper for now
|
||||
deviceType = NetworkDeviceType.JuniperSRXFirewall.getName(); //default it to Juniper for now
|
||||
}
|
||||
if (deviceType.equalsIgnoreCase(ExternalNetworkDeviceType.JuniperSRX.getName())) {
|
||||
if (deviceType.equalsIgnoreCase(NetworkDeviceType.JuniperSRXFirewall.getName())) {
|
||||
resource = new JuniperSrxResource();
|
||||
guid = getExternalNetworkResourceGuid(zoneId, ExternalNetworkResourceName.JuniperSrx, ipAddress);
|
||||
} else {
|
||||
|
|
@ -663,7 +704,11 @@ public class ExternalNetworkManagerImpl implements ExternalNetworkManager {
|
|||
|
||||
@Override
|
||||
public boolean deleteExternalFirewall(DeleteExternalFirewallCmd cmd) {
|
||||
long hostId = cmd.getId();
|
||||
return deleteExternalFirewall(cmd.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean deleteExternalFirewall(Long hostId) {
|
||||
User caller = _accountMgr.getActiveUser(UserContext.current().getCallerUserId());
|
||||
HostVO externalFirewall = _hostDao.findById(hostId);
|
||||
if (externalFirewall == null) {
|
||||
|
|
@ -708,11 +753,22 @@ public class ExternalNetworkManagerImpl implements ExternalNetworkManager {
|
|||
}
|
||||
|
||||
@Override
|
||||
public List<HostVO> listExternalFirewalls(ListExternalFirewallsCmd cmd) {
|
||||
long zoneId = cmd.getZoneId();
|
||||
return _hostDao.listByTypeDataCenter(Host.Type.ExternalFirewall, zoneId);
|
||||
public List<Host> listExternalFirewalls(ListExternalFirewallsCmd cmd) {
|
||||
List<Host> firewallHosts = new ArrayList<Host>();
|
||||
if (NetworkDeviceType.JuniperSRXFirewall.getName().equalsIgnoreCase(cmd.getDeviceType())) {
|
||||
firewallHosts.addAll(listExternalFirewalls(cmd.getZoneId(), cmd.getNetworkId(), NetworkDeviceType.JuniperSRXFirewall.getName()));
|
||||
}
|
||||
return firewallHosts;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Host> listExternalFirewalls(Long zoneId, Long networkId, String type) {
|
||||
List<Host> firewallHosts = new ArrayList<Host>();
|
||||
firewallHosts.addAll(_hostDao.listByTypeDataCenter(Host.Type.ExternalFirewall, zoneId));
|
||||
return firewallHosts;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExternalFirewallResponse createExternalFirewallResponse(Host externalFirewall) {
|
||||
Map<String, String> fwDetails = _detailsDao.findDetails(externalFirewall.getId());
|
||||
|
|
@ -15,6 +15,9 @@ public interface NetworkDeviceManager extends Manager {
|
|||
|
||||
public static final NetworkDeviceType ExternalDhcp = new NetworkDeviceType("ExternalDhcp");
|
||||
public static final NetworkDeviceType PxeServer = new NetworkDeviceType("PxeServer");
|
||||
public static final NetworkDeviceType NetscalerLoadBalancer = new NetworkDeviceType("NetscalerLoadBalancer");
|
||||
public static final NetworkDeviceType F5BigIpLoadBalancer = new NetworkDeviceType("F5BigIpLoadBalancer");
|
||||
public static final NetworkDeviceType JuniperSRXFirewall = new NetworkDeviceType("JuniperSRXFirewall");
|
||||
|
||||
public NetworkDeviceType(String name) {
|
||||
_name = name;
|
||||
|
|
@ -24,12 +27,12 @@ public interface NetworkDeviceManager extends Manager {
|
|||
return _name;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public Host addNetworkDevice(AddNetworkDeviceCmd cmd);
|
||||
|
||||
public NetworkDeviceResponse getApiResponse(Host device);
|
||||
|
||||
public List<Host> listNetworkDevice(ListNetworkDeviceCmd cmd);
|
||||
public List<Host> listNetworkDevice(ListNetworkDeviceCmd cmd);
|
||||
|
||||
public boolean deleteNetworkDevice(DeleteNetworkDeviceCmd cmd);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ import com.cloud.baremetal.PxeServerProfile;
|
|||
import com.cloud.exception.InvalidParameterValueException;
|
||||
import com.cloud.host.Host;
|
||||
import com.cloud.host.HostVO;
|
||||
import com.cloud.host.Host.Type;
|
||||
import com.cloud.host.dao.HostDao;
|
||||
import com.cloud.server.api.response.NetworkDeviceResponse;
|
||||
import com.cloud.server.api.response.NwDeviceDhcpResponse;
|
||||
|
|
@ -38,7 +39,7 @@ public class NetworkDeviceManagerImpl implements NetworkDeviceManager {
|
|||
@Inject ExternalDhcpManager _dhcpMgr;
|
||||
@Inject PxeServerManager _pxeMgr;
|
||||
@Inject HostDao _hostDao;
|
||||
|
||||
@Inject ExternalNetworkDeviceManager _externalNetworkDeviceMgr;
|
||||
@Override
|
||||
public boolean configure(String name, Map<String, Object> params) throws ConfigurationException {
|
||||
_name = name;
|
||||
|
|
@ -93,7 +94,16 @@ public class NetworkDeviceManagerImpl implements NetworkDeviceManager {
|
|||
PxeServerProfile profile = new PxeServerProfile(zoneId, podId, url, username, password, type, pingStorageServerIp, pingDir, tftpDir,
|
||||
pingCifsUsername, pingCifsPassword);
|
||||
return _pxeMgr.addPxeServer(profile);
|
||||
|
||||
} else if (cmd.getType().equalsIgnoreCase(NetworkDeviceType.JuniperSRXFirewall.getName())) {
|
||||
Long zoneId = Long.parseLong((String) params.get(ApiConstants.ZONE_ID));
|
||||
Long networkId = (params.get(ApiConstants.NETWORK_ID)==null)?Long.parseLong((String)params.get(ApiConstants.NETWORK_ID)):null;
|
||||
return _externalNetworkDeviceMgr.addExternalFirewall(zoneId, networkId, NetworkDeviceType.JuniperSRXFirewall.getName(), cmd.getParamList());
|
||||
} else if (cmd.getType().equalsIgnoreCase(NetworkDeviceType.NetscalerLoadBalancer.getName())) {
|
||||
Long zoneId = Long.parseLong((String) params.get(ApiConstants.ZONE_ID));
|
||||
return _externalNetworkDeviceMgr.addExternalLoadBalancer(zoneId, null, NetworkDeviceType.NetscalerLoadBalancer.getName(), cmd.getParamList());
|
||||
} else if (cmd.getType().equalsIgnoreCase(NetworkDeviceType.F5BigIpLoadBalancer.getName())) {
|
||||
Long zoneId = Long.parseLong((String) params.get(ApiConstants.ZONE_ID));
|
||||
return _externalNetworkDeviceMgr.addExternalLoadBalancer(zoneId, null, NetworkDeviceType.F5BigIpLoadBalancer.getName(), cmd.getParamList());
|
||||
} else {
|
||||
throw new CloudRuntimeException("Unsupported network device type:" + cmd.getType());
|
||||
}
|
||||
|
|
@ -169,15 +179,31 @@ public class NetworkDeviceManagerImpl implements NetworkDeviceManager {
|
|||
Long zoneId = Long.parseLong((String) params.get(ApiConstants.ZONE_ID));
|
||||
Long podId = Long.parseLong((String)params.get(ApiConstants.POD_ID));
|
||||
res = listNetworkDevice(zoneId, podId, Host.Type.PxeServer);
|
||||
} else if (NetworkDeviceType.F5BigIpLoadBalancer.getName().equalsIgnoreCase(cmd.getType())) {
|
||||
Long zoneId = Long.parseLong((String) params.get(ApiConstants.ZONE_ID));
|
||||
Long networkId = Long.parseLong((String) params.get(ApiConstants.NETWORK_ID));
|
||||
return _externalNetworkDeviceMgr.listExternalLoadBalancers(zoneId, networkId, NetworkDeviceType.F5BigIpLoadBalancer.getName());
|
||||
} else if (NetworkDeviceType.NetscalerLoadBalancer.getName().equalsIgnoreCase(cmd.getType())) {
|
||||
Long zoneId = Long.parseLong((String) params.get(ApiConstants.ZONE_ID));
|
||||
Long networkId = Long.parseLong((String) params.get(ApiConstants.NETWORK_ID));
|
||||
return _externalNetworkDeviceMgr.listExternalLoadBalancers(zoneId, networkId, NetworkDeviceType.NetscalerLoadBalancer.getName());
|
||||
} else if (NetworkDeviceType.JuniperSRXFirewall.getName().equalsIgnoreCase(cmd.getType())) {
|
||||
Long zoneId = Long.parseLong((String) params.get(ApiConstants.ZONE_ID));
|
||||
Long networkId = Long.parseLong((String) params.get(ApiConstants.NETWORK_ID));
|
||||
return _externalNetworkDeviceMgr.listExternalFirewalls(zoneId, networkId, NetworkDeviceType.JuniperSRXFirewall.getName());
|
||||
} else if (cmd.getType() == null){
|
||||
Long zoneId = Long.parseLong((String) params.get(ApiConstants.ZONE_ID));
|
||||
Long podId = Long.parseLong((String)params.get(ApiConstants.POD_ID));
|
||||
List<Host> res1 = listNetworkDevice(zoneId, podId, Host.Type.PxeServer);
|
||||
List<Host> res2 = listNetworkDevice(zoneId, podId, Host.Type.ExternalDhcp);
|
||||
List<Host> res3 = new ArrayList<Host>();
|
||||
res3.addAll(res1);
|
||||
res3.addAll(res2);
|
||||
res = res3;
|
||||
List<Host> res3 = listNetworkDevice(zoneId, podId, Host.Type.ExternalLoadBalancer);
|
||||
List<Host> res4 = listNetworkDevice(zoneId, podId, Host.Type.ExternalFirewall);
|
||||
List<Host> deviceAll = new ArrayList<Host>();
|
||||
deviceAll.addAll(res1);
|
||||
deviceAll.addAll(res2);
|
||||
deviceAll.addAll(res3);
|
||||
deviceAll.addAll(res4);
|
||||
res = deviceAll;
|
||||
} else {
|
||||
throw new CloudRuntimeException("Unknown network device type:" + cmd.getType());
|
||||
}
|
||||
|
|
@ -187,7 +213,12 @@ public class NetworkDeviceManagerImpl implements NetworkDeviceManager {
|
|||
|
||||
@Override
|
||||
public boolean deleteNetworkDevice(DeleteNetworkDeviceCmd cmd) {
|
||||
// TODO Auto-generated method stub
|
||||
return true;
|
||||
HostVO device = _hostDao.findById(cmd.getId());
|
||||
if (device.getType() == Type.ExternalLoadBalancer) {
|
||||
return _externalNetworkDeviceMgr.deleteExternalLoadBalancer(cmd.getId());
|
||||
} else if (device.getType() == Type.ExternalLoadBalancer) {
|
||||
return _externalNetworkDeviceMgr.deleteExternalFirewall(cmd.getId());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -106,6 +106,7 @@ import com.cloud.network.dao.PhysicalNetworkDao;
|
|||
import com.cloud.network.dao.PhysicalNetworkServiceProviderDao;
|
||||
import com.cloud.network.dao.PhysicalNetworkServiceProviderVO;
|
||||
import com.cloud.network.element.FirewallServiceProvider;
|
||||
import com.cloud.network.element.LoadBalancingServiceProvider;
|
||||
import com.cloud.network.element.NetworkElement;
|
||||
import com.cloud.network.element.PasswordServiceProvider;
|
||||
import com.cloud.network.element.RemoteAccessVPNServiceProvider;
|
||||
|
|
@ -2369,12 +2370,19 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
|||
int found = 0;
|
||||
for (NetworkElement ne : _networkElements) {
|
||||
try {
|
||||
if (!(ne instanceof FirewallServiceProvider)) {
|
||||
if (!(ne instanceof FirewallServiceProvider) && !(ne instanceof LoadBalancingServiceProvider)) {
|
||||
continue;
|
||||
}
|
||||
FirewallServiceProvider e = (FirewallServiceProvider)ne;
|
||||
found ++;
|
||||
boolean handled = e.applyRules(network, rules);
|
||||
boolean handled;
|
||||
if (ne instanceof FirewallServiceProvider) {
|
||||
FirewallServiceProvider e = (FirewallServiceProvider)ne;
|
||||
handled = e.applyRules(network, rules);
|
||||
} else {
|
||||
LoadBalancingServiceProvider e = (LoadBalancingServiceProvider) ne;
|
||||
handled = e.applyRules(network, rules);
|
||||
}
|
||||
|
||||
s_logger.debug("Network Rules for network " + network.getId() + " were " + (handled ? "" : " not") + " handled by " + ne.getName());
|
||||
} catch (ResourceUnavailableException e) {
|
||||
if (!continueOnError) {
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ import com.cloud.vm.VirtualMachineProfile;
|
|||
|
||||
|
||||
@Local(value=NetworkElement.class)
|
||||
public class ElasticLoadBalancerElement extends AdapterBase implements FirewallServiceProvider {
|
||||
public class ElasticLoadBalancerElement extends AdapterBase implements LoadBalancingServiceProvider {
|
||||
private static final Logger s_logger = Logger.getLogger(ElasticLoadBalancerElement.class);
|
||||
private static final Map<Service, Map<Capability, String>> capabilities = setCapabilities();
|
||||
@Inject NetworkManager _networkManager;
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ import com.cloud.exception.ConcurrentOperationException;
|
|||
import com.cloud.exception.InsufficientCapacityException;
|
||||
import com.cloud.exception.InsufficientNetworkCapacityException;
|
||||
import com.cloud.exception.ResourceUnavailableException;
|
||||
import com.cloud.network.ExternalNetworkManager;
|
||||
import com.cloud.network.ExternalNetworkDeviceManager;
|
||||
import com.cloud.network.Network;
|
||||
import com.cloud.network.Network.Capability;
|
||||
import com.cloud.network.Network.Provider;
|
||||
|
|
@ -53,12 +53,12 @@ import com.cloud.vm.VirtualMachine;
|
|||
import com.cloud.vm.VirtualMachineProfile;
|
||||
|
||||
@Local(value=NetworkElement.class)
|
||||
public class F5ExternalLoadBalancerElement extends AdapterBase implements FirewallServiceProvider {
|
||||
public class F5ExternalLoadBalancerElement extends AdapterBase implements LoadBalancingServiceProvider {
|
||||
|
||||
private static final Logger s_logger = Logger.getLogger(F5ExternalLoadBalancerElement.class);
|
||||
|
||||
@Inject NetworkManager _networkManager;
|
||||
@Inject ExternalNetworkManager _externalNetworkManager;
|
||||
@Inject ExternalNetworkDeviceManager _externalNetworkManager;
|
||||
@Inject ConfigurationManager _configMgr;
|
||||
|
||||
private boolean canHandle(Network config) {
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ import com.cloud.exception.InsufficientCapacityException;
|
|||
import com.cloud.exception.InsufficientNetworkCapacityException;
|
||||
import com.cloud.exception.ResourceUnavailableException;
|
||||
import com.cloud.host.dao.HostDao;
|
||||
import com.cloud.network.ExternalNetworkManager;
|
||||
import com.cloud.network.ExternalNetworkDeviceManager;
|
||||
import com.cloud.network.Network;
|
||||
import com.cloud.network.Network.Capability;
|
||||
import com.cloud.network.Network.Provider;
|
||||
|
|
@ -59,14 +59,14 @@ import com.cloud.vm.VirtualMachine;
|
|||
import com.cloud.vm.VirtualMachineProfile;
|
||||
|
||||
@Local(value=NetworkElement.class)
|
||||
public class ExternalFirewallElement extends AdapterBase implements SourceNATServiceProvider, FirewallServiceProvider, RemoteAccessVPNServiceProvider {
|
||||
public class JuniperSRXExternalFirewallElement extends AdapterBase implements SourceNATServiceProvider, FirewallServiceProvider, RemoteAccessVPNServiceProvider {
|
||||
|
||||
private static final Logger s_logger = Logger.getLogger(ExternalFirewallElement.class);
|
||||
private static final Logger s_logger = Logger.getLogger(JuniperSRXExternalFirewallElement.class);
|
||||
|
||||
private static final Map<Service, Map<Capability, String>> capabilities = setCapabilities();
|
||||
|
||||
@Inject NetworkManager _networkManager;
|
||||
@Inject ExternalNetworkManager _externalNetworkManager;
|
||||
@Inject ExternalNetworkDeviceManager _externalNetworkManager;
|
||||
@Inject HostDao _hostDao;
|
||||
@Inject ConfigurationManager _configMgr;
|
||||
@Inject NetworkOfferingDao _networkOfferingDao;
|
||||
|
|
@ -34,7 +34,7 @@ import com.cloud.exception.ConcurrentOperationException;
|
|||
import com.cloud.exception.InsufficientCapacityException;
|
||||
import com.cloud.exception.InsufficientNetworkCapacityException;
|
||||
import com.cloud.exception.ResourceUnavailableException;
|
||||
import com.cloud.network.ExternalNetworkManager;
|
||||
import com.cloud.network.ExternalNetworkDeviceManager;
|
||||
import com.cloud.network.Network;
|
||||
import com.cloud.network.Network.Capability;
|
||||
import com.cloud.network.Network.Provider;
|
||||
|
|
@ -53,12 +53,12 @@ import com.cloud.vm.VirtualMachine;
|
|||
import com.cloud.vm.VirtualMachineProfile;
|
||||
|
||||
@Local(value=NetworkElement.class)
|
||||
public class NetscalerExternalLoadBalancerElement extends AdapterBase implements FirewallServiceProvider {
|
||||
public class NetscalerExternalLoadBalancerElement extends AdapterBase implements LoadBalancingServiceProvider {
|
||||
|
||||
private static final Logger s_logger = Logger.getLogger(NetscalerExternalLoadBalancerElement.class);
|
||||
|
||||
@Inject NetworkManager _networkManager;
|
||||
@Inject ExternalNetworkManager _externalNetworkManager;
|
||||
@Inject ExternalNetworkDeviceManager _externalNetworkManager;
|
||||
@Inject ConfigurationManager _configMgr;
|
||||
|
||||
private boolean canHandle(Network config) {
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ import com.cloud.vm.dao.UserVmDao;
|
|||
|
||||
|
||||
@Local(value=NetworkElement.class)
|
||||
public class VirtualRouterElement extends DhcpElement implements VirtualRouterElementService, SourceNATServiceProvider, FirewallServiceProvider, StaticNATServiceProvider, RemoteAccessVPNServiceProvider {
|
||||
public class VirtualRouterElement extends DhcpElement implements VirtualRouterElementService, SourceNATServiceProvider, FirewallServiceProvider, LoadBalancingServiceProvider, StaticNATServiceProvider, RemoteAccessVPNServiceProvider {
|
||||
private static final Logger s_logger = Logger.getLogger(VirtualRouterElement.class);
|
||||
|
||||
private static final Map<Service, Map<Capability, String>> capabilities = setCapabilities();
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ import com.cloud.event.EventUtils;
|
|||
import com.cloud.event.EventVO;
|
||||
import com.cloud.exception.InsufficientAddressCapacityException;
|
||||
import com.cloud.exception.InsufficientVirtualNetworkCapcityException;
|
||||
import com.cloud.network.ExternalNetworkManager;
|
||||
import com.cloud.network.ExternalNetworkDeviceManager;
|
||||
import com.cloud.network.Network;
|
||||
import com.cloud.network.Network.State;
|
||||
import com.cloud.network.NetworkManager;
|
||||
|
|
@ -64,7 +64,7 @@ public class ExternalGuestNetworkGuru extends GuestNetworkGuru {
|
|||
@Inject
|
||||
NetworkManager _networkMgr;
|
||||
@Inject
|
||||
ExternalNetworkManager _externalNetworkMgr;
|
||||
ExternalNetworkDeviceManager _externalNetworkMgr;
|
||||
@Inject
|
||||
NetworkDao _networkDao;
|
||||
@Inject
|
||||
|
|
|
|||
Loading…
Reference in New Issue