/**
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * SPDX-License-Identifier: Apache-2.0.
 */
#pragma once
#include  Describes a load balancer.See Also:
   AWS
   * API Reference
The name of the load balancer (e.g., my-load-balancer).
The name of the load balancer (e.g., my-load-balancer).
The name of the load balancer (e.g., my-load-balancer).
The name of the load balancer (e.g., my-load-balancer).
The name of the load balancer (e.g., my-load-balancer).
The name of the load balancer (e.g., my-load-balancer).
The name of the load balancer (e.g., my-load-balancer).
The name of the load balancer (e.g., my-load-balancer).
The Amazon Resource Name (ARN) of the load balancer.
*/ inline const Aws::String& GetArn() const{ return m_arn; } /** *The Amazon Resource Name (ARN) of the load balancer.
*/ inline bool ArnHasBeenSet() const { return m_arnHasBeenSet; } /** *The Amazon Resource Name (ARN) of the load balancer.
*/ inline void SetArn(const Aws::String& value) { m_arnHasBeenSet = true; m_arn = value; } /** *The Amazon Resource Name (ARN) of the load balancer.
*/ inline void SetArn(Aws::String&& value) { m_arnHasBeenSet = true; m_arn = std::move(value); } /** *The Amazon Resource Name (ARN) of the load balancer.
*/ inline void SetArn(const char* value) { m_arnHasBeenSet = true; m_arn.assign(value); } /** *The Amazon Resource Name (ARN) of the load balancer.
*/ inline LoadBalancer& WithArn(const Aws::String& value) { SetArn(value); return *this;} /** *The Amazon Resource Name (ARN) of the load balancer.
*/ inline LoadBalancer& WithArn(Aws::String&& value) { SetArn(std::move(value)); return *this;} /** *The Amazon Resource Name (ARN) of the load balancer.
*/ inline LoadBalancer& WithArn(const char* value) { SetArn(value); return *this;} /** *The support code. Include this code in your email to support when you have * questions about your Lightsail load balancer. This code enables our support team * to look up your Lightsail information more easily.
*/ inline const Aws::String& GetSupportCode() const{ return m_supportCode; } /** *The support code. Include this code in your email to support when you have * questions about your Lightsail load balancer. This code enables our support team * to look up your Lightsail information more easily.
*/ inline bool SupportCodeHasBeenSet() const { return m_supportCodeHasBeenSet; } /** *The support code. Include this code in your email to support when you have * questions about your Lightsail load balancer. This code enables our support team * to look up your Lightsail information more easily.
*/ inline void SetSupportCode(const Aws::String& value) { m_supportCodeHasBeenSet = true; m_supportCode = value; } /** *The support code. Include this code in your email to support when you have * questions about your Lightsail load balancer. This code enables our support team * to look up your Lightsail information more easily.
*/ inline void SetSupportCode(Aws::String&& value) { m_supportCodeHasBeenSet = true; m_supportCode = std::move(value); } /** *The support code. Include this code in your email to support when you have * questions about your Lightsail load balancer. This code enables our support team * to look up your Lightsail information more easily.
*/ inline void SetSupportCode(const char* value) { m_supportCodeHasBeenSet = true; m_supportCode.assign(value); } /** *The support code. Include this code in your email to support when you have * questions about your Lightsail load balancer. This code enables our support team * to look up your Lightsail information more easily.
*/ inline LoadBalancer& WithSupportCode(const Aws::String& value) { SetSupportCode(value); return *this;} /** *The support code. Include this code in your email to support when you have * questions about your Lightsail load balancer. This code enables our support team * to look up your Lightsail information more easily.
*/ inline LoadBalancer& WithSupportCode(Aws::String&& value) { SetSupportCode(std::move(value)); return *this;} /** *The support code. Include this code in your email to support when you have * questions about your Lightsail load balancer. This code enables our support team * to look up your Lightsail information more easily.
*/ inline LoadBalancer& WithSupportCode(const char* value) { SetSupportCode(value); return *this;} /** *The date when your load balancer was created.
*/ inline const Aws::Utils::DateTime& GetCreatedAt() const{ return m_createdAt; } /** *The date when your load balancer was created.
*/ inline bool CreatedAtHasBeenSet() const { return m_createdAtHasBeenSet; } /** *The date when your load balancer was created.
*/ inline void SetCreatedAt(const Aws::Utils::DateTime& value) { m_createdAtHasBeenSet = true; m_createdAt = value; } /** *The date when your load balancer was created.
*/ inline void SetCreatedAt(Aws::Utils::DateTime&& value) { m_createdAtHasBeenSet = true; m_createdAt = std::move(value); } /** *The date when your load balancer was created.
*/ inline LoadBalancer& WithCreatedAt(const Aws::Utils::DateTime& value) { SetCreatedAt(value); return *this;} /** *The date when your load balancer was created.
*/ inline LoadBalancer& WithCreatedAt(Aws::Utils::DateTime&& value) { SetCreatedAt(std::move(value)); return *this;} /** *The AWS Region where your load balancer was created (e.g.,
     * us-east-2a). Lightsail automatically creates your load balancer
     * across Availability Zones.
The AWS Region where your load balancer was created (e.g.,
     * us-east-2a). Lightsail automatically creates your load balancer
     * across Availability Zones.
The AWS Region where your load balancer was created (e.g.,
     * us-east-2a). Lightsail automatically creates your load balancer
     * across Availability Zones.
The AWS Region where your load balancer was created (e.g.,
     * us-east-2a). Lightsail automatically creates your load balancer
     * across Availability Zones.
The AWS Region where your load balancer was created (e.g.,
     * us-east-2a). Lightsail automatically creates your load balancer
     * across Availability Zones.
The AWS Region where your load balancer was created (e.g.,
     * us-east-2a). Lightsail automatically creates your load balancer
     * across Availability Zones.
The resource type (e.g., LoadBalancer.
The resource type (e.g., LoadBalancer.
The resource type (e.g., LoadBalancer.
The resource type (e.g., LoadBalancer.
The resource type (e.g., LoadBalancer.
The resource type (e.g., LoadBalancer.
The tag keys and optional values for the resource. For more information about * tags in Lightsail, see the Amazon * Lightsail Developer Guide.
*/ inline const Aws::VectorThe tag keys and optional values for the resource. For more information about * tags in Lightsail, see the Amazon * Lightsail Developer Guide.
*/ inline bool TagsHasBeenSet() const { return m_tagsHasBeenSet; } /** *The tag keys and optional values for the resource. For more information about * tags in Lightsail, see the Amazon * Lightsail Developer Guide.
*/ inline void SetTags(const Aws::VectorThe tag keys and optional values for the resource. For more information about * tags in Lightsail, see the Amazon * Lightsail Developer Guide.
*/ inline void SetTags(Aws::VectorThe tag keys and optional values for the resource. For more information about * tags in Lightsail, see the Amazon * Lightsail Developer Guide.
*/ inline LoadBalancer& WithTags(const Aws::VectorThe tag keys and optional values for the resource. For more information about * tags in Lightsail, see the Amazon * Lightsail Developer Guide.
*/ inline LoadBalancer& WithTags(Aws::VectorThe tag keys and optional values for the resource. For more information about * tags in Lightsail, see the Amazon * Lightsail Developer Guide.
*/ inline LoadBalancer& AddTags(const Tag& value) { m_tagsHasBeenSet = true; m_tags.push_back(value); return *this; } /** *The tag keys and optional values for the resource. For more information about * tags in Lightsail, see the Amazon * Lightsail Developer Guide.
*/ inline LoadBalancer& AddTags(Tag&& value) { m_tagsHasBeenSet = true; m_tags.push_back(std::move(value)); return *this; } /** *The DNS name of your Lightsail load balancer.
*/ inline const Aws::String& GetDnsName() const{ return m_dnsName; } /** *The DNS name of your Lightsail load balancer.
*/ inline bool DnsNameHasBeenSet() const { return m_dnsNameHasBeenSet; } /** *The DNS name of your Lightsail load balancer.
*/ inline void SetDnsName(const Aws::String& value) { m_dnsNameHasBeenSet = true; m_dnsName = value; } /** *The DNS name of your Lightsail load balancer.
*/ inline void SetDnsName(Aws::String&& value) { m_dnsNameHasBeenSet = true; m_dnsName = std::move(value); } /** *The DNS name of your Lightsail load balancer.
*/ inline void SetDnsName(const char* value) { m_dnsNameHasBeenSet = true; m_dnsName.assign(value); } /** *The DNS name of your Lightsail load balancer.
*/ inline LoadBalancer& WithDnsName(const Aws::String& value) { SetDnsName(value); return *this;} /** *The DNS name of your Lightsail load balancer.
*/ inline LoadBalancer& WithDnsName(Aws::String&& value) { SetDnsName(std::move(value)); return *this;} /** *The DNS name of your Lightsail load balancer.
*/ inline LoadBalancer& WithDnsName(const char* value) { SetDnsName(value); return *this;} /** *The status of your load balancer. Valid values are below.
*/ inline const LoadBalancerState& GetState() const{ return m_state; } /** *The status of your load balancer. Valid values are below.
*/ inline bool StateHasBeenSet() const { return m_stateHasBeenSet; } /** *The status of your load balancer. Valid values are below.
*/ inline void SetState(const LoadBalancerState& value) { m_stateHasBeenSet = true; m_state = value; } /** *The status of your load balancer. Valid values are below.
*/ inline void SetState(LoadBalancerState&& value) { m_stateHasBeenSet = true; m_state = std::move(value); } /** *The status of your load balancer. Valid values are below.
*/ inline LoadBalancer& WithState(const LoadBalancerState& value) { SetState(value); return *this;} /** *The status of your load balancer. Valid values are below.
*/ inline LoadBalancer& WithState(LoadBalancerState&& value) { SetState(std::move(value)); return *this;} /** *The protocol you have enabled for your load balancer. Valid values are * below.
You can't just have HTTP_HTTPS, but you can have just
     * HTTP.
The protocol you have enabled for your load balancer. Valid values are * below.
You can't just have HTTP_HTTPS, but you can have just
     * HTTP.
The protocol you have enabled for your load balancer. Valid values are * below.
You can't just have HTTP_HTTPS, but you can have just
     * HTTP.
The protocol you have enabled for your load balancer. Valid values are * below.
You can't just have HTTP_HTTPS, but you can have just
     * HTTP.
The protocol you have enabled for your load balancer. Valid values are * below.
You can't just have HTTP_HTTPS, but you can have just
     * HTTP.
The protocol you have enabled for your load balancer. Valid values are * below.
You can't just have HTTP_HTTPS, but you can have just
     * HTTP.
An array of public port settings for your load balancer. For HTTP, use port * 80. For HTTPS, use port 443.
*/ inline const Aws::VectorAn array of public port settings for your load balancer. For HTTP, use port * 80. For HTTPS, use port 443.
*/ inline bool PublicPortsHasBeenSet() const { return m_publicPortsHasBeenSet; } /** *An array of public port settings for your load balancer. For HTTP, use port * 80. For HTTPS, use port 443.
*/ inline void SetPublicPorts(const Aws::VectorAn array of public port settings for your load balancer. For HTTP, use port * 80. For HTTPS, use port 443.
*/ inline void SetPublicPorts(Aws::VectorAn array of public port settings for your load balancer. For HTTP, use port * 80. For HTTPS, use port 443.
*/ inline LoadBalancer& WithPublicPorts(const Aws::VectorAn array of public port settings for your load balancer. For HTTP, use port * 80. For HTTPS, use port 443.
*/ inline LoadBalancer& WithPublicPorts(Aws::VectorAn array of public port settings for your load balancer. For HTTP, use port * 80. For HTTPS, use port 443.
*/ inline LoadBalancer& AddPublicPorts(int value) { m_publicPortsHasBeenSet = true; m_publicPorts.push_back(value); return *this; } /** *The path you specified to perform your health checks. If no path is * specified, the load balancer tries to make a request to the default (root) * page.
*/ inline const Aws::String& GetHealthCheckPath() const{ return m_healthCheckPath; } /** *The path you specified to perform your health checks. If no path is * specified, the load balancer tries to make a request to the default (root) * page.
*/ inline bool HealthCheckPathHasBeenSet() const { return m_healthCheckPathHasBeenSet; } /** *The path you specified to perform your health checks. If no path is * specified, the load balancer tries to make a request to the default (root) * page.
*/ inline void SetHealthCheckPath(const Aws::String& value) { m_healthCheckPathHasBeenSet = true; m_healthCheckPath = value; } /** *The path you specified to perform your health checks. If no path is * specified, the load balancer tries to make a request to the default (root) * page.
*/ inline void SetHealthCheckPath(Aws::String&& value) { m_healthCheckPathHasBeenSet = true; m_healthCheckPath = std::move(value); } /** *The path you specified to perform your health checks. If no path is * specified, the load balancer tries to make a request to the default (root) * page.
*/ inline void SetHealthCheckPath(const char* value) { m_healthCheckPathHasBeenSet = true; m_healthCheckPath.assign(value); } /** *The path you specified to perform your health checks. If no path is * specified, the load balancer tries to make a request to the default (root) * page.
*/ inline LoadBalancer& WithHealthCheckPath(const Aws::String& value) { SetHealthCheckPath(value); return *this;} /** *The path you specified to perform your health checks. If no path is * specified, the load balancer tries to make a request to the default (root) * page.
*/ inline LoadBalancer& WithHealthCheckPath(Aws::String&& value) { SetHealthCheckPath(std::move(value)); return *this;} /** *The path you specified to perform your health checks. If no path is * specified, the load balancer tries to make a request to the default (root) * page.
*/ inline LoadBalancer& WithHealthCheckPath(const char* value) { SetHealthCheckPath(value); return *this;} /** *The port where the load balancer will direct traffic to your Lightsail * instances. For HTTP traffic, it's port 80. For HTTPS traffic, it's port 443.
*/ inline int GetInstancePort() const{ return m_instancePort; } /** *The port where the load balancer will direct traffic to your Lightsail * instances. For HTTP traffic, it's port 80. For HTTPS traffic, it's port 443.
*/ inline bool InstancePortHasBeenSet() const { return m_instancePortHasBeenSet; } /** *The port where the load balancer will direct traffic to your Lightsail * instances. For HTTP traffic, it's port 80. For HTTPS traffic, it's port 443.
*/ inline void SetInstancePort(int value) { m_instancePortHasBeenSet = true; m_instancePort = value; } /** *The port where the load balancer will direct traffic to your Lightsail * instances. For HTTP traffic, it's port 80. For HTTPS traffic, it's port 443.
*/ inline LoadBalancer& WithInstancePort(int value) { SetInstancePort(value); return *this;} /** *An array of InstanceHealthSummary objects describing the health of the load * balancer.
*/ inline const Aws::VectorAn array of InstanceHealthSummary objects describing the health of the load * balancer.
*/ inline bool InstanceHealthSummaryHasBeenSet() const { return m_instanceHealthSummaryHasBeenSet; } /** *An array of InstanceHealthSummary objects describing the health of the load * balancer.
*/ inline void SetInstanceHealthSummary(const Aws::VectorAn array of InstanceHealthSummary objects describing the health of the load * balancer.
*/ inline void SetInstanceHealthSummary(Aws::VectorAn array of InstanceHealthSummary objects describing the health of the load * balancer.
*/ inline LoadBalancer& WithInstanceHealthSummary(const Aws::VectorAn array of InstanceHealthSummary objects describing the health of the load * balancer.
*/ inline LoadBalancer& WithInstanceHealthSummary(Aws::VectorAn array of InstanceHealthSummary objects describing the health of the load * balancer.
*/ inline LoadBalancer& AddInstanceHealthSummary(const InstanceHealthSummary& value) { m_instanceHealthSummaryHasBeenSet = true; m_instanceHealthSummary.push_back(value); return *this; } /** *An array of InstanceHealthSummary objects describing the health of the load * balancer.
*/ inline LoadBalancer& AddInstanceHealthSummary(InstanceHealthSummary&& value) { m_instanceHealthSummaryHasBeenSet = true; m_instanceHealthSummary.push_back(std::move(value)); return *this; } /** *An array of LoadBalancerTlsCertificateSummary objects that provide additional
     * information about the SSL/TLS certificates. For example, if true,
     * the certificate is attached to the load balancer.
An array of LoadBalancerTlsCertificateSummary objects that provide additional
     * information about the SSL/TLS certificates. For example, if true,
     * the certificate is attached to the load balancer.
An array of LoadBalancerTlsCertificateSummary objects that provide additional
     * information about the SSL/TLS certificates. For example, if true,
     * the certificate is attached to the load balancer.
An array of LoadBalancerTlsCertificateSummary objects that provide additional
     * information about the SSL/TLS certificates. For example, if true,
     * the certificate is attached to the load balancer.
An array of LoadBalancerTlsCertificateSummary objects that provide additional
     * information about the SSL/TLS certificates. For example, if true,
     * the certificate is attached to the load balancer.
An array of LoadBalancerTlsCertificateSummary objects that provide additional
     * information about the SSL/TLS certificates. For example, if true,
     * the certificate is attached to the load balancer.
An array of LoadBalancerTlsCertificateSummary objects that provide additional
     * information about the SSL/TLS certificates. For example, if true,
     * the certificate is attached to the load balancer.
An array of LoadBalancerTlsCertificateSummary objects that provide additional
     * information about the SSL/TLS certificates. For example, if true,
     * the certificate is attached to the load balancer.
A string to string map of the configuration options for your load balancer. * Valid values are listed below.
*/ inline const Aws::MapA string to string map of the configuration options for your load balancer. * Valid values are listed below.
*/ inline bool ConfigurationOptionsHasBeenSet() const { return m_configurationOptionsHasBeenSet; } /** *A string to string map of the configuration options for your load balancer. * Valid values are listed below.
*/ inline void SetConfigurationOptions(const Aws::MapA string to string map of the configuration options for your load balancer. * Valid values are listed below.
*/ inline void SetConfigurationOptions(Aws::MapA string to string map of the configuration options for your load balancer. * Valid values are listed below.
*/ inline LoadBalancer& WithConfigurationOptions(const Aws::MapA string to string map of the configuration options for your load balancer. * Valid values are listed below.
*/ inline LoadBalancer& WithConfigurationOptions(Aws::MapA string to string map of the configuration options for your load balancer. * Valid values are listed below.
*/ inline LoadBalancer& AddConfigurationOptions(const LoadBalancerAttributeName& key, const Aws::String& value) { m_configurationOptionsHasBeenSet = true; m_configurationOptions.emplace(key, value); return *this; } /** *A string to string map of the configuration options for your load balancer. * Valid values are listed below.
*/ inline LoadBalancer& AddConfigurationOptions(LoadBalancerAttributeName&& key, const Aws::String& value) { m_configurationOptionsHasBeenSet = true; m_configurationOptions.emplace(std::move(key), value); return *this; } /** *A string to string map of the configuration options for your load balancer. * Valid values are listed below.
*/ inline LoadBalancer& AddConfigurationOptions(const LoadBalancerAttributeName& key, Aws::String&& value) { m_configurationOptionsHasBeenSet = true; m_configurationOptions.emplace(key, std::move(value)); return *this; } /** *A string to string map of the configuration options for your load balancer. * Valid values are listed below.
*/ inline LoadBalancer& AddConfigurationOptions(LoadBalancerAttributeName&& key, Aws::String&& value) { m_configurationOptionsHasBeenSet = true; m_configurationOptions.emplace(std::move(key), std::move(value)); return *this; } /** *A string to string map of the configuration options for your load balancer. * Valid values are listed below.
*/ inline LoadBalancer& AddConfigurationOptions(LoadBalancerAttributeName&& key, const char* value) { m_configurationOptionsHasBeenSet = true; m_configurationOptions.emplace(std::move(key), value); return *this; } /** *A string to string map of the configuration options for your load balancer. * Valid values are listed below.
*/ inline LoadBalancer& AddConfigurationOptions(const LoadBalancerAttributeName& key, const char* value) { m_configurationOptionsHasBeenSet = true; m_configurationOptions.emplace(key, value); return *this; } /** *The IP address type of the load balancer.
The possible values are
     * ipv4 for IPv4 only, and dualstack for IPv4 and
     * IPv6.
The IP address type of the load balancer.
The possible values are
     * ipv4 for IPv4 only, and dualstack for IPv4 and
     * IPv6.
The IP address type of the load balancer.
The possible values are
     * ipv4 for IPv4 only, and dualstack for IPv4 and
     * IPv6.
The IP address type of the load balancer.
The possible values are
     * ipv4 for IPv4 only, and dualstack for IPv4 and
     * IPv6.
The IP address type of the load balancer.
The possible values are
     * ipv4 for IPv4 only, and dualstack for IPv4 and
     * IPv6.
The IP address type of the load balancer.
The possible values are
     * ipv4 for IPv4 only, and dualstack for IPv4 and
     * IPv6.
A Boolean value that indicates whether HTTPS redirection is enabled for the * load balancer.
*/ inline bool GetHttpsRedirectionEnabled() const{ return m_httpsRedirectionEnabled; } /** *A Boolean value that indicates whether HTTPS redirection is enabled for the * load balancer.
*/ inline bool HttpsRedirectionEnabledHasBeenSet() const { return m_httpsRedirectionEnabledHasBeenSet; } /** *A Boolean value that indicates whether HTTPS redirection is enabled for the * load balancer.
*/ inline void SetHttpsRedirectionEnabled(bool value) { m_httpsRedirectionEnabledHasBeenSet = true; m_httpsRedirectionEnabled = value; } /** *A Boolean value that indicates whether HTTPS redirection is enabled for the * load balancer.
*/ inline LoadBalancer& WithHttpsRedirectionEnabled(bool value) { SetHttpsRedirectionEnabled(value); return *this;} /** *The name of the TLS security policy for the load balancer.
*/ inline const Aws::String& GetTlsPolicyName() const{ return m_tlsPolicyName; } /** *The name of the TLS security policy for the load balancer.
*/ inline bool TlsPolicyNameHasBeenSet() const { return m_tlsPolicyNameHasBeenSet; } /** *The name of the TLS security policy for the load balancer.
*/ inline void SetTlsPolicyName(const Aws::String& value) { m_tlsPolicyNameHasBeenSet = true; m_tlsPolicyName = value; } /** *The name of the TLS security policy for the load balancer.
*/ inline void SetTlsPolicyName(Aws::String&& value) { m_tlsPolicyNameHasBeenSet = true; m_tlsPolicyName = std::move(value); } /** *The name of the TLS security policy for the load balancer.
*/ inline void SetTlsPolicyName(const char* value) { m_tlsPolicyNameHasBeenSet = true; m_tlsPolicyName.assign(value); } /** *The name of the TLS security policy for the load balancer.
*/ inline LoadBalancer& WithTlsPolicyName(const Aws::String& value) { SetTlsPolicyName(value); return *this;} /** *The name of the TLS security policy for the load balancer.
*/ inline LoadBalancer& WithTlsPolicyName(Aws::String&& value) { SetTlsPolicyName(std::move(value)); return *this;} /** *The name of the TLS security policy for the load balancer.
*/ inline LoadBalancer& WithTlsPolicyName(const char* value) { SetTlsPolicyName(value); return *this;} private: Aws::String m_name; bool m_nameHasBeenSet = false; Aws::String m_arn; bool m_arnHasBeenSet = false; Aws::String m_supportCode; bool m_supportCodeHasBeenSet = false; Aws::Utils::DateTime m_createdAt; bool m_createdAtHasBeenSet = false; ResourceLocation m_location; bool m_locationHasBeenSet = false; ResourceType m_resourceType; bool m_resourceTypeHasBeenSet = false; Aws::Vector