All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.cloudshiftdev.awscdk.services.elasticloadbalancing.CfnLoadBalancerProps.kt Maven / Gradle / Ivy

There is a newer version: 0.10.0
Show newest version
@file:Suppress("RedundantVisibilityModifier","RedundantUnitReturnType","RemoveRedundantQualifierName","unused","UnusedImport","ClassName","REDUNDANT_PROJECTION","DEPRECATION")

package io.cloudshiftdev.awscdk.services.elasticloadbalancing

import io.cloudshiftdev.awscdk.CfnTag
import io.cloudshiftdev.awscdk.IResolvable
import io.cloudshiftdev.awscdk.common.CdkDslMarker
import io.cloudshiftdev.awscdk.common.CdkObject
import io.cloudshiftdev.awscdk.common.CdkObjectWrappers
import kotlin.Any
import kotlin.Boolean
import kotlin.String
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 * Properties for defining a `CfnLoadBalancer`.
 *
 * Example:
 *
 * ```
 * // The code below shows an example of how to instantiate this type.
 * // The values are placeholders you should change.
 * import io.cloudshiftdev.awscdk.services.elasticloadbalancing.*;
 * Object attributes;
 * CfnLoadBalancerProps cfnLoadBalancerProps = CfnLoadBalancerProps.builder()
 * .listeners(List.of(ListenersProperty.builder()
 * .instancePort("instancePort")
 * .loadBalancerPort("loadBalancerPort")
 * .protocol("protocol")
 * // the properties below are optional
 * .instanceProtocol("instanceProtocol")
 * .policyNames(List.of("policyNames"))
 * .sslCertificateId("sslCertificateId")
 * .build()))
 * // the properties below are optional
 * .accessLoggingPolicy(AccessLoggingPolicyProperty.builder()
 * .enabled(false)
 * .s3BucketName("s3BucketName")
 * // the properties below are optional
 * .emitInterval(123)
 * .s3BucketPrefix("s3BucketPrefix")
 * .build())
 * .appCookieStickinessPolicy(List.of(AppCookieStickinessPolicyProperty.builder()
 * .cookieName("cookieName")
 * .policyName("policyName")
 * .build()))
 * .availabilityZones(List.of("availabilityZones"))
 * .connectionDrainingPolicy(ConnectionDrainingPolicyProperty.builder()
 * .enabled(false)
 * // the properties below are optional
 * .timeout(123)
 * .build())
 * .connectionSettings(ConnectionSettingsProperty.builder()
 * .idleTimeout(123)
 * .build())
 * .crossZone(false)
 * .healthCheck(HealthCheckProperty.builder()
 * .healthyThreshold("healthyThreshold")
 * .interval("interval")
 * .target("target")
 * .timeout("timeout")
 * .unhealthyThreshold("unhealthyThreshold")
 * .build())
 * .instances(List.of("instances"))
 * .lbCookieStickinessPolicy(List.of(LBCookieStickinessPolicyProperty.builder()
 * .cookieExpirationPeriod("cookieExpirationPeriod")
 * .policyName("policyName")
 * .build()))
 * .loadBalancerName("loadBalancerName")
 * .policies(List.of(PoliciesProperty.builder()
 * .attributes(List.of(attributes))
 * .policyName("policyName")
 * .policyType("policyType")
 * // the properties below are optional
 * .instancePorts(List.of("instancePorts"))
 * .loadBalancerPorts(List.of("loadBalancerPorts"))
 * .build()))
 * .scheme("scheme")
 * .securityGroups(List.of("securityGroups"))
 * .subnets(List.of("subnets"))
 * .tags(List.of(CfnTag.builder()
 * .key("key")
 * .value("value")
 * .build()))
 * .build();
 * ```
 *
 * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancing-loadbalancer.html)
 */
public interface CfnLoadBalancerProps {
  /**
   * Information about where and how access logs are stored for the load balancer.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancing-loadbalancer.html#cfn-elasticloadbalancing-loadbalancer-accessloggingpolicy)
   */
  public fun accessLoggingPolicy(): Any? = unwrap(this).getAccessLoggingPolicy()

  /**
   * Information about a policy for application-controlled session stickiness.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancing-loadbalancer.html#cfn-elasticloadbalancing-loadbalancer-appcookiestickinesspolicy)
   */
  public fun appCookieStickinessPolicy(): Any? = unwrap(this).getAppCookieStickinessPolicy()

  /**
   * The Availability Zones for a load balancer in a default VPC.
   *
   * For a load balancer in a nondefault VPC, specify `Subnets` instead.
   *
   * Update requires replacement if you did not previously specify an Availability Zone or if you
   * are removing all Availability Zones. Otherwise, update requires no interruption.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancing-loadbalancer.html#cfn-elasticloadbalancing-loadbalancer-availabilityzones)
   */
  public fun availabilityZones(): List = unwrap(this).getAvailabilityZones() ?: emptyList()

  /**
   * If enabled, the load balancer allows existing requests to complete before the load balancer
   * shifts traffic away from a deregistered or unhealthy instance.
   *
   * For more information, see [Configure connection
   * draining](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/config-conn-drain.html)
   * in the *User Guide for Classic Load Balancers* .
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancing-loadbalancer.html#cfn-elasticloadbalancing-loadbalancer-connectiondrainingpolicy)
   */
  public fun connectionDrainingPolicy(): Any? = unwrap(this).getConnectionDrainingPolicy()

  /**
   * If enabled, the load balancer allows the connections to remain idle (no data is sent over the
   * connection) for the specified duration.
   *
   * By default, Elastic Load Balancing maintains a 60-second idle connection timeout for both
   * front-end and back-end connections of your load balancer. For more information, see [Configure
   * idle connection
   * timeout](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/config-idle-timeout.html)
   * in the *User Guide for Classic Load Balancers* .
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancing-loadbalancer.html#cfn-elasticloadbalancing-loadbalancer-connectionsettings)
   */
  public fun connectionSettings(): Any? = unwrap(this).getConnectionSettings()

  /**
   * If enabled, the load balancer routes the request traffic evenly across all instances regardless
   * of the Availability Zones.
   *
   * For more information, see [Configure cross-zone load
   * balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/enable-disable-crosszone-lb.html)
   * in the *User Guide for Classic Load Balancers* .
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancing-loadbalancer.html#cfn-elasticloadbalancing-loadbalancer-crosszone)
   */
  public fun crossZone(): Any? = unwrap(this).getCrossZone()

  /**
   * The health check settings to use when evaluating the health of your EC2 instances.
   *
   * Update requires replacement if you did not previously specify health check settings or if you
   * are removing the health check settings. Otherwise, update requires no interruption.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancing-loadbalancer.html#cfn-elasticloadbalancing-loadbalancer-healthcheck)
   */
  public fun healthCheck(): Any? = unwrap(this).getHealthCheck()

  /**
   * The IDs of the instances for the load balancer.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancing-loadbalancer.html#cfn-elasticloadbalancing-loadbalancer-instances)
   */
  public fun instances(): List = unwrap(this).getInstances() ?: emptyList()

  /**
   * Information about a policy for duration-based session stickiness.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancing-loadbalancer.html#cfn-elasticloadbalancing-loadbalancer-lbcookiestickinesspolicy)
   */
  public fun lbCookieStickinessPolicy(): Any? = unwrap(this).getLbCookieStickinessPolicy()

  /**
   * The listeners for the load balancer. You can specify at most one listener per port.
   *
   * If you update the properties for a listener, AWS CloudFormation deletes the existing listener
   * and creates a new one with the specified properties. While the new listener is being created,
   * clients cannot connect to the load balancer.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancing-loadbalancer.html#cfn-elasticloadbalancing-loadbalancer-listeners)
   */
  public fun listeners(): Any

  /**
   * The name of the load balancer.
   *
   * This name must be unique within your set of load balancers for the region.
   *
   * If you don't specify a name, AWS CloudFormation generates a unique physical ID for the load
   * balancer. For more information, see [Name
   * Type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html) .
   * If you specify a name, you cannot perform updates that require replacement of this resource, but
   * you can perform other updates. To replace the resource, specify a new name.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancing-loadbalancer.html#cfn-elasticloadbalancing-loadbalancer-loadbalancername)
   */
  public fun loadBalancerName(): String? = unwrap(this).getLoadBalancerName()

  /**
   * The policies defined for your Classic Load Balancer.
   *
   * Specify only back-end server policies.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancing-loadbalancer.html#cfn-elasticloadbalancing-loadbalancer-policies)
   */
  public fun policies(): Any? = unwrap(this).getPolicies()

  /**
   * The type of load balancer. Valid only for load balancers in a VPC.
   *
   * If `Scheme` is `internet-facing` , the load balancer has a public DNS name that resolves to a
   * public IP address.
   *
   * If `Scheme` is `internal` , the load balancer has a public DNS name that resolves to a private
   * IP address.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancing-loadbalancer.html#cfn-elasticloadbalancing-loadbalancer-scheme)
   */
  public fun scheme(): String? = unwrap(this).getScheme()

  /**
   * The security groups for the load balancer.
   *
   * Valid only for load balancers in a VPC.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancing-loadbalancer.html#cfn-elasticloadbalancing-loadbalancer-securitygroups)
   */
  public fun securityGroups(): List = unwrap(this).getSecurityGroups() ?: emptyList()

  /**
   * The IDs of the subnets for the load balancer. You can specify at most one subnet per
   * Availability Zone.
   *
   * Update requires replacement if you did not previously specify a subnet or if you are removing
   * all subnets. Otherwise, update requires no interruption. To update to a different subnet in the
   * current Availability Zone, you must first update to a subnet in a different Availability Zone,
   * then update to the new subnet in the original Availability Zone.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancing-loadbalancer.html#cfn-elasticloadbalancing-loadbalancer-subnets)
   */
  public fun subnets(): List = unwrap(this).getSubnets() ?: emptyList()

  /**
   * The tags associated with a load balancer.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancing-loadbalancer.html#cfn-elasticloadbalancing-loadbalancer-tags)
   */
  public fun tags(): List = unwrap(this).getTags()?.map(CfnTag::wrap) ?: emptyList()

  /**
   * A builder for [CfnLoadBalancerProps]
   */
  @CdkDslMarker
  public interface Builder {
    /**
     * @param accessLoggingPolicy Information about where and how access logs are stored for the
     * load balancer.
     */
    public fun accessLoggingPolicy(accessLoggingPolicy: IResolvable)

    /**
     * @param accessLoggingPolicy Information about where and how access logs are stored for the
     * load balancer.
     */
    public fun accessLoggingPolicy(accessLoggingPolicy: CfnLoadBalancer.AccessLoggingPolicyProperty)

    /**
     * @param accessLoggingPolicy Information about where and how access logs are stored for the
     * load balancer.
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("21630f019adef32227375e8027479ed097d0f60931ab92d3fbc91fbfcbf954de")
    public
        fun accessLoggingPolicy(accessLoggingPolicy: CfnLoadBalancer.AccessLoggingPolicyProperty.Builder.() -> Unit)

    /**
     * @param appCookieStickinessPolicy Information about a policy for application-controlled
     * session stickiness.
     */
    public fun appCookieStickinessPolicy(appCookieStickinessPolicy: IResolvable)

    /**
     * @param appCookieStickinessPolicy Information about a policy for application-controlled
     * session stickiness.
     */
    public fun appCookieStickinessPolicy(appCookieStickinessPolicy: List)

    /**
     * @param appCookieStickinessPolicy Information about a policy for application-controlled
     * session stickiness.
     */
    public fun appCookieStickinessPolicy(vararg appCookieStickinessPolicy: Any)

    /**
     * @param availabilityZones The Availability Zones for a load balancer in a default VPC.
     * For a load balancer in a nondefault VPC, specify `Subnets` instead.
     *
     * Update requires replacement if you did not previously specify an Availability Zone or if you
     * are removing all Availability Zones. Otherwise, update requires no interruption.
     */
    public fun availabilityZones(availabilityZones: List)

    /**
     * @param availabilityZones The Availability Zones for a load balancer in a default VPC.
     * For a load balancer in a nondefault VPC, specify `Subnets` instead.
     *
     * Update requires replacement if you did not previously specify an Availability Zone or if you
     * are removing all Availability Zones. Otherwise, update requires no interruption.
     */
    public fun availabilityZones(vararg availabilityZones: String)

    /**
     * @param connectionDrainingPolicy If enabled, the load balancer allows existing requests to
     * complete before the load balancer shifts traffic away from a deregistered or unhealthy instance.
     * For more information, see [Configure connection
     * draining](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/config-conn-drain.html)
     * in the *User Guide for Classic Load Balancers* .
     */
    public fun connectionDrainingPolicy(connectionDrainingPolicy: IResolvable)

    /**
     * @param connectionDrainingPolicy If enabled, the load balancer allows existing requests to
     * complete before the load balancer shifts traffic away from a deregistered or unhealthy instance.
     * For more information, see [Configure connection
     * draining](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/config-conn-drain.html)
     * in the *User Guide for Classic Load Balancers* .
     */
    public
        fun connectionDrainingPolicy(connectionDrainingPolicy: CfnLoadBalancer.ConnectionDrainingPolicyProperty)

    /**
     * @param connectionDrainingPolicy If enabled, the load balancer allows existing requests to
     * complete before the load balancer shifts traffic away from a deregistered or unhealthy instance.
     * For more information, see [Configure connection
     * draining](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/config-conn-drain.html)
     * in the *User Guide for Classic Load Balancers* .
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("a8b1dd4718875e9e808ec4070b292385ed7cee5890a3f8c4be43dd3b1f79531b")
    public
        fun connectionDrainingPolicy(connectionDrainingPolicy: CfnLoadBalancer.ConnectionDrainingPolicyProperty.Builder.() -> Unit)

    /**
     * @param connectionSettings If enabled, the load balancer allows the connections to remain idle
     * (no data is sent over the connection) for the specified duration.
     * By default, Elastic Load Balancing maintains a 60-second idle connection timeout for both
     * front-end and back-end connections of your load balancer. For more information, see [Configure
     * idle connection
     * timeout](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/config-idle-timeout.html)
     * in the *User Guide for Classic Load Balancers* .
     */
    public fun connectionSettings(connectionSettings: IResolvable)

    /**
     * @param connectionSettings If enabled, the load balancer allows the connections to remain idle
     * (no data is sent over the connection) for the specified duration.
     * By default, Elastic Load Balancing maintains a 60-second idle connection timeout for both
     * front-end and back-end connections of your load balancer. For more information, see [Configure
     * idle connection
     * timeout](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/config-idle-timeout.html)
     * in the *User Guide for Classic Load Balancers* .
     */
    public fun connectionSettings(connectionSettings: CfnLoadBalancer.ConnectionSettingsProperty)

    /**
     * @param connectionSettings If enabled, the load balancer allows the connections to remain idle
     * (no data is sent over the connection) for the specified duration.
     * By default, Elastic Load Balancing maintains a 60-second idle connection timeout for both
     * front-end and back-end connections of your load balancer. For more information, see [Configure
     * idle connection
     * timeout](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/config-idle-timeout.html)
     * in the *User Guide for Classic Load Balancers* .
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("7670306a43c0c8e5c175210ce2adfe4df9a208cc5bfd248260f3a3f6b9e4a205")
    public
        fun connectionSettings(connectionSettings: CfnLoadBalancer.ConnectionSettingsProperty.Builder.() -> Unit)

    /**
     * @param crossZone If enabled, the load balancer routes the request traffic evenly across all
     * instances regardless of the Availability Zones.
     * For more information, see [Configure cross-zone load
     * balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/enable-disable-crosszone-lb.html)
     * in the *User Guide for Classic Load Balancers* .
     */
    public fun crossZone(crossZone: Boolean)

    /**
     * @param crossZone If enabled, the load balancer routes the request traffic evenly across all
     * instances regardless of the Availability Zones.
     * For more information, see [Configure cross-zone load
     * balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/enable-disable-crosszone-lb.html)
     * in the *User Guide for Classic Load Balancers* .
     */
    public fun crossZone(crossZone: IResolvable)

    /**
     * @param healthCheck The health check settings to use when evaluating the health of your EC2
     * instances.
     * Update requires replacement if you did not previously specify health check settings or if you
     * are removing the health check settings. Otherwise, update requires no interruption.
     */
    public fun healthCheck(healthCheck: IResolvable)

    /**
     * @param healthCheck The health check settings to use when evaluating the health of your EC2
     * instances.
     * Update requires replacement if you did not previously specify health check settings or if you
     * are removing the health check settings. Otherwise, update requires no interruption.
     */
    public fun healthCheck(healthCheck: CfnLoadBalancer.HealthCheckProperty)

    /**
     * @param healthCheck The health check settings to use when evaluating the health of your EC2
     * instances.
     * Update requires replacement if you did not previously specify health check settings or if you
     * are removing the health check settings. Otherwise, update requires no interruption.
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("eb0026d3683ec299419366ce90e7c230bcc77c5a6fb78a0b56f084fe9ab4d35d")
    public fun healthCheck(healthCheck: CfnLoadBalancer.HealthCheckProperty.Builder.() -> Unit)

    /**
     * @param instances The IDs of the instances for the load balancer.
     */
    public fun instances(instances: List)

    /**
     * @param instances The IDs of the instances for the load balancer.
     */
    public fun instances(vararg instances: String)

    /**
     * @param lbCookieStickinessPolicy Information about a policy for duration-based session
     * stickiness.
     */
    public fun lbCookieStickinessPolicy(lbCookieStickinessPolicy: IResolvable)

    /**
     * @param lbCookieStickinessPolicy Information about a policy for duration-based session
     * stickiness.
     */
    public fun lbCookieStickinessPolicy(lbCookieStickinessPolicy: List)

    /**
     * @param lbCookieStickinessPolicy Information about a policy for duration-based session
     * stickiness.
     */
    public fun lbCookieStickinessPolicy(vararg lbCookieStickinessPolicy: Any)

    /**
     * @param listeners The listeners for the load balancer. You can specify at most one listener
     * per port. 
     * If you update the properties for a listener, AWS CloudFormation deletes the existing listener
     * and creates a new one with the specified properties. While the new listener is being created,
     * clients cannot connect to the load balancer.
     */
    public fun listeners(listeners: IResolvable)

    /**
     * @param listeners The listeners for the load balancer. You can specify at most one listener
     * per port. 
     * If you update the properties for a listener, AWS CloudFormation deletes the existing listener
     * and creates a new one with the specified properties. While the new listener is being created,
     * clients cannot connect to the load balancer.
     */
    public fun listeners(listeners: List)

    /**
     * @param listeners The listeners for the load balancer. You can specify at most one listener
     * per port. 
     * If you update the properties for a listener, AWS CloudFormation deletes the existing listener
     * and creates a new one with the specified properties. While the new listener is being created,
     * clients cannot connect to the load balancer.
     */
    public fun listeners(vararg listeners: Any)

    /**
     * @param loadBalancerName The name of the load balancer.
     * This name must be unique within your set of load balancers for the region.
     *
     * If you don't specify a name, AWS CloudFormation generates a unique physical ID for the load
     * balancer. For more information, see [Name
     * Type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html) .
     * If you specify a name, you cannot perform updates that require replacement of this resource, but
     * you can perform other updates. To replace the resource, specify a new name.
     */
    public fun loadBalancerName(loadBalancerName: String)

    /**
     * @param policies The policies defined for your Classic Load Balancer.
     * Specify only back-end server policies.
     */
    public fun policies(policies: IResolvable)

    /**
     * @param policies The policies defined for your Classic Load Balancer.
     * Specify only back-end server policies.
     */
    public fun policies(policies: List)

    /**
     * @param policies The policies defined for your Classic Load Balancer.
     * Specify only back-end server policies.
     */
    public fun policies(vararg policies: Any)

    /**
     * @param scheme The type of load balancer. Valid only for load balancers in a VPC.
     * If `Scheme` is `internet-facing` , the load balancer has a public DNS name that resolves to a
     * public IP address.
     *
     * If `Scheme` is `internal` , the load balancer has a public DNS name that resolves to a
     * private IP address.
     */
    public fun scheme(scheme: String)

    /**
     * @param securityGroups The security groups for the load balancer.
     * Valid only for load balancers in a VPC.
     */
    public fun securityGroups(securityGroups: List)

    /**
     * @param securityGroups The security groups for the load balancer.
     * Valid only for load balancers in a VPC.
     */
    public fun securityGroups(vararg securityGroups: String)

    /**
     * @param subnets The IDs of the subnets for the load balancer. You can specify at most one
     * subnet per Availability Zone.
     * Update requires replacement if you did not previously specify a subnet or if you are removing
     * all subnets. Otherwise, update requires no interruption. To update to a different subnet in the
     * current Availability Zone, you must first update to a subnet in a different Availability Zone,
     * then update to the new subnet in the original Availability Zone.
     */
    public fun subnets(subnets: List)

    /**
     * @param subnets The IDs of the subnets for the load balancer. You can specify at most one
     * subnet per Availability Zone.
     * Update requires replacement if you did not previously specify a subnet or if you are removing
     * all subnets. Otherwise, update requires no interruption. To update to a different subnet in the
     * current Availability Zone, you must first update to a subnet in a different Availability Zone,
     * then update to the new subnet in the original Availability Zone.
     */
    public fun subnets(vararg subnets: String)

    /**
     * @param tags The tags associated with a load balancer.
     */
    public fun tags(tags: List)

    /**
     * @param tags The tags associated with a load balancer.
     */
    public fun tags(vararg tags: CfnTag)
  }

  private class BuilderImpl : Builder {
    private val cdkBuilder:
        software.amazon.awscdk.services.elasticloadbalancing.CfnLoadBalancerProps.Builder =
        software.amazon.awscdk.services.elasticloadbalancing.CfnLoadBalancerProps.builder()

    /**
     * @param accessLoggingPolicy Information about where and how access logs are stored for the
     * load balancer.
     */
    override fun accessLoggingPolicy(accessLoggingPolicy: IResolvable) {
      cdkBuilder.accessLoggingPolicy(accessLoggingPolicy.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param accessLoggingPolicy Information about where and how access logs are stored for the
     * load balancer.
     */
    override
        fun accessLoggingPolicy(accessLoggingPolicy: CfnLoadBalancer.AccessLoggingPolicyProperty) {
      cdkBuilder.accessLoggingPolicy(accessLoggingPolicy.let(CfnLoadBalancer.AccessLoggingPolicyProperty.Companion::unwrap))
    }

    /**
     * @param accessLoggingPolicy Information about where and how access logs are stored for the
     * load balancer.
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("21630f019adef32227375e8027479ed097d0f60931ab92d3fbc91fbfcbf954de")
    override
        fun accessLoggingPolicy(accessLoggingPolicy: CfnLoadBalancer.AccessLoggingPolicyProperty.Builder.() -> Unit):
        Unit = accessLoggingPolicy(CfnLoadBalancer.AccessLoggingPolicyProperty(accessLoggingPolicy))

    /**
     * @param appCookieStickinessPolicy Information about a policy for application-controlled
     * session stickiness.
     */
    override fun appCookieStickinessPolicy(appCookieStickinessPolicy: IResolvable) {
      cdkBuilder.appCookieStickinessPolicy(appCookieStickinessPolicy.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param appCookieStickinessPolicy Information about a policy for application-controlled
     * session stickiness.
     */
    override fun appCookieStickinessPolicy(appCookieStickinessPolicy: List) {
      cdkBuilder.appCookieStickinessPolicy(appCookieStickinessPolicy.map{CdkObjectWrappers.unwrap(it)})
    }

    /**
     * @param appCookieStickinessPolicy Information about a policy for application-controlled
     * session stickiness.
     */
    override fun appCookieStickinessPolicy(vararg appCookieStickinessPolicy: Any): Unit =
        appCookieStickinessPolicy(appCookieStickinessPolicy.toList())

    /**
     * @param availabilityZones The Availability Zones for a load balancer in a default VPC.
     * For a load balancer in a nondefault VPC, specify `Subnets` instead.
     *
     * Update requires replacement if you did not previously specify an Availability Zone or if you
     * are removing all Availability Zones. Otherwise, update requires no interruption.
     */
    override fun availabilityZones(availabilityZones: List) {
      cdkBuilder.availabilityZones(availabilityZones)
    }

    /**
     * @param availabilityZones The Availability Zones for a load balancer in a default VPC.
     * For a load balancer in a nondefault VPC, specify `Subnets` instead.
     *
     * Update requires replacement if you did not previously specify an Availability Zone or if you
     * are removing all Availability Zones. Otherwise, update requires no interruption.
     */
    override fun availabilityZones(vararg availabilityZones: String): Unit =
        availabilityZones(availabilityZones.toList())

    /**
     * @param connectionDrainingPolicy If enabled, the load balancer allows existing requests to
     * complete before the load balancer shifts traffic away from a deregistered or unhealthy instance.
     * For more information, see [Configure connection
     * draining](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/config-conn-drain.html)
     * in the *User Guide for Classic Load Balancers* .
     */
    override fun connectionDrainingPolicy(connectionDrainingPolicy: IResolvable) {
      cdkBuilder.connectionDrainingPolicy(connectionDrainingPolicy.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param connectionDrainingPolicy If enabled, the load balancer allows existing requests to
     * complete before the load balancer shifts traffic away from a deregistered or unhealthy instance.
     * For more information, see [Configure connection
     * draining](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/config-conn-drain.html)
     * in the *User Guide for Classic Load Balancers* .
     */
    override
        fun connectionDrainingPolicy(connectionDrainingPolicy: CfnLoadBalancer.ConnectionDrainingPolicyProperty) {
      cdkBuilder.connectionDrainingPolicy(connectionDrainingPolicy.let(CfnLoadBalancer.ConnectionDrainingPolicyProperty.Companion::unwrap))
    }

    /**
     * @param connectionDrainingPolicy If enabled, the load balancer allows existing requests to
     * complete before the load balancer shifts traffic away from a deregistered or unhealthy instance.
     * For more information, see [Configure connection
     * draining](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/config-conn-drain.html)
     * in the *User Guide for Classic Load Balancers* .
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("a8b1dd4718875e9e808ec4070b292385ed7cee5890a3f8c4be43dd3b1f79531b")
    override
        fun connectionDrainingPolicy(connectionDrainingPolicy: CfnLoadBalancer.ConnectionDrainingPolicyProperty.Builder.() -> Unit):
        Unit =
        connectionDrainingPolicy(CfnLoadBalancer.ConnectionDrainingPolicyProperty(connectionDrainingPolicy))

    /**
     * @param connectionSettings If enabled, the load balancer allows the connections to remain idle
     * (no data is sent over the connection) for the specified duration.
     * By default, Elastic Load Balancing maintains a 60-second idle connection timeout for both
     * front-end and back-end connections of your load balancer. For more information, see [Configure
     * idle connection
     * timeout](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/config-idle-timeout.html)
     * in the *User Guide for Classic Load Balancers* .
     */
    override fun connectionSettings(connectionSettings: IResolvable) {
      cdkBuilder.connectionSettings(connectionSettings.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param connectionSettings If enabled, the load balancer allows the connections to remain idle
     * (no data is sent over the connection) for the specified duration.
     * By default, Elastic Load Balancing maintains a 60-second idle connection timeout for both
     * front-end and back-end connections of your load balancer. For more information, see [Configure
     * idle connection
     * timeout](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/config-idle-timeout.html)
     * in the *User Guide for Classic Load Balancers* .
     */
    override
        fun connectionSettings(connectionSettings: CfnLoadBalancer.ConnectionSettingsProperty) {
      cdkBuilder.connectionSettings(connectionSettings.let(CfnLoadBalancer.ConnectionSettingsProperty.Companion::unwrap))
    }

    /**
     * @param connectionSettings If enabled, the load balancer allows the connections to remain idle
     * (no data is sent over the connection) for the specified duration.
     * By default, Elastic Load Balancing maintains a 60-second idle connection timeout for both
     * front-end and back-end connections of your load balancer. For more information, see [Configure
     * idle connection
     * timeout](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/config-idle-timeout.html)
     * in the *User Guide for Classic Load Balancers* .
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("7670306a43c0c8e5c175210ce2adfe4df9a208cc5bfd248260f3a3f6b9e4a205")
    override
        fun connectionSettings(connectionSettings: CfnLoadBalancer.ConnectionSettingsProperty.Builder.() -> Unit):
        Unit = connectionSettings(CfnLoadBalancer.ConnectionSettingsProperty(connectionSettings))

    /**
     * @param crossZone If enabled, the load balancer routes the request traffic evenly across all
     * instances regardless of the Availability Zones.
     * For more information, see [Configure cross-zone load
     * balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/enable-disable-crosszone-lb.html)
     * in the *User Guide for Classic Load Balancers* .
     */
    override fun crossZone(crossZone: Boolean) {
      cdkBuilder.crossZone(crossZone)
    }

    /**
     * @param crossZone If enabled, the load balancer routes the request traffic evenly across all
     * instances regardless of the Availability Zones.
     * For more information, see [Configure cross-zone load
     * balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/enable-disable-crosszone-lb.html)
     * in the *User Guide for Classic Load Balancers* .
     */
    override fun crossZone(crossZone: IResolvable) {
      cdkBuilder.crossZone(crossZone.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param healthCheck The health check settings to use when evaluating the health of your EC2
     * instances.
     * Update requires replacement if you did not previously specify health check settings or if you
     * are removing the health check settings. Otherwise, update requires no interruption.
     */
    override fun healthCheck(healthCheck: IResolvable) {
      cdkBuilder.healthCheck(healthCheck.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param healthCheck The health check settings to use when evaluating the health of your EC2
     * instances.
     * Update requires replacement if you did not previously specify health check settings or if you
     * are removing the health check settings. Otherwise, update requires no interruption.
     */
    override fun healthCheck(healthCheck: CfnLoadBalancer.HealthCheckProperty) {
      cdkBuilder.healthCheck(healthCheck.let(CfnLoadBalancer.HealthCheckProperty.Companion::unwrap))
    }

    /**
     * @param healthCheck The health check settings to use when evaluating the health of your EC2
     * instances.
     * Update requires replacement if you did not previously specify health check settings or if you
     * are removing the health check settings. Otherwise, update requires no interruption.
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("eb0026d3683ec299419366ce90e7c230bcc77c5a6fb78a0b56f084fe9ab4d35d")
    override fun healthCheck(healthCheck: CfnLoadBalancer.HealthCheckProperty.Builder.() -> Unit):
        Unit = healthCheck(CfnLoadBalancer.HealthCheckProperty(healthCheck))

    /**
     * @param instances The IDs of the instances for the load balancer.
     */
    override fun instances(instances: List) {
      cdkBuilder.instances(instances)
    }

    /**
     * @param instances The IDs of the instances for the load balancer.
     */
    override fun instances(vararg instances: String): Unit = instances(instances.toList())

    /**
     * @param lbCookieStickinessPolicy Information about a policy for duration-based session
     * stickiness.
     */
    override fun lbCookieStickinessPolicy(lbCookieStickinessPolicy: IResolvable) {
      cdkBuilder.lbCookieStickinessPolicy(lbCookieStickinessPolicy.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param lbCookieStickinessPolicy Information about a policy for duration-based session
     * stickiness.
     */
    override fun lbCookieStickinessPolicy(lbCookieStickinessPolicy: List) {
      cdkBuilder.lbCookieStickinessPolicy(lbCookieStickinessPolicy.map{CdkObjectWrappers.unwrap(it)})
    }

    /**
     * @param lbCookieStickinessPolicy Information about a policy for duration-based session
     * stickiness.
     */
    override fun lbCookieStickinessPolicy(vararg lbCookieStickinessPolicy: Any): Unit =
        lbCookieStickinessPolicy(lbCookieStickinessPolicy.toList())

    /**
     * @param listeners The listeners for the load balancer. You can specify at most one listener
     * per port. 
     * If you update the properties for a listener, AWS CloudFormation deletes the existing listener
     * and creates a new one with the specified properties. While the new listener is being created,
     * clients cannot connect to the load balancer.
     */
    override fun listeners(listeners: IResolvable) {
      cdkBuilder.listeners(listeners.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param listeners The listeners for the load balancer. You can specify at most one listener
     * per port. 
     * If you update the properties for a listener, AWS CloudFormation deletes the existing listener
     * and creates a new one with the specified properties. While the new listener is being created,
     * clients cannot connect to the load balancer.
     */
    override fun listeners(listeners: List) {
      cdkBuilder.listeners(listeners.map{CdkObjectWrappers.unwrap(it)})
    }

    /**
     * @param listeners The listeners for the load balancer. You can specify at most one listener
     * per port. 
     * If you update the properties for a listener, AWS CloudFormation deletes the existing listener
     * and creates a new one with the specified properties. While the new listener is being created,
     * clients cannot connect to the load balancer.
     */
    override fun listeners(vararg listeners: Any): Unit = listeners(listeners.toList())

    /**
     * @param loadBalancerName The name of the load balancer.
     * This name must be unique within your set of load balancers for the region.
     *
     * If you don't specify a name, AWS CloudFormation generates a unique physical ID for the load
     * balancer. For more information, see [Name
     * Type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html) .
     * If you specify a name, you cannot perform updates that require replacement of this resource, but
     * you can perform other updates. To replace the resource, specify a new name.
     */
    override fun loadBalancerName(loadBalancerName: String) {
      cdkBuilder.loadBalancerName(loadBalancerName)
    }

    /**
     * @param policies The policies defined for your Classic Load Balancer.
     * Specify only back-end server policies.
     */
    override fun policies(policies: IResolvable) {
      cdkBuilder.policies(policies.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param policies The policies defined for your Classic Load Balancer.
     * Specify only back-end server policies.
     */
    override fun policies(policies: List) {
      cdkBuilder.policies(policies.map{CdkObjectWrappers.unwrap(it)})
    }

    /**
     * @param policies The policies defined for your Classic Load Balancer.
     * Specify only back-end server policies.
     */
    override fun policies(vararg policies: Any): Unit = policies(policies.toList())

    /**
     * @param scheme The type of load balancer. Valid only for load balancers in a VPC.
     * If `Scheme` is `internet-facing` , the load balancer has a public DNS name that resolves to a
     * public IP address.
     *
     * If `Scheme` is `internal` , the load balancer has a public DNS name that resolves to a
     * private IP address.
     */
    override fun scheme(scheme: String) {
      cdkBuilder.scheme(scheme)
    }

    /**
     * @param securityGroups The security groups for the load balancer.
     * Valid only for load balancers in a VPC.
     */
    override fun securityGroups(securityGroups: List) {
      cdkBuilder.securityGroups(securityGroups)
    }

    /**
     * @param securityGroups The security groups for the load balancer.
     * Valid only for load balancers in a VPC.
     */
    override fun securityGroups(vararg securityGroups: String): Unit =
        securityGroups(securityGroups.toList())

    /**
     * @param subnets The IDs of the subnets for the load balancer. You can specify at most one
     * subnet per Availability Zone.
     * Update requires replacement if you did not previously specify a subnet or if you are removing
     * all subnets. Otherwise, update requires no interruption. To update to a different subnet in the
     * current Availability Zone, you must first update to a subnet in a different Availability Zone,
     * then update to the new subnet in the original Availability Zone.
     */
    override fun subnets(subnets: List) {
      cdkBuilder.subnets(subnets)
    }

    /**
     * @param subnets The IDs of the subnets for the load balancer. You can specify at most one
     * subnet per Availability Zone.
     * Update requires replacement if you did not previously specify a subnet or if you are removing
     * all subnets. Otherwise, update requires no interruption. To update to a different subnet in the
     * current Availability Zone, you must first update to a subnet in a different Availability Zone,
     * then update to the new subnet in the original Availability Zone.
     */
    override fun subnets(vararg subnets: String): Unit = subnets(subnets.toList())

    /**
     * @param tags The tags associated with a load balancer.
     */
    override fun tags(tags: List) {
      cdkBuilder.tags(tags.map(CfnTag.Companion::unwrap))
    }

    /**
     * @param tags The tags associated with a load balancer.
     */
    override fun tags(vararg tags: CfnTag): Unit = tags(tags.toList())

    public fun build(): software.amazon.awscdk.services.elasticloadbalancing.CfnLoadBalancerProps =
        cdkBuilder.build()
  }

  private class Wrapper(
    cdkObject: software.amazon.awscdk.services.elasticloadbalancing.CfnLoadBalancerProps,
  ) : CdkObject(cdkObject),
      CfnLoadBalancerProps {
    /**
     * Information about where and how access logs are stored for the load balancer.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancing-loadbalancer.html#cfn-elasticloadbalancing-loadbalancer-accessloggingpolicy)
     */
    override fun accessLoggingPolicy(): Any? = unwrap(this).getAccessLoggingPolicy()

    /**
     * Information about a policy for application-controlled session stickiness.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancing-loadbalancer.html#cfn-elasticloadbalancing-loadbalancer-appcookiestickinesspolicy)
     */
    override fun appCookieStickinessPolicy(): Any? = unwrap(this).getAppCookieStickinessPolicy()

    /**
     * The Availability Zones for a load balancer in a default VPC.
     *
     * For a load balancer in a nondefault VPC, specify `Subnets` instead.
     *
     * Update requires replacement if you did not previously specify an Availability Zone or if you
     * are removing all Availability Zones. Otherwise, update requires no interruption.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancing-loadbalancer.html#cfn-elasticloadbalancing-loadbalancer-availabilityzones)
     */
    override fun availabilityZones(): List = unwrap(this).getAvailabilityZones() ?:
        emptyList()

    /**
     * If enabled, the load balancer allows existing requests to complete before the load balancer
     * shifts traffic away from a deregistered or unhealthy instance.
     *
     * For more information, see [Configure connection
     * draining](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/config-conn-drain.html)
     * in the *User Guide for Classic Load Balancers* .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancing-loadbalancer.html#cfn-elasticloadbalancing-loadbalancer-connectiondrainingpolicy)
     */
    override fun connectionDrainingPolicy(): Any? = unwrap(this).getConnectionDrainingPolicy()

    /**
     * If enabled, the load balancer allows the connections to remain idle (no data is sent over the
     * connection) for the specified duration.
     *
     * By default, Elastic Load Balancing maintains a 60-second idle connection timeout for both
     * front-end and back-end connections of your load balancer. For more information, see [Configure
     * idle connection
     * timeout](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/config-idle-timeout.html)
     * in the *User Guide for Classic Load Balancers* .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancing-loadbalancer.html#cfn-elasticloadbalancing-loadbalancer-connectionsettings)
     */
    override fun connectionSettings(): Any? = unwrap(this).getConnectionSettings()

    /**
     * If enabled, the load balancer routes the request traffic evenly across all instances
     * regardless of the Availability Zones.
     *
     * For more information, see [Configure cross-zone load
     * balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/enable-disable-crosszone-lb.html)
     * in the *User Guide for Classic Load Balancers* .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancing-loadbalancer.html#cfn-elasticloadbalancing-loadbalancer-crosszone)
     */
    override fun crossZone(): Any? = unwrap(this).getCrossZone()

    /**
     * The health check settings to use when evaluating the health of your EC2 instances.
     *
     * Update requires replacement if you did not previously specify health check settings or if you
     * are removing the health check settings. Otherwise, update requires no interruption.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancing-loadbalancer.html#cfn-elasticloadbalancing-loadbalancer-healthcheck)
     */
    override fun healthCheck(): Any? = unwrap(this).getHealthCheck()

    /**
     * The IDs of the instances for the load balancer.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancing-loadbalancer.html#cfn-elasticloadbalancing-loadbalancer-instances)
     */
    override fun instances(): List = unwrap(this).getInstances() ?: emptyList()

    /**
     * Information about a policy for duration-based session stickiness.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancing-loadbalancer.html#cfn-elasticloadbalancing-loadbalancer-lbcookiestickinesspolicy)
     */
    override fun lbCookieStickinessPolicy(): Any? = unwrap(this).getLbCookieStickinessPolicy()

    /**
     * The listeners for the load balancer. You can specify at most one listener per port.
     *
     * If you update the properties for a listener, AWS CloudFormation deletes the existing listener
     * and creates a new one with the specified properties. While the new listener is being created,
     * clients cannot connect to the load balancer.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancing-loadbalancer.html#cfn-elasticloadbalancing-loadbalancer-listeners)
     */
    override fun listeners(): Any = unwrap(this).getListeners()

    /**
     * The name of the load balancer.
     *
     * This name must be unique within your set of load balancers for the region.
     *
     * If you don't specify a name, AWS CloudFormation generates a unique physical ID for the load
     * balancer. For more information, see [Name
     * Type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html) .
     * If you specify a name, you cannot perform updates that require replacement of this resource, but
     * you can perform other updates. To replace the resource, specify a new name.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancing-loadbalancer.html#cfn-elasticloadbalancing-loadbalancer-loadbalancername)
     */
    override fun loadBalancerName(): String? = unwrap(this).getLoadBalancerName()

    /**
     * The policies defined for your Classic Load Balancer.
     *
     * Specify only back-end server policies.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancing-loadbalancer.html#cfn-elasticloadbalancing-loadbalancer-policies)
     */
    override fun policies(): Any? = unwrap(this).getPolicies()

    /**
     * The type of load balancer. Valid only for load balancers in a VPC.
     *
     * If `Scheme` is `internet-facing` , the load balancer has a public DNS name that resolves to a
     * public IP address.
     *
     * If `Scheme` is `internal` , the load balancer has a public DNS name that resolves to a
     * private IP address.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancing-loadbalancer.html#cfn-elasticloadbalancing-loadbalancer-scheme)
     */
    override fun scheme(): String? = unwrap(this).getScheme()

    /**
     * The security groups for the load balancer.
     *
     * Valid only for load balancers in a VPC.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancing-loadbalancer.html#cfn-elasticloadbalancing-loadbalancer-securitygroups)
     */
    override fun securityGroups(): List = unwrap(this).getSecurityGroups() ?: emptyList()

    /**
     * The IDs of the subnets for the load balancer. You can specify at most one subnet per
     * Availability Zone.
     *
     * Update requires replacement if you did not previously specify a subnet or if you are removing
     * all subnets. Otherwise, update requires no interruption. To update to a different subnet in the
     * current Availability Zone, you must first update to a subnet in a different Availability Zone,
     * then update to the new subnet in the original Availability Zone.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancing-loadbalancer.html#cfn-elasticloadbalancing-loadbalancer-subnets)
     */
    override fun subnets(): List = unwrap(this).getSubnets() ?: emptyList()

    /**
     * The tags associated with a load balancer.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancing-loadbalancer.html#cfn-elasticloadbalancing-loadbalancer-tags)
     */
    override fun tags(): List = unwrap(this).getTags()?.map(CfnTag::wrap) ?: emptyList()
  }

  public companion object {
    public operator fun invoke(block: Builder.() -> Unit = {}): CfnLoadBalancerProps {
      val builderImpl = BuilderImpl()
      return Wrapper(builderImpl.apply(block).build())
    }

    internal
        fun wrap(cdkObject: software.amazon.awscdk.services.elasticloadbalancing.CfnLoadBalancerProps):
        CfnLoadBalancerProps = CdkObjectWrappers.wrap(cdkObject) as? CfnLoadBalancerProps ?:
        Wrapper(cdkObject)

    internal fun unwrap(wrapped: CfnLoadBalancerProps):
        software.amazon.awscdk.services.elasticloadbalancing.CfnLoadBalancerProps = (wrapped as
        CdkObject).cdkObject as
        software.amazon.awscdk.services.elasticloadbalancing.CfnLoadBalancerProps
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy