From 9225e8d2d4d274f83c7dc7f454927632cd4e5a82 Mon Sep 17 00:00:00 2001 From: anthony Date: Mon, 31 Oct 2011 14:26:27 -0700 Subject: [PATCH] Revert "bug 6876: netscaler integration" This reverts commit 72a267b69f80cd0accf455c7c3444e2e1f30e123. --- .../resource/NetscalerMPXResource.java | 117 +++++++----------- 1 file changed, 44 insertions(+), 73 deletions(-) diff --git a/core/src/com/cloud/network/resource/NetscalerMPXResource.java b/core/src/com/cloud/network/resource/NetscalerMPXResource.java index 2a0f49b5fb3..3c25a83feb1 100644 --- a/core/src/com/cloud/network/resource/NetscalerMPXResource.java +++ b/core/src/com/cloud/network/resource/NetscalerMPXResource.java @@ -211,8 +211,6 @@ public class NetscalerMPXResource implements ServerResource { return execute((LoadBalancerConfigCommand) cmd, numRetries); } else if (cmd instanceof ExternalNetworkResourceUsageCommand) { return execute((ExternalNetworkResourceUsageCommand) cmd); - } else if (cmd instanceof MaintainCommand) { - return execute((MaintainCommand) cmd); } else { return Answer.createUnsupportedCommandAnswer(cmd); } @@ -223,7 +221,7 @@ public class NetscalerMPXResource implements ServerResource { } protected Answer execute(MaintainCommand cmd) { - return new MaintainAnswer(cmd, "Put host in maintaince"); + return new MaintainAnswer(cmd); } private synchronized Answer execute(IpAssocCommand cmd, int numRetries) { @@ -261,14 +259,33 @@ public class NetscalerMPXResource implements ServerResource { } private synchronized Answer execute(LoadBalancerConfigCommand cmd, int numRetries) { - try { + try { + String lbProtocol; + String lbMethod; LoadBalancerTO[] loadBalancers = cmd.getLoadBalancers(); for (LoadBalancerTO loadBalancer : loadBalancers) { + + if (loadBalancer.getProtocol() == null) { + lbProtocol = "TCP"; + } else if (loadBalancer.getProtocol().equals(NetUtils.TCP_PROTO)){ + lbProtocol = "TCP"; + } else if (loadBalancer.getProtocol().equals(NetUtils.UDP_PROTO)) { + lbProtocol = "UDP"; + } else { + throw new ExecutionException("Got invalid protocol: " + loadBalancer.getProtocol()); + } + + if (loadBalancer.getAlgorithm().equals("roundrobin")) { + lbMethod = "ROUNDROBIN"; + } else if (loadBalancer.getAlgorithm().equals("leastconn")) { + lbMethod = "LEASTCONNECTION"; + } else { + throw new ExecutionException("Got invalid load balancing algorithm: " + loadBalancer.getAlgorithm()); + } + String srcIp = loadBalancer.getSrcIp(); - int srcPort = loadBalancer.getSrcPort(); - String lbProtocol = loadBalancer.getProtocol(); - String lbAlgorithm = loadBalancer.getAlgorithm(); + int srcPort = loadBalancer.getSrcPort(); String nsVirtualServerName = generateNSVirtualServerName(srcIp, srcPort, lbProtocol); boolean destinationsToAdd = false; @@ -282,7 +299,10 @@ public class NetscalerMPXResource implements ServerResource { if (!loadBalancer.isRevoked() && destinationsToAdd) { // create a load balancing virtual server - addLBVirtualServer(nsVirtualServerName, srcIp, srcPort, lbAlgorithm, lbProtocol); + addLBVirtualServer(nsVirtualServerName, srcIp, srcPort, lbMethod, lbProtocol); + if (s_logger.isDebugEnabled()) { + s_logger.debug("Created load balancing virtual server " + nsVirtualServerName + " on the Netscaler device"); + } for (DestinationTO destination : loadBalancer.getDestinations()) { @@ -340,13 +360,13 @@ public class NetscalerMPXResource implements ServerResource { // delete the binding apiCallResult = com.citrix.netscaler.nitro.resource.config.lb.lbvserver_service_binding.delete(nsService, binding); if (apiCallResult.errorcode != 0) { - throw new ExecutionException("Failed to delete the binding between the virtual server: " + nsVirtualServerName + " and service:" + nsServiceName + " due to" + apiCallResult.message); + throw new ExecutionException("Failed to delete the binding between the virtual server: " + nsVirtualServerName + " and service:" + nsServiceName); } // delete the service apiCallResult = com.citrix.netscaler.nitro.resource.config.basic.service.delete(nsService, nsServiceName); if (apiCallResult.errorcode != 0) { - throw new ExecutionException("Failed to delete service: " + nsServiceName + " due to " + apiCallResult.message); + throw new ExecutionException("Failed to delete service: " + nsServiceName); } // delete the server if there is no associated services @@ -354,7 +374,7 @@ public class NetscalerMPXResource implements ServerResource { if ((services == null) || (services.length == 0)) { apiCallResult = com.citrix.netscaler.nitro.resource.config.basic.server.delete(nsService, nsServerName); if (apiCallResult.errorcode != 0) { - throw new ExecutionException("Failed to remove server:" + nsServerName + " due to " + apiCallResult.message); + throw new ExecutionException("Failed to remove server:" + nsServerName); } } } @@ -363,8 +383,8 @@ public class NetscalerMPXResource implements ServerResource { } } } else { - // delete the implemented load balancing rule and its destinations - lbvserver lbserver = getVirtualServerIfExisits(nsVirtualServerName); + // delete the deployed load balancing rule and its destinations + lbvserver lbserver = lbvserver.get(nsService, nsVirtualServerName); if (lbserver == null) { throw new ExecutionException("Failed to find virtual server with name:" + nsVirtualServerName); } @@ -376,7 +396,7 @@ public class NetscalerMPXResource implements ServerResource { String serviceName = binding.get_servicename(); apiCallResult = com.citrix.netscaler.nitro.resource.config.lb.lbvserver_service_binding.delete(nsService, binding); if (apiCallResult.errorcode != 0) { - throw new ExecutionException("Failed to unbind service from the lb virtual server: " + nsVirtualServerName + " due to " + apiCallResult.message); + throw new ExecutionException("Failed to unbind servic from the lb virtual server: " + nsVirtualServerName); } com.citrix.netscaler.nitro.resource.config.basic.service svc = com.citrix.netscaler.nitro.resource.config.basic.service.get(nsService, serviceName); @@ -390,7 +410,7 @@ public class NetscalerMPXResource implements ServerResource { if ((services == null) || (services.length == 0)) { apiCallResult = com.citrix.netscaler.nitro.resource.config.basic.server.delete(nsService, nsServerName); if (apiCallResult.errorcode != 0) { - throw new ExecutionException("Failed to remove server:" + nsServerName + " due to " + apiCallResult.message); + throw new ExecutionException("Failed to remove server:" + nsServerName); } } } @@ -526,10 +546,9 @@ public class NetscalerMPXResource implements ServerResource { } } } catch (nitro_exception e) { - throw new ExecutionException("Failed to delete guest vlan network on the Netscaler device"); + throw new ExecutionException("Failed to delete guest vlan network on the Netscaler device due to " + e.getMessage()); } catch (Exception e) { - s_logger.error(e); - throw new ExecutionException(e.getMessage()); + throw new ExecutionException("Failed to delete guest vlan network on the Netscaler device due to " + e.getMessage()); } } @@ -562,20 +581,6 @@ public class NetscalerMPXResource implements ServerResource { } } - private lbvserver getVirtualServerIfExisits(String lbVServerName ) throws ExecutionException { - try { - return lbvserver.get(nsService, lbVServerName); - } catch (nitro_exception e) { - if (e.getErrorCode() == NitroError.NS_RESOURCE_NOT_EXISTS) { - return null; - } else { - throw new ExecutionException(e.getMessage()); - } - } catch (Exception e) { - throw new ExecutionException(e.getMessage()); - } - } - private boolean nsServiceExists(String serviceName) throws ExecutionException { try { if (com.citrix.netscaler.nitro.resource.config.basic.service.get(nsService, serviceName) != null) { @@ -639,7 +644,7 @@ public class NetscalerMPXResource implements ServerResource { // remove the server apiCallResult = com.citrix.netscaler.nitro.resource.config.basic.server.delete(nsService, server.get_name()); if (apiCallResult.errorcode != 0) { - throw new ExecutionException("Failed to remove server:" + server.get_name()+ " due to " + apiCallResult.message); + throw new ExecutionException("Failed to remove server:" + server.get_name()); } } } @@ -650,45 +655,15 @@ public class NetscalerMPXResource implements ServerResource { private void addLBVirtualServer(String virtualServerName, String srcIp, int srcPort, String lbMethod, String lbProtocol) throws ExecutionException { try { - - if (lbProtocol == null) { - lbProtocol = "TCP"; - } else if (lbProtocol.equals(NetUtils.TCP_PROTO)){ - lbProtocol = "TCP"; - } else if (lbProtocol.equals(NetUtils.UDP_PROTO)) { - lbProtocol = "UDP"; - } else { - throw new ExecutionException("Got invalid protocol: " + lbProtocol); - } - - if (lbMethod.equals("roundrobin")) { - lbMethod = "ROUNDROBIN"; - } else if (lbMethod.equals("leastconn")) { - lbMethod = "LEASTCONNECTION"; - } else { - throw new ExecutionException("Got invalid load balancing algorithm: " + lbMethod); - } - - boolean vserverExisis = false; - lbvserver vserver = getVirtualServerIfExisits(virtualServerName); - if (vserver == null) { - vserver = new lbvserver(); - } else { - vserverExisis = true; - } + lbvserver vserver = new lbvserver(); vserver.set_name(virtualServerName); vserver.set_ipv46(srcIp); vserver.set_port(srcPort); vserver.set_servicetype(lbProtocol); vserver.set_lbmethod(lbMethod); - - if (vserverExisis) { - apiCallResult = lbvserver.update(nsService,vserver); - } else { - apiCallResult = lbvserver.add(nsService,vserver); - } + apiCallResult = lbvserver.add(nsService,vserver); if (apiCallResult.errorcode != 0) { - throw new ExecutionException("Failed to create new virtual server:" + virtualServerName+ " due to " + apiCallResult.message); + throw new ExecutionException("Failed to create new virtual server:" + virtualServerName); } } catch (nitro_exception e) { if (e.getErrorCode() != NitroError.NS_RESOURCE_EXISTS) { @@ -707,14 +682,10 @@ public class NetscalerMPXResource implements ServerResource { } apiCallResult = lbvserver.delete(nsService, vserver); if (apiCallResult.errorcode != 0) { - throw new ExecutionException("Failed to remove virtual server:" + virtualServerName + " due to " + apiCallResult.message); + throw new ExecutionException("Failed to remove virtual server:" + virtualServerName); } } catch (nitro_exception e) { - if (e.getErrorCode() == NitroError.NS_RESOURCE_NOT_EXISTS) { - return; - } else { - throw new ExecutionException("Failed remove virtual server:" + virtualServerName +" due to " + e.getMessage()); - } + throw new ExecutionException("Failed to remove virtual server:" + virtualServerName +" due to " + e.getMessage()); } catch (Exception e) { throw new ExecutionException("Failed to remove virtual server:" + virtualServerName +" due to " + e.getMessage()); } @@ -724,7 +695,7 @@ public class NetscalerMPXResource implements ServerResource { try { apiCallResult = nsconfig.save(nsService); if (apiCallResult.errorcode != 0) { - throw new ExecutionException("Error occured while saving configuration changes to Netscaler device due to " + apiCallResult.message); + throw new ExecutionException("Error occured while saving configuration changes to Netscaler device due to error:" + apiCallResult.errorcode); } } catch (nitro_exception e) { throw new ExecutionException("Failed to save configuration changes to Netscaler device due to " + e.getMessage());