| // Licensed to the Apache Software Foundation (ASF) under one |
| // or more contributor license agreements. See the NOTICE file |
| // distributed with this work for additional information |
| // regarding copyright ownership. The ASF licenses this file |
| // to you under the Apache License, Version 2.0 (the |
| // "License"); you may not use this file except in compliance |
| // with the License. You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, |
| // software distributed under the License is distributed on an |
| // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| // KIND, either express or implied. See the License for the |
| // specific language governing permissions and limitations |
| // under the License. |
| package com.cloud.network.lb; |
| |
| import java.util.List; |
| |
| import com.cloud.network.as.AutoScalePolicy; |
| import com.cloud.network.as.AutoScaleVmGroup; |
| import com.cloud.network.as.AutoScaleVmProfile; |
| import com.cloud.network.as.Condition; |
| import com.cloud.network.as.Counter; |
| import com.cloud.network.rules.FirewallRule; |
| import com.cloud.network.rules.LoadBalancer; |
| import com.cloud.network.rules.LoadBalancerContainer.Scheme; |
| import com.cloud.utils.Pair; |
| import com.cloud.utils.net.Ip; |
| |
| public class LoadBalancingRule { |
| private LoadBalancer lb; |
| private Ip sourceIp; |
| private List<LbDestination> destinations; |
| private List<LbStickinessPolicy> stickinessPolicies; |
| private LbAutoScaleVmGroup autoScaleVmGroup; |
| private List<LbHealthCheckPolicy> healthCheckPolicies; |
| private LbSslCert sslCert; |
| private String lbProtocol; |
| |
| public LoadBalancingRule(LoadBalancer lb, List<LbDestination> destinations, List<LbStickinessPolicy> stickinessPolicies, |
| List<LbHealthCheckPolicy> healthCheckPolicies, Ip sourceIp) { |
| this.lb = lb; |
| this.destinations = destinations; |
| this.stickinessPolicies = stickinessPolicies; |
| this.healthCheckPolicies = healthCheckPolicies; |
| this.sourceIp = sourceIp; |
| } |
| |
| public LoadBalancingRule(LoadBalancer lb, List<LbDestination> destinations, List<LbStickinessPolicy> stickinessPolicies, |
| List<LbHealthCheckPolicy> healthCheckPolicies, Ip sourceIp, LbSslCert sslCert, String lbProtocol) { |
| this.lb = lb; |
| this.destinations = destinations; |
| this.stickinessPolicies = stickinessPolicies; |
| this.healthCheckPolicies = healthCheckPolicies; |
| this.sourceIp = sourceIp; |
| this.sslCert = sslCert; |
| this.lbProtocol = lbProtocol; |
| } |
| |
| public long getId() { |
| return lb.getId(); |
| } |
| |
| public String getName() { |
| return lb.getName(); |
| } |
| |
| public String getDescription() { |
| return lb.getDescription(); |
| } |
| |
| public int getDefaultPortStart() { |
| return lb.getDefaultPortStart(); |
| } |
| |
| public int getDefaultPortEnd() { |
| return lb.getDefaultPortEnd(); |
| } |
| |
| public String getAlgorithm() { |
| return lb.getAlgorithm(); |
| } |
| |
| public String getUuid() { |
| return lb.getUuid(); |
| } |
| |
| public String getXid() { |
| return lb.getXid(); |
| } |
| |
| public Integer getSourcePortStart() { |
| return lb.getSourcePortStart(); |
| } |
| |
| public Integer getSourcePortEnd() { |
| return lb.getSourcePortEnd(); |
| } |
| |
| public String getProtocol() { |
| return lb.getProtocol(); |
| } |
| |
| public String getLbProtocol() { |
| return this.lbProtocol; |
| } |
| |
| public FirewallRule.Purpose getPurpose() { |
| return FirewallRule.Purpose.LoadBalancing; |
| } |
| |
| public FirewallRule.State getState() { |
| return lb.getState(); |
| } |
| |
| public long getNetworkId() { |
| return lb.getNetworkId(); |
| } |
| |
| public void setDestinations(List<LbDestination> destinations) { |
| this.destinations = destinations; |
| } |
| |
| public List<LbDestination> getDestinations() { |
| return destinations; |
| } |
| |
| public List<LbStickinessPolicy> getStickinessPolicies() { |
| return stickinessPolicies; |
| } |
| |
| public void setHealthCheckPolicies(List<LbHealthCheckPolicy> healthCheckPolicies) { |
| this.healthCheckPolicies = healthCheckPolicies; |
| } |
| |
| public List<LbHealthCheckPolicy> getHealthCheckPolicies() { |
| return healthCheckPolicies; |
| } |
| |
| public LbSslCert getLbSslCert() { |
| return sslCert; |
| } |
| |
| public interface Destination { |
| String getIpAddress(); |
| |
| int getDestinationPortStart(); |
| |
| int getDestinationPortEnd(); |
| |
| boolean isRevoked(); |
| } |
| |
| public static class LbStickinessPolicy { |
| private String _methodName; |
| private List<Pair<String, String>> _params; |
| private boolean _revoke; |
| |
| public LbStickinessPolicy(String methodName, List<Pair<String, String>> params, boolean revoke) { |
| this._methodName = methodName; |
| this._params = params; |
| this._revoke = revoke; |
| } |
| |
| public LbStickinessPolicy(String methodName, List<Pair<String, String>> params) { |
| this._methodName = methodName; |
| this._params = params; |
| this._revoke = false; |
| } |
| |
| public String getMethodName() { |
| return _methodName; |
| } |
| |
| public List<Pair<String, String>> getParams() { |
| return _params; |
| } |
| |
| public boolean isRevoked() { |
| return _revoke; |
| } |
| } |
| |
| public static class LbHealthCheckPolicy { |
| private String pingpath; |
| private String description; |
| private int responseTime; |
| private int healthcheckInterval; |
| private int healthcheckThresshold; |
| private int unhealthThresshold; |
| private boolean _revoke; |
| |
| public LbHealthCheckPolicy(String pingpath, String description, int responseTime, int healthcheckInterval, int healthcheckThresshold, int unhealthThresshold) { |
| this(pingpath, description, responseTime, healthcheckInterval, healthcheckThresshold, unhealthThresshold, false); |
| } |
| |
| public LbHealthCheckPolicy(String pingpath, String description, int responseTime, int healthcheckInterval, int healthcheckThresshold, int unhealthThresshold, |
| boolean revoke) { |
| this.pingpath = pingpath; |
| this.description = description; |
| this.responseTime = responseTime; |
| this.healthcheckInterval = healthcheckInterval; |
| this.healthcheckThresshold = healthcheckThresshold; |
| this.unhealthThresshold = unhealthThresshold; |
| this._revoke = revoke; |
| } |
| |
| public LbHealthCheckPolicy() { |
| } |
| |
| public String getpingpath() { |
| return pingpath; |
| } |
| |
| public String getDescription() { |
| return description; |
| } |
| |
| public int getResponseTime() { |
| return responseTime; |
| } |
| |
| public int getHealthcheckInterval() { |
| return healthcheckInterval; |
| } |
| |
| public int getHealthcheckThresshold() { |
| return healthcheckThresshold; |
| } |
| |
| public int getUnhealthThresshold() { |
| return unhealthThresshold; |
| } |
| |
| public boolean isRevoked() { |
| return _revoke; |
| } |
| |
| } |
| |
| public static class LbDestination implements Destination { |
| private int portStart; |
| private int portEnd; |
| private String ip; |
| boolean revoked; |
| |
| public LbDestination(int portStart, int portEnd, String ip, boolean revoked) { |
| this.portStart = portStart; |
| this.portEnd = portEnd; |
| this.ip = ip; |
| this.revoked = revoked; |
| } |
| |
| @Override |
| public String getIpAddress() { |
| return ip; |
| } |
| |
| @Override |
| public int getDestinationPortStart() { |
| return portStart; |
| } |
| |
| @Override |
| public int getDestinationPortEnd() { |
| return portEnd; |
| } |
| |
| @Override |
| public boolean isRevoked() { |
| return revoked; |
| } |
| |
| public void setRevoked(boolean revoked) { |
| this.revoked = revoked; |
| } |
| } |
| |
| public LbAutoScaleVmGroup getAutoScaleVmGroup() { |
| return autoScaleVmGroup; |
| } |
| |
| public boolean isAutoScaleConfig() { |
| return this.autoScaleVmGroup != null; |
| } |
| |
| public void setAutoScaleVmGroup(LbAutoScaleVmGroup autoScaleVmGroup) { |
| this.autoScaleVmGroup = autoScaleVmGroup; |
| } |
| |
| public static class LbCondition { |
| private final Condition condition; |
| private final Counter counter; |
| |
| public LbCondition(Counter counter, Condition condition) { |
| this.condition = condition; |
| this.counter = counter; |
| } |
| |
| public Condition getCondition() { |
| return condition; |
| } |
| |
| public Counter getCounter() { |
| return counter; |
| } |
| } |
| |
| public static class LbAutoScalePolicy { |
| private final List<LbCondition> conditions; |
| private final AutoScalePolicy policy; |
| private boolean revoked; |
| |
| public LbAutoScalePolicy(AutoScalePolicy policy, List<LbCondition> conditions) { |
| this.policy = policy; |
| this.conditions = conditions; |
| } |
| |
| public List<LbCondition> getConditions() { |
| return conditions; |
| } |
| |
| public AutoScalePolicy getPolicy() { |
| return policy; |
| } |
| |
| public boolean isRevoked() { |
| return revoked; |
| } |
| |
| public void setRevoked(boolean revoked) { |
| this.revoked = revoked; |
| } |
| } |
| |
| public static class LbAutoScaleVmProfile { |
| AutoScaleVmProfile profile; |
| private final String autoScaleUserApiKey; |
| private final String autoScaleUserSecretKey; |
| private final String csUrl; |
| private final String zoneId; |
| private final String domainId; |
| private final String serviceOfferingId; |
| private final String templateId; |
| private final String networkId; |
| private final String vmName; |
| |
| public LbAutoScaleVmProfile(AutoScaleVmProfile profile, String autoScaleUserApiKey, String autoScaleUserSecretKey, String csUrl, String zoneId, String domainId, |
| String serviceOfferingId, String templateId, String vmName, String networkId) { |
| this.profile = profile; |
| this.autoScaleUserApiKey = autoScaleUserApiKey; |
| this.autoScaleUserSecretKey = autoScaleUserSecretKey; |
| this.csUrl = csUrl; |
| this.zoneId = zoneId; |
| this.domainId = domainId; |
| this.serviceOfferingId = serviceOfferingId; |
| this.templateId = templateId; |
| this.vmName = vmName; |
| this.networkId = networkId; |
| } |
| |
| public AutoScaleVmProfile getProfile() { |
| return profile; |
| } |
| |
| public String getAutoScaleUserApiKey() { |
| return autoScaleUserApiKey; |
| } |
| |
| public String getAutoScaleUserSecretKey() { |
| return autoScaleUserSecretKey; |
| } |
| |
| public String getCsUrl() { |
| return csUrl; |
| } |
| |
| public String getZoneId() { |
| return zoneId; |
| } |
| |
| public String getDomainId() { |
| return domainId; |
| } |
| |
| public String getServiceOfferingId() { |
| return serviceOfferingId; |
| } |
| |
| public String getTemplateId() { |
| return templateId; |
| } |
| |
| public String getVmName() { |
| return vmName; |
| } |
| |
| public String getNetworkId() { |
| return networkId; |
| } |
| } |
| |
| public static class LbAutoScaleVmGroup { |
| AutoScaleVmGroup vmGroup; |
| private final List<LbAutoScalePolicy> policies; |
| private final LbAutoScaleVmProfile profile; |
| private final String currentState; |
| |
| public LbAutoScaleVmGroup(AutoScaleVmGroup vmGroup, List<LbAutoScalePolicy> policies, LbAutoScaleVmProfile profile, String currentState) { |
| this.vmGroup = vmGroup; |
| this.policies = policies; |
| this.profile = profile; |
| this.currentState = currentState; |
| } |
| |
| public AutoScaleVmGroup getVmGroup() { |
| return vmGroup; |
| } |
| |
| public List<LbAutoScalePolicy> getPolicies() { |
| return policies; |
| } |
| |
| public LbAutoScaleVmProfile getProfile() { |
| return profile; |
| } |
| |
| public String getCurrentState() { |
| return currentState; |
| } |
| } |
| |
| public static class LbSslCert { |
| private String cert; |
| private String key; |
| private String password = null; |
| private String chain = null; |
| private String fingerprint; |
| private boolean revoked; |
| |
| public LbSslCert(String cert, String key, String password, String chain, String fingerprint, boolean revoked) { |
| this.cert = cert; |
| this.key = key; |
| this.password = password; |
| this.chain = chain; |
| this.fingerprint = fingerprint; |
| this.revoked = revoked; |
| } |
| |
| public String getCert() { |
| |
| return cert; |
| } |
| |
| public String getKey() { |
| return key; |
| } |
| |
| public String getPassword() { |
| return password; |
| } |
| |
| public String getChain() { |
| return chain; |
| } |
| |
| public String getFingerprint() { |
| return fingerprint; |
| } |
| |
| public boolean isRevoked() { |
| return revoked; |
| } |
| } |
| |
| public Ip getSourceIp() { |
| return sourceIp; |
| } |
| |
| public Scheme getScheme() { |
| return lb.getScheme(); |
| } |
| } |