From aa808f568577eb06e19d4714fe9e4ec038383c69 Mon Sep 17 00:00:00 2001 From: Murali Reddy Date: Fri, 21 Oct 2011 18:15:36 +0530 Subject: [PATCH] -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 --- .../element/LoadBalancingServiceProvider.java | 18 +++ client/tomcatconf/components-premium.xml.in | 2 +- .../api/commands/AddExternalFirewallCmd.java | 22 ++-- .../commands/AddExternalLoadBalancerCmd.java | 15 ++- .../api/commands/AddNetworkDeviceCmd.java | 2 +- .../commands/DeleteExternalFirewallCmd.java | 4 +- .../DeleteExternalLoadBalancerCmd.java | 4 +- .../commands/ListExternalFirewallsCmd.java | 18 ++- .../ListExternalLoadBalancersCmd.java | 18 ++- .../api/commands/ListNetworkDeviceCmd.java | 2 +- .../PremiumComponentLibrary.java | 4 +- ...java => ExternalNetworkDeviceManager.java} | 38 +++--- ... => ExternalNetworkDeviceManagerImpl.java} | 116 +++++++++++++----- .../cloud/network/NetworkDeviceManager.java | 7 +- .../network/NetworkDeviceManagerImpl.java | 49 ++++++-- .../com/cloud/network/NetworkManagerImpl.java | 14 ++- .../element/ElasticLoadBalancerElement.java | 2 +- .../F5ExternalLoadBalancerElement.java | 6 +- ...=> JuniperSRXExternalFirewallElement.java} | 8 +- .../NetscalerExternalLoadBalancerElement.java | 6 +- .../network/element/VirtualRouterElement.java | 2 +- .../guru/ExternalGuestNetworkGuru.java | 4 +- 22 files changed, 259 insertions(+), 102 deletions(-) create mode 100644 api/src/com/cloud/network/element/LoadBalancingServiceProvider.java rename server/src/com/cloud/network/{ExternalNetworkManager.java => ExternalNetworkDeviceManager.java} (79%) rename server/src/com/cloud/network/{ExternalNetworkManagerImpl.java => ExternalNetworkDeviceManagerImpl.java} (92%) rename server/src/com/cloud/network/element/{ExternalFirewallElement.java => JuniperSRXExternalFirewallElement.java} (96%) diff --git a/api/src/com/cloud/network/element/LoadBalancingServiceProvider.java b/api/src/com/cloud/network/element/LoadBalancingServiceProvider.java new file mode 100644 index 00000000000..5bc81d39895 --- /dev/null +++ b/api/src/com/cloud/network/element/LoadBalancingServiceProvider.java @@ -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 rules) throws ResourceUnavailableException; +} diff --git a/client/tomcatconf/components-premium.xml.in b/client/tomcatconf/components-premium.xml.in index cc032d99ed7..7306853c636 100755 --- a/client/tomcatconf/components-premium.xml.in +++ b/client/tomcatconf/components-premium.xml.in @@ -20,7 +20,7 @@ - + diff --git a/server/src/com/cloud/api/commands/AddExternalFirewallCmd.java b/server/src/com/cloud/api/commands/AddExternalFirewallCmd.java index 3ecfbce1b72..bec96596d27 100644 --- a/server/src/com/cloud/api/commands/AddExternalFirewallCmd.java +++ b/server/src/com/cloud/api/commands/AddExternalFirewallCmd.java @@ -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"); diff --git a/server/src/com/cloud/api/commands/AddExternalLoadBalancerCmd.java b/server/src/com/cloud/api/commands/AddExternalLoadBalancerCmd.java index 5ec3ace41e7..7fae6e9ab88 100644 --- a/server/src/com/cloud/api/commands/AddExternalLoadBalancerCmd.java +++ b/server/src/com/cloud/api/commands/AddExternalLoadBalancerCmd.java @@ -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"); diff --git a/server/src/com/cloud/api/commands/AddNetworkDeviceCmd.java b/server/src/com/cloud/api/commands/AddNetworkDeviceCmd.java index 77b0f3ea4e3..24ec2d79cd1 100644 --- a/server/src/com/cloud/api/commands/AddNetworkDeviceCmd.java +++ b/server/src/com/cloud/api/commands/AddNetworkDeviceCmd.java @@ -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") diff --git a/server/src/com/cloud/api/commands/DeleteExternalFirewallCmd.java b/server/src/com/cloud/api/commands/DeleteExternalFirewallCmd.java index 330870d7841..882ae6b4587 100644 --- a/server/src/com/cloud/api/commands/DeleteExternalFirewallCmd.java +++ b/server/src/com/cloud/api/commands/DeleteExternalFirewallCmd.java @@ -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()); diff --git a/server/src/com/cloud/api/commands/DeleteExternalLoadBalancerCmd.java b/server/src/com/cloud/api/commands/DeleteExternalLoadBalancerCmd.java index 6e751f6d3aa..50d63053059 100644 --- a/server/src/com/cloud/api/commands/DeleteExternalLoadBalancerCmd.java +++ b/server/src/com/cloud/api/commands/DeleteExternalLoadBalancerCmd.java @@ -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()); diff --git a/server/src/com/cloud/api/commands/ListExternalFirewallsCmd.java b/server/src/com/cloud/api/commands/ListExternalFirewallsCmd.java index dfa20209f5d..ada40918c0c 100644 --- a/server/src/com/cloud/api/commands/ListExternalFirewallsCmd.java +++ b/server/src/com/cloud/api/commands/ListExternalFirewallsCmd.java @@ -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 externalFirewalls = externalNetworkMgr.listExternalFirewalls(this); ListResponse listResponse = new ListResponse(); diff --git a/server/src/com/cloud/api/commands/ListExternalLoadBalancersCmd.java b/server/src/com/cloud/api/commands/ListExternalLoadBalancersCmd.java index 069f61deddc..d25ba9d7d43 100644 --- a/server/src/com/cloud/api/commands/ListExternalLoadBalancersCmd.java +++ b/server/src/com/cloud/api/commands/ListExternalLoadBalancersCmd.java @@ -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 externalLoadBalancers = externalNetworkMgr.listExternalLoadBalancers(this); ListResponse listResponse = new ListResponse(); diff --git a/server/src/com/cloud/api/commands/ListNetworkDeviceCmd.java b/server/src/com/cloud/api/commands/ListNetworkDeviceCmd.java index 0d8b9b35b1a..57fdcc72ee9 100644 --- a/server/src/com/cloud/api/commands/ListNetworkDeviceCmd.java +++ b/server/src/com/cloud/api/commands/ListNetworkDeviceCmd.java @@ -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") diff --git a/server/src/com/cloud/configuration/PremiumComponentLibrary.java b/server/src/com/cloud/configuration/PremiumComponentLibrary.java index 4462fa174b8..a0a758952fe 100755 --- a/server/src/com/cloud/configuration/PremiumComponentLibrary.java +++ b/server/src/com/cloud/configuration/PremiumComponentLibrary.java @@ -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); diff --git a/server/src/com/cloud/network/ExternalNetworkManager.java b/server/src/com/cloud/network/ExternalNetworkDeviceManager.java similarity index 79% rename from server/src/com/cloud/network/ExternalNetworkManager.java rename to server/src/com/cloud/network/ExternalNetworkDeviceManager.java index bdf2f6c5ddb..262f3c6c6f4 100644 --- a/server/src/com/cloud/network/ExternalNetworkManager.java +++ b/server/src/com/cloud/network/ExternalNetworkDeviceManager.java @@ -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 listExternalFirewalls(ListExternalFirewallsCmd cmd); + public boolean deleteExternalFirewall(Long hostId); + public List listExternalFirewalls(ListExternalFirewallsCmd cmd); + + public List 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 listExternalLoadBalancers(ListExternalLoadBalancersCmd cmd); + public List listExternalLoadBalancers(ListExternalLoadBalancersCmd cmd); + + public List listExternalLoadBalancers(Long zoneId, Long networkId, String deviceType); public ExternalLoadBalancerResponse createExternalLoadBalancerResponse(Host externalLoadBalancer); diff --git a/server/src/com/cloud/network/ExternalNetworkManagerImpl.java b/server/src/com/cloud/network/ExternalNetworkDeviceManagerImpl.java similarity index 92% rename from server/src/com/cloud/network/ExternalNetworkManagerImpl.java rename to server/src/com/cloud/network/ExternalNetworkDeviceManagerImpl.java index 058b698b156..83bfa1d1359 100644 --- a/server/src/com/cloud/network/ExternalNetworkManagerImpl.java +++ b/server/src/com/cloud/network/ExternalNetworkDeviceManagerImpl.java @@ -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(); + 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 params = new HashMap(); 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 listExternalLoadBalancers(ListExternalLoadBalancersCmd cmd) { - long zoneId = cmd.getZoneId(); - return _hostDao.listByTypeDataCenter(Host.Type.ExternalLoadBalancer, zoneId); + public List listExternalLoadBalancers(ListExternalLoadBalancersCmd cmd) { + List lbHosts = new ArrayList(); + 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 listExternalLoadBalancers(Long zoneId, Long networkId, String type) { + List lbHosts = new ArrayList(); + 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(); + 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 params = new HashMap(); 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 listExternalFirewalls(ListExternalFirewallsCmd cmd) { - long zoneId = cmd.getZoneId(); - return _hostDao.listByTypeDataCenter(Host.Type.ExternalFirewall, zoneId); + public List listExternalFirewalls(ListExternalFirewallsCmd cmd) { + List firewallHosts = new ArrayList(); + if (NetworkDeviceType.JuniperSRXFirewall.getName().equalsIgnoreCase(cmd.getDeviceType())) { + firewallHosts.addAll(listExternalFirewalls(cmd.getZoneId(), cmd.getNetworkId(), NetworkDeviceType.JuniperSRXFirewall.getName())); + } + return firewallHosts; + } + @Override + public List listExternalFirewalls(Long zoneId, Long networkId, String type) { + List firewallHosts = new ArrayList(); + firewallHosts.addAll(_hostDao.listByTypeDataCenter(Host.Type.ExternalFirewall, zoneId)); + return firewallHosts; + } + @Override public ExternalFirewallResponse createExternalFirewallResponse(Host externalFirewall) { Map fwDetails = _detailsDao.findDetails(externalFirewall.getId()); diff --git a/server/src/com/cloud/network/NetworkDeviceManager.java b/server/src/com/cloud/network/NetworkDeviceManager.java index 666bc10b1d4..0920d4d5881 100644 --- a/server/src/com/cloud/network/NetworkDeviceManager.java +++ b/server/src/com/cloud/network/NetworkDeviceManager.java @@ -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 listNetworkDevice(ListNetworkDeviceCmd cmd); + public List listNetworkDevice(ListNetworkDeviceCmd cmd); public boolean deleteNetworkDevice(DeleteNetworkDeviceCmd cmd); } diff --git a/server/src/com/cloud/network/NetworkDeviceManagerImpl.java b/server/src/com/cloud/network/NetworkDeviceManagerImpl.java index 222c6f2f3a6..6a9ae8acf64 100644 --- a/server/src/com/cloud/network/NetworkDeviceManagerImpl.java +++ b/server/src/com/cloud/network/NetworkDeviceManagerImpl.java @@ -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 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 res1 = listNetworkDevice(zoneId, podId, Host.Type.PxeServer); List res2 = listNetworkDevice(zoneId, podId, Host.Type.ExternalDhcp); - List res3 = new ArrayList(); - res3.addAll(res1); - res3.addAll(res2); - res = res3; + List res3 = listNetworkDevice(zoneId, podId, Host.Type.ExternalLoadBalancer); + List res4 = listNetworkDevice(zoneId, podId, Host.Type.ExternalFirewall); + List deviceAll = new ArrayList(); + 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; } -} +} \ No newline at end of file diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index a7cfb6488db..b136f50d1d7 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -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) { diff --git a/server/src/com/cloud/network/element/ElasticLoadBalancerElement.java b/server/src/com/cloud/network/element/ElasticLoadBalancerElement.java index 3da9c705c62..2f9dc6812ee 100644 --- a/server/src/com/cloud/network/element/ElasticLoadBalancerElement.java +++ b/server/src/com/cloud/network/element/ElasticLoadBalancerElement.java @@ -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> capabilities = setCapabilities(); @Inject NetworkManager _networkManager; diff --git a/server/src/com/cloud/network/element/F5ExternalLoadBalancerElement.java b/server/src/com/cloud/network/element/F5ExternalLoadBalancerElement.java index e2dc5dc2f0f..4208556386e 100644 --- a/server/src/com/cloud/network/element/F5ExternalLoadBalancerElement.java +++ b/server/src/com/cloud/network/element/F5ExternalLoadBalancerElement.java @@ -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) { diff --git a/server/src/com/cloud/network/element/ExternalFirewallElement.java b/server/src/com/cloud/network/element/JuniperSRXExternalFirewallElement.java similarity index 96% rename from server/src/com/cloud/network/element/ExternalFirewallElement.java rename to server/src/com/cloud/network/element/JuniperSRXExternalFirewallElement.java index f8aa16c6068..537454c26fa 100644 --- a/server/src/com/cloud/network/element/ExternalFirewallElement.java +++ b/server/src/com/cloud/network/element/JuniperSRXExternalFirewallElement.java @@ -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> capabilities = setCapabilities(); @Inject NetworkManager _networkManager; - @Inject ExternalNetworkManager _externalNetworkManager; + @Inject ExternalNetworkDeviceManager _externalNetworkManager; @Inject HostDao _hostDao; @Inject ConfigurationManager _configMgr; @Inject NetworkOfferingDao _networkOfferingDao; diff --git a/server/src/com/cloud/network/element/NetscalerExternalLoadBalancerElement.java b/server/src/com/cloud/network/element/NetscalerExternalLoadBalancerElement.java index 2a177f7054b..e1393694428 100644 --- a/server/src/com/cloud/network/element/NetscalerExternalLoadBalancerElement.java +++ b/server/src/com/cloud/network/element/NetscalerExternalLoadBalancerElement.java @@ -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) { diff --git a/server/src/com/cloud/network/element/VirtualRouterElement.java b/server/src/com/cloud/network/element/VirtualRouterElement.java index 7ee1841a9b7..782e856e921 100644 --- a/server/src/com/cloud/network/element/VirtualRouterElement.java +++ b/server/src/com/cloud/network/element/VirtualRouterElement.java @@ -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> capabilities = setCapabilities(); diff --git a/server/src/com/cloud/network/guru/ExternalGuestNetworkGuru.java b/server/src/com/cloud/network/guru/ExternalGuestNetworkGuru.java index 2130c22f562..9d811ea05c1 100644 --- a/server/src/com/cloud/network/guru/ExternalGuestNetworkGuru.java +++ b/server/src/com/cloud/network/guru/ExternalGuestNetworkGuru.java @@ -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