diff --git a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/CreateLoadBalancerRuleCmd.java b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/CreateLoadBalancerRuleCmd.java index e33e58487ca..132bf883532 100644 --- a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/CreateLoadBalancerRuleCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/CreateLoadBalancerRuleCmd.java @@ -323,6 +323,8 @@ public class CreateLoadBalancerRuleCmd extends BaseAsyncCreateCmd /*implements L } catch (InsufficientAddressCapacityException e) { s_logger.warn("Exception: ", e); throw new ServerApiException(ApiErrorCode.INSUFFICIENT_CAPACITY_ERROR, e.getMessage()); + } catch (InvalidParameterValueException e) { + throw new ServerApiException(ApiErrorCode.PARAM_ERROR, e.getMessage()); } } diff --git a/server/src/com/cloud/network/element/VirtualRouterElement.java b/server/src/com/cloud/network/element/VirtualRouterElement.java index bdebd39c9d4..dc6ffc8b223 100755 --- a/server/src/com/cloud/network/element/VirtualRouterElement.java +++ b/server/src/com/cloud/network/element/VirtualRouterElement.java @@ -25,6 +25,7 @@ import java.util.Set; import javax.ejb.Local; import javax.inject.Inject; +import com.cloud.utils.net.NetUtils; import org.apache.log4j.Logger; import com.google.gson.Gson; @@ -303,6 +304,11 @@ NetworkMigrationResponder, AggregatedCommandExecutor { public static boolean validateHAProxyLBRule(LoadBalancingRule rule) { String timeEndChar = "dhms"; + if (rule.getSourcePortStart() == NetUtils.HAPROXY_STATS_PORT) { + s_logger.debug("Can't create LB on port 8081, haproxy is listening for LB stats on this port"); + return false; + } + for (LbStickinessPolicy stickinessPolicy : rule.getStickinessPolicies()) { List> paramsList = stickinessPolicy.getParams(); diff --git a/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java b/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java index 9238f50f19e..427e3ec02cb 100755 --- a/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java +++ b/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java @@ -1637,6 +1637,11 @@ public class LoadBalancingRulesManagerImpl extends ManagerBase implements if (ex instanceof NetworkRuleConflictException) { throw (NetworkRuleConflictException)ex; } + + if (ex instanceof InvalidParameterValueException) { + throw (InvalidParameterValueException)ex; + } + } finally { if (result == null && systemIp != null) { s_logger.debug("Releasing system IP address " + systemIp + " as corresponding lb rule failed to create"); diff --git a/utils/src/com/cloud/utils/net/NetUtils.java b/utils/src/com/cloud/utils/net/NetUtils.java index 1b2c0e86422..874bf79a236 100755 --- a/utils/src/com/cloud/utils/net/NetUtils.java +++ b/utils/src/com/cloud/utils/net/NetUtils.java @@ -58,6 +58,7 @@ public class NetUtils { public final static int VPN_PORT = 500; public final static int VPN_NATT_PORT = 4500; public final static int VPN_L2TP_PORT = 1701; + public final static int HAPROXY_STATS_PORT = 8081; public final static String UDP_PROTO = "udp"; public final static String TCP_PROTO = "tcp";