package org.dasein.cloud.ci;
import java.util.Locale;
import javax.annotation.Nonnull;
import org.dasein.cloud.Capabilities;
import org.dasein.cloud.util.NamingConstraints;
/**
* Describes the capabilities of a HttpLoadBalancer within a cloud for a specific account.
* <p>Created by Roger Unwin: 4/27/15</p>
* @author Roger Unwin
* @version 2015.03 initial version
* @since 2015.03
*/
public interface HttpLoadBalancerCapabilities extends Capabilities {
/**
* Provides the HttpLoadBalancer terminology for the concept of a HttpLoadBalancer. For example, GCE calls a
* HttpLoadBalancer a "HttpLoadBalancer".
* @param locale the locale for which you should translate the HttpLoadBalancer term
* @return the translated term for HttpLoadBalancer with the target cloud provider
*/
public String getProviderTermForHttpLoadBalancer(@Nonnull Locale locale);
/**
* Indicates whether or not the HttpLoadBalancer supports HTTP traffic
* @return <code>true</code> if HTTP traffic is supported
*/
public boolean supportsHttpTraffic();
/**
* Returns the supported ports that HTTP traffic may travel over
* @return <code>Iterable<String></code> of available ports.
*/
public @Nonnull Iterable<String> listSupportedHttpPorts();
/**
* Indicates whether or not the HttpLoadBalancer supports HTTPS traffic
* @return <code>true</code> if HTTPS traffic is supported
*/
public boolean supportsHttpsTraffic();
/**
* Indicates whether or not you can create new HealthChecks
* @return <code>true</code> if creating HealthChecks is supported
*/
public boolean supportsHealthChecks();
/**
* Indicates whether or not you can create more than one HealthChecks for a HttpLoadBalancer
* @return <code>true</code> if creating more than one HealthCheck per HttpLoadBalancer is supported
*/
public boolean supportsMoreThanOneHealthCheck();
/**
* Indicates whether or not you can use an existing HealthCheck
* @return <code>true</code> if using existing HealthChecks is supported
*/
public boolean supportsUsingExistingHealthCheck();
/**
* Indicates whether or not you can create new BackendServices
* @return <code>true</code> if creating BackendServices is supported
*/
public boolean supportsBackendServices();
/**
* Indicates whether or not you can create more than one BackendService for a HttpLoadBalancer
* @return <code>true</code> if creating more than one BackendService per HttpLoadBalancer is supported
*/
public boolean supportsMoreThanOneBackendService();
/**
* Indicates whether or not you can use an existing BackendService
* @return <code>true</code> if using existing BackendService is supported
*/
public boolean supportsUsingExistingBackendService();
/**
* Indicates whether or not you can create new UrlSets
* @return <code>true</code> if creating UrlSets is supported
*/
public boolean supportsUrlSets();
/**
* Indicates whether or not you can create more than one UrlSet for a HttpLoadBalancer
* @return <code>true</code> if creating more than one UrlSet per HttpLoadBalancer is supported
*/
public boolean supportsMoreThanOneUrlSet();
/**
* Indicates whether or not you can create new TargetHttpProxies
* @return <code>true</code> if creating TargetHttpProxies is supported
*/
public boolean supportsTargetHttpProxies();
/**
* Indicates whether or not you can create more than one TargetHttpProxy for a HttpLoadBalancer
* @return <code>true</code> if creating more than one TargetHttpProxy per HttpLoadBalancer is supported
*/
public boolean supportsMoreThanOneTargetHttpProxy();
/**
* Indicates whether or not you can create new ForwardingRules
* @return <code>true</code> if creating ForwardingRules is supported
*/
public boolean supportsForwardingRules();
/**
* Indicates whether or not you can create more than one ForwardingRule for a HttpLoadBalancer
* @return <code>true</code> if creating more than one ForwardingRule per HttpLoadBalancer is supported
*/
public boolean supportsMoreThanOneForwardingRule();
/**
* Identifies the naming conventions that constrain how http load balancers may be named (friendly name) in this cloud.
* @return naming conventions that constrain http load balancers naming
*/
public @Nonnull NamingConstraints getConvergedHttpLoadBalancerNamingConstraints();
}