mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
163 lines
7.1 KiB
Java
163 lines
7.1 KiB
Java
// 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 java.util.Map;
|
|
|
|
import org.apache.cloudstack.api.command.user.loadbalancer.CreateLBHealthCheckPolicyCmd;
|
|
import org.apache.cloudstack.api.command.user.loadbalancer.CreateLBStickinessPolicyCmd;
|
|
import org.apache.cloudstack.api.command.user.loadbalancer.ListLBHealthCheckPoliciesCmd;
|
|
import org.apache.cloudstack.api.command.user.loadbalancer.ListLBStickinessPoliciesCmd;
|
|
import org.apache.cloudstack.api.command.user.loadbalancer.ListLoadBalancerRuleInstancesCmd;
|
|
import org.apache.cloudstack.api.command.user.loadbalancer.ListLoadBalancerRulesCmd;
|
|
import org.apache.cloudstack.api.command.user.loadbalancer.UpdateLoadBalancerRuleCmd;
|
|
|
|
import com.cloud.exception.InsufficientAddressCapacityException;
|
|
import com.cloud.exception.NetworkRuleConflictException;
|
|
import com.cloud.exception.ResourceUnavailableException;
|
|
import com.cloud.network.rules.HealthCheckPolicy;
|
|
import com.cloud.network.rules.LoadBalancer;
|
|
import com.cloud.network.rules.LoadBalancerContainer.Scheme;
|
|
import com.cloud.network.rules.StickinessPolicy;
|
|
import com.cloud.uservm.UserVm;
|
|
import com.cloud.utils.Pair;
|
|
import com.cloud.utils.net.Ip;
|
|
|
|
public interface LoadBalancingRulesService {
|
|
/**
|
|
* Create a load balancer rule from the given ipAddress/port to the given private port
|
|
* @param openFirewall
|
|
* TODO
|
|
* @param forDisplay TODO
|
|
* @param cmd
|
|
* the command specifying the ip address, public port, protocol, private port, and algorithm
|
|
*
|
|
* @return the newly created LoadBalancerVO if successful, null otherwise
|
|
* @throws InsufficientAddressCapacityException
|
|
*/
|
|
LoadBalancer createPublicLoadBalancerRule(String xId, String name, String description, int srcPortStart, int srcPortEnd, int defPortStart, int defPortEnd,
|
|
Long ipAddrId, String protocol, String algorithm, long networkId, long lbOwnerId, boolean openFirewall, String lbProtocol, Boolean forDisplay) throws NetworkRuleConflictException,
|
|
InsufficientAddressCapacityException;
|
|
|
|
LoadBalancer updateLoadBalancerRule(UpdateLoadBalancerRuleCmd cmd);
|
|
|
|
boolean deleteLoadBalancerRule(long lbRuleId, boolean apply);
|
|
|
|
/**
|
|
* Create a stickiness policy to a load balancer from the given stickiness method name and parameters in
|
|
* (name,value) pairs.
|
|
*
|
|
* @param cmd
|
|
* the command specifying the stickiness method name, params (name,value pairs), policy name and
|
|
* description.
|
|
* @return the newly created stickiness policy if successfull, null otherwise
|
|
* @thows NetworkRuleConflictException
|
|
*/
|
|
public StickinessPolicy createLBStickinessPolicy(CreateLBStickinessPolicyCmd cmd) throws NetworkRuleConflictException;
|
|
|
|
public boolean applyLBStickinessPolicy(CreateLBStickinessPolicyCmd cmd) throws ResourceUnavailableException;
|
|
|
|
boolean deleteLBStickinessPolicy(long stickinessPolicyId, boolean apply);
|
|
|
|
/**
|
|
* Create a healthcheck policy to a load balancer from the given healthcheck
|
|
* parameters in (name,value) pairs.
|
|
*
|
|
* @param cmd
|
|
* the command specifying the stickiness method name, params
|
|
* (name,value pairs), policy name and description.
|
|
* @return the newly created stickiness policy if successfull, null
|
|
* otherwise
|
|
* @thows NetworkRuleConflictException
|
|
*/
|
|
public HealthCheckPolicy createLBHealthCheckPolicy(CreateLBHealthCheckPolicyCmd cmd);
|
|
|
|
public boolean applyLBHealthCheckPolicy(CreateLBHealthCheckPolicyCmd cmd) throws ResourceUnavailableException;
|
|
|
|
boolean deleteLBHealthCheckPolicy(long healthCheckPolicyId, boolean apply);
|
|
|
|
/**
|
|
* Assign a virtual machine or list of virtual machines, or Map of <vmId vmIp> to a load balancer.
|
|
*/
|
|
boolean assignToLoadBalancer(long lbRuleId, List<Long> vmIds, Map<Long, List<String>> vmIdIpMap);
|
|
|
|
boolean assignSSLCertToLoadBalancerRule(Long lbRuleId, String certName, String publicCert, String privateKey);
|
|
|
|
boolean removeFromLoadBalancer(long lbRuleId, List<Long> vmIds, Map<Long, List<String>> vmIdIpMap);
|
|
|
|
boolean applyLoadBalancerConfig(long lbRuleId) throws ResourceUnavailableException;
|
|
|
|
boolean assignCertToLoadBalancer(long lbRuleId, Long certId);
|
|
|
|
boolean removeCertFromLoadBalancer(long lbRuleId);
|
|
|
|
/**
|
|
* List instances that have either been applied to a load balancer or are eligible to be assigned to a load
|
|
* balancer.
|
|
*
|
|
* @param cmd
|
|
* @return list of vm instances that have been or can be applied to a load balancer along with service state,
|
|
* if the LB has health check policy created on it from cloudstack.
|
|
*/
|
|
Pair<List<? extends UserVm>, List<String>> listLoadBalancerInstances(ListLoadBalancerRuleInstancesCmd cmd);
|
|
|
|
/**
|
|
* List load balancer rules based on the given criteria
|
|
*
|
|
* @param cmd
|
|
* the command that specifies the criteria to use for listing load balancers. Load balancers can be
|
|
* listed
|
|
* by id, name, public ip, and vm instance id
|
|
* @return list of load balancers that match the criteria
|
|
*/
|
|
Pair<List<? extends LoadBalancer>, Integer> searchForLoadBalancers(ListLoadBalancerRulesCmd cmd);
|
|
|
|
/**
|
|
* List stickiness policies based on the given criteria
|
|
*
|
|
* @param cmd
|
|
* the command specifies the load balancing rule id.
|
|
* @return list of stickiness policies that match the criteria.
|
|
*/
|
|
List<? extends StickinessPolicy> searchForLBStickinessPolicies(ListLBStickinessPoliciesCmd cmd);
|
|
|
|
/**
|
|
* List healthcheck policies based on the given criteria
|
|
*
|
|
* @param cmd
|
|
* the command specifies the load balancing rule id.
|
|
* @return list of healthcheck policies that match the criteria.
|
|
*/
|
|
|
|
List<? extends HealthCheckPolicy> searchForLBHealthCheckPolicies(ListLBHealthCheckPoliciesCmd cmd);
|
|
|
|
LoadBalancer findById(long loadBalancer);
|
|
|
|
public void updateLBHealthChecks(Scheme scheme) throws ResourceUnavailableException;
|
|
|
|
Map<Ip, UserVm> getLbInstances(long lbId);
|
|
|
|
boolean isLbRuleMappedToVmGuestIp(String vmSecondaryIp);
|
|
|
|
List<String> listLbVmIpAddress(long id, long vmId);
|
|
|
|
StickinessPolicy updateLBStickinessPolicy(long id, String customId, Boolean forDisplay);
|
|
|
|
HealthCheckPolicy updateLBHealthCheckPolicy(long id, String customId, Boolean forDisplay);
|
|
}
|