{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.ELB.Types.LoadBalancerDescription
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.ELB.Types.LoadBalancerDescription where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.ELB.Internal
import Amazonka.ELB.Types.BackendServerDescription
import Amazonka.ELB.Types.HealthCheck
import Amazonka.ELB.Types.Instance
import Amazonka.ELB.Types.ListenerDescription
import Amazonka.ELB.Types.Policies
import Amazonka.ELB.Types.SourceSecurityGroup
import qualified Amazonka.Prelude as Prelude

-- | Information about a load balancer.
--
-- /See:/ 'newLoadBalancerDescription' smart constructor.
data LoadBalancerDescription = LoadBalancerDescription'
  { -- | The Availability Zones for the load balancer.
    LoadBalancerDescription -> Maybe [Text]
availabilityZones :: Prelude.Maybe [Prelude.Text],
    -- | Information about your EC2 instances.
    LoadBalancerDescription -> Maybe [BackendServerDescription]
backendServerDescriptions :: Prelude.Maybe [BackendServerDescription],
    -- | The DNS name of the load balancer.
    --
    -- For more information, see
    -- <https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/using-domain-names-with-elb.html Configure a Custom Domain Name>
    -- in the /Classic Load Balancers Guide/.
    LoadBalancerDescription -> Maybe Text
canonicalHostedZoneName :: Prelude.Maybe Prelude.Text,
    -- | The ID of the Amazon Route 53 hosted zone for the load balancer.
    LoadBalancerDescription -> Maybe Text
canonicalHostedZoneNameID :: Prelude.Maybe Prelude.Text,
    -- | The date and time the load balancer was created.
    LoadBalancerDescription -> Maybe ISO8601
createdTime :: Prelude.Maybe Data.ISO8601,
    -- | The DNS name of the load balancer.
    LoadBalancerDescription -> Maybe Text
dNSName :: Prelude.Maybe Prelude.Text,
    -- | Information about the health checks conducted on the load balancer.
    LoadBalancerDescription -> Maybe HealthCheck
healthCheck :: Prelude.Maybe HealthCheck,
    -- | The IDs of the instances for the load balancer.
    LoadBalancerDescription -> Maybe [Instance]
instances :: Prelude.Maybe [Instance],
    -- | The listeners for the load balancer.
    LoadBalancerDescription -> Maybe [ListenerDescription]
listenerDescriptions :: Prelude.Maybe [ListenerDescription],
    -- | The name of the load balancer.
    LoadBalancerDescription -> Maybe Text
loadBalancerName :: Prelude.Maybe Prelude.Text,
    -- | The policies defined for the load balancer.
    LoadBalancerDescription -> Maybe Policies
policies :: Prelude.Maybe Policies,
    -- | 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.
    LoadBalancerDescription -> Maybe Text
scheme :: Prelude.Maybe Prelude.Text,
    -- | The security groups for the load balancer. Valid only for load balancers
    -- in a VPC.
    LoadBalancerDescription -> Maybe [Text]
securityGroups :: Prelude.Maybe [Prelude.Text],
    -- | The security group for the load balancer, which you can use as part of
    -- your inbound rules for your registered instances. To only allow traffic
    -- from load balancers, add a security group rule that specifies this
    -- source security group as the inbound source.
    LoadBalancerDescription -> Maybe SourceSecurityGroup
sourceSecurityGroup :: Prelude.Maybe SourceSecurityGroup,
    -- | The IDs of the subnets for the load balancer.
    LoadBalancerDescription -> Maybe [Text]
subnets :: Prelude.Maybe [Prelude.Text],
    -- | The ID of the VPC for the load balancer.
    LoadBalancerDescription -> Maybe Text
vPCId :: Prelude.Maybe Prelude.Text
  }
  deriving (LoadBalancerDescription -> LoadBalancerDescription -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: LoadBalancerDescription -> LoadBalancerDescription -> Bool
$c/= :: LoadBalancerDescription -> LoadBalancerDescription -> Bool
== :: LoadBalancerDescription -> LoadBalancerDescription -> Bool
$c== :: LoadBalancerDescription -> LoadBalancerDescription -> Bool
Prelude.Eq, ReadPrec [LoadBalancerDescription]
ReadPrec LoadBalancerDescription
Int -> ReadS LoadBalancerDescription
ReadS [LoadBalancerDescription]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [LoadBalancerDescription]
$creadListPrec :: ReadPrec [LoadBalancerDescription]
readPrec :: ReadPrec LoadBalancerDescription
$creadPrec :: ReadPrec LoadBalancerDescription
readList :: ReadS [LoadBalancerDescription]
$creadList :: ReadS [LoadBalancerDescription]
readsPrec :: Int -> ReadS LoadBalancerDescription
$creadsPrec :: Int -> ReadS LoadBalancerDescription
Prelude.Read, Int -> LoadBalancerDescription -> ShowS
[LoadBalancerDescription] -> ShowS
LoadBalancerDescription -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [LoadBalancerDescription] -> ShowS
$cshowList :: [LoadBalancerDescription] -> ShowS
show :: LoadBalancerDescription -> String
$cshow :: LoadBalancerDescription -> String
showsPrec :: Int -> LoadBalancerDescription -> ShowS
$cshowsPrec :: Int -> LoadBalancerDescription -> ShowS
Prelude.Show, forall x. Rep LoadBalancerDescription x -> LoadBalancerDescription
forall x. LoadBalancerDescription -> Rep LoadBalancerDescription x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep LoadBalancerDescription x -> LoadBalancerDescription
$cfrom :: forall x. LoadBalancerDescription -> Rep LoadBalancerDescription x
Prelude.Generic)

-- |
-- Create a value of 'LoadBalancerDescription' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'availabilityZones', 'loadBalancerDescription_availabilityZones' - The Availability Zones for the load balancer.
--
-- 'backendServerDescriptions', 'loadBalancerDescription_backendServerDescriptions' - Information about your EC2 instances.
--
-- 'canonicalHostedZoneName', 'loadBalancerDescription_canonicalHostedZoneName' - The DNS name of the load balancer.
--
-- For more information, see
-- <https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/using-domain-names-with-elb.html Configure a Custom Domain Name>
-- in the /Classic Load Balancers Guide/.
--
-- 'canonicalHostedZoneNameID', 'loadBalancerDescription_canonicalHostedZoneNameID' - The ID of the Amazon Route 53 hosted zone for the load balancer.
--
-- 'createdTime', 'loadBalancerDescription_createdTime' - The date and time the load balancer was created.
--
-- 'dNSName', 'loadBalancerDescription_dNSName' - The DNS name of the load balancer.
--
-- 'healthCheck', 'loadBalancerDescription_healthCheck' - Information about the health checks conducted on the load balancer.
--
-- 'instances', 'loadBalancerDescription_instances' - The IDs of the instances for the load balancer.
--
-- 'listenerDescriptions', 'loadBalancerDescription_listenerDescriptions' - The listeners for the load balancer.
--
-- 'loadBalancerName', 'loadBalancerDescription_loadBalancerName' - The name of the load balancer.
--
-- 'policies', 'loadBalancerDescription_policies' - The policies defined for the load balancer.
--
-- 'scheme', 'loadBalancerDescription_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.
--
-- 'securityGroups', 'loadBalancerDescription_securityGroups' - The security groups for the load balancer. Valid only for load balancers
-- in a VPC.
--
-- 'sourceSecurityGroup', 'loadBalancerDescription_sourceSecurityGroup' - The security group for the load balancer, which you can use as part of
-- your inbound rules for your registered instances. To only allow traffic
-- from load balancers, add a security group rule that specifies this
-- source security group as the inbound source.
--
-- 'subnets', 'loadBalancerDescription_subnets' - The IDs of the subnets for the load balancer.
--
-- 'vPCId', 'loadBalancerDescription_vPCId' - The ID of the VPC for the load balancer.
newLoadBalancerDescription ::
  LoadBalancerDescription
newLoadBalancerDescription :: LoadBalancerDescription
newLoadBalancerDescription =
  LoadBalancerDescription'
    { $sel:availabilityZones:LoadBalancerDescription' :: Maybe [Text]
availabilityZones =
        forall a. Maybe a
Prelude.Nothing,
      $sel:backendServerDescriptions:LoadBalancerDescription' :: Maybe [BackendServerDescription]
backendServerDescriptions = forall a. Maybe a
Prelude.Nothing,
      $sel:canonicalHostedZoneName:LoadBalancerDescription' :: Maybe Text
canonicalHostedZoneName = forall a. Maybe a
Prelude.Nothing,
      $sel:canonicalHostedZoneNameID:LoadBalancerDescription' :: Maybe Text
canonicalHostedZoneNameID = forall a. Maybe a
Prelude.Nothing,
      $sel:createdTime:LoadBalancerDescription' :: Maybe ISO8601
createdTime = forall a. Maybe a
Prelude.Nothing,
      $sel:dNSName:LoadBalancerDescription' :: Maybe Text
dNSName = forall a. Maybe a
Prelude.Nothing,
      $sel:healthCheck:LoadBalancerDescription' :: Maybe HealthCheck
healthCheck = forall a. Maybe a
Prelude.Nothing,
      $sel:instances:LoadBalancerDescription' :: Maybe [Instance]
instances = forall a. Maybe a
Prelude.Nothing,
      $sel:listenerDescriptions:LoadBalancerDescription' :: Maybe [ListenerDescription]
listenerDescriptions = forall a. Maybe a
Prelude.Nothing,
      $sel:loadBalancerName:LoadBalancerDescription' :: Maybe Text
loadBalancerName = forall a. Maybe a
Prelude.Nothing,
      $sel:policies:LoadBalancerDescription' :: Maybe Policies
policies = forall a. Maybe a
Prelude.Nothing,
      $sel:scheme:LoadBalancerDescription' :: Maybe Text
scheme = forall a. Maybe a
Prelude.Nothing,
      $sel:securityGroups:LoadBalancerDescription' :: Maybe [Text]
securityGroups = forall a. Maybe a
Prelude.Nothing,
      $sel:sourceSecurityGroup:LoadBalancerDescription' :: Maybe SourceSecurityGroup
sourceSecurityGroup = forall a. Maybe a
Prelude.Nothing,
      $sel:subnets:LoadBalancerDescription' :: Maybe [Text]
subnets = forall a. Maybe a
Prelude.Nothing,
      $sel:vPCId:LoadBalancerDescription' :: Maybe Text
vPCId = forall a. Maybe a
Prelude.Nothing
    }

-- | The Availability Zones for the load balancer.
loadBalancerDescription_availabilityZones :: Lens.Lens' LoadBalancerDescription (Prelude.Maybe [Prelude.Text])
loadBalancerDescription_availabilityZones :: Lens' LoadBalancerDescription (Maybe [Text])
loadBalancerDescription_availabilityZones = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LoadBalancerDescription' {Maybe [Text]
availabilityZones :: Maybe [Text]
$sel:availabilityZones:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe [Text]
availabilityZones} -> Maybe [Text]
availabilityZones) (\s :: LoadBalancerDescription
s@LoadBalancerDescription' {} Maybe [Text]
a -> LoadBalancerDescription
s {$sel:availabilityZones:LoadBalancerDescription' :: Maybe [Text]
availabilityZones = Maybe [Text]
a} :: LoadBalancerDescription) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Information about your EC2 instances.
loadBalancerDescription_backendServerDescriptions :: Lens.Lens' LoadBalancerDescription (Prelude.Maybe [BackendServerDescription])
loadBalancerDescription_backendServerDescriptions :: Lens' LoadBalancerDescription (Maybe [BackendServerDescription])
loadBalancerDescription_backendServerDescriptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LoadBalancerDescription' {Maybe [BackendServerDescription]
backendServerDescriptions :: Maybe [BackendServerDescription]
$sel:backendServerDescriptions:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe [BackendServerDescription]
backendServerDescriptions} -> Maybe [BackendServerDescription]
backendServerDescriptions) (\s :: LoadBalancerDescription
s@LoadBalancerDescription' {} Maybe [BackendServerDescription]
a -> LoadBalancerDescription
s {$sel:backendServerDescriptions:LoadBalancerDescription' :: Maybe [BackendServerDescription]
backendServerDescriptions = Maybe [BackendServerDescription]
a} :: LoadBalancerDescription) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The DNS name of the load balancer.
--
-- For more information, see
-- <https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/using-domain-names-with-elb.html Configure a Custom Domain Name>
-- in the /Classic Load Balancers Guide/.
loadBalancerDescription_canonicalHostedZoneName :: Lens.Lens' LoadBalancerDescription (Prelude.Maybe Prelude.Text)
loadBalancerDescription_canonicalHostedZoneName :: Lens' LoadBalancerDescription (Maybe Text)
loadBalancerDescription_canonicalHostedZoneName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LoadBalancerDescription' {Maybe Text
canonicalHostedZoneName :: Maybe Text
$sel:canonicalHostedZoneName:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe Text
canonicalHostedZoneName} -> Maybe Text
canonicalHostedZoneName) (\s :: LoadBalancerDescription
s@LoadBalancerDescription' {} Maybe Text
a -> LoadBalancerDescription
s {$sel:canonicalHostedZoneName:LoadBalancerDescription' :: Maybe Text
canonicalHostedZoneName = Maybe Text
a} :: LoadBalancerDescription)

-- | The ID of the Amazon Route 53 hosted zone for the load balancer.
loadBalancerDescription_canonicalHostedZoneNameID :: Lens.Lens' LoadBalancerDescription (Prelude.Maybe Prelude.Text)
loadBalancerDescription_canonicalHostedZoneNameID :: Lens' LoadBalancerDescription (Maybe Text)
loadBalancerDescription_canonicalHostedZoneNameID = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LoadBalancerDescription' {Maybe Text
canonicalHostedZoneNameID :: Maybe Text
$sel:canonicalHostedZoneNameID:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe Text
canonicalHostedZoneNameID} -> Maybe Text
canonicalHostedZoneNameID) (\s :: LoadBalancerDescription
s@LoadBalancerDescription' {} Maybe Text
a -> LoadBalancerDescription
s {$sel:canonicalHostedZoneNameID:LoadBalancerDescription' :: Maybe Text
canonicalHostedZoneNameID = Maybe Text
a} :: LoadBalancerDescription)

-- | The date and time the load balancer was created.
loadBalancerDescription_createdTime :: Lens.Lens' LoadBalancerDescription (Prelude.Maybe Prelude.UTCTime)
loadBalancerDescription_createdTime :: Lens' LoadBalancerDescription (Maybe UTCTime)
loadBalancerDescription_createdTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LoadBalancerDescription' {Maybe ISO8601
createdTime :: Maybe ISO8601
$sel:createdTime:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe ISO8601
createdTime} -> Maybe ISO8601
createdTime) (\s :: LoadBalancerDescription
s@LoadBalancerDescription' {} Maybe ISO8601
a -> LoadBalancerDescription
s {$sel:createdTime:LoadBalancerDescription' :: Maybe ISO8601
createdTime = Maybe ISO8601
a} :: LoadBalancerDescription) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The DNS name of the load balancer.
loadBalancerDescription_dNSName :: Lens.Lens' LoadBalancerDescription (Prelude.Maybe Prelude.Text)
loadBalancerDescription_dNSName :: Lens' LoadBalancerDescription (Maybe Text)
loadBalancerDescription_dNSName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LoadBalancerDescription' {Maybe Text
dNSName :: Maybe Text
$sel:dNSName:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe Text
dNSName} -> Maybe Text
dNSName) (\s :: LoadBalancerDescription
s@LoadBalancerDescription' {} Maybe Text
a -> LoadBalancerDescription
s {$sel:dNSName:LoadBalancerDescription' :: Maybe Text
dNSName = Maybe Text
a} :: LoadBalancerDescription)

-- | Information about the health checks conducted on the load balancer.
loadBalancerDescription_healthCheck :: Lens.Lens' LoadBalancerDescription (Prelude.Maybe HealthCheck)
loadBalancerDescription_healthCheck :: Lens' LoadBalancerDescription (Maybe HealthCheck)
loadBalancerDescription_healthCheck = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LoadBalancerDescription' {Maybe HealthCheck
healthCheck :: Maybe HealthCheck
$sel:healthCheck:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe HealthCheck
healthCheck} -> Maybe HealthCheck
healthCheck) (\s :: LoadBalancerDescription
s@LoadBalancerDescription' {} Maybe HealthCheck
a -> LoadBalancerDescription
s {$sel:healthCheck:LoadBalancerDescription' :: Maybe HealthCheck
healthCheck = Maybe HealthCheck
a} :: LoadBalancerDescription)

-- | The IDs of the instances for the load balancer.
loadBalancerDescription_instances :: Lens.Lens' LoadBalancerDescription (Prelude.Maybe [Instance])
loadBalancerDescription_instances :: Lens' LoadBalancerDescription (Maybe [Instance])
loadBalancerDescription_instances = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LoadBalancerDescription' {Maybe [Instance]
instances :: Maybe [Instance]
$sel:instances:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe [Instance]
instances} -> Maybe [Instance]
instances) (\s :: LoadBalancerDescription
s@LoadBalancerDescription' {} Maybe [Instance]
a -> LoadBalancerDescription
s {$sel:instances:LoadBalancerDescription' :: Maybe [Instance]
instances = Maybe [Instance]
a} :: LoadBalancerDescription) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The listeners for the load balancer.
loadBalancerDescription_listenerDescriptions :: Lens.Lens' LoadBalancerDescription (Prelude.Maybe [ListenerDescription])
loadBalancerDescription_listenerDescriptions :: Lens' LoadBalancerDescription (Maybe [ListenerDescription])
loadBalancerDescription_listenerDescriptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LoadBalancerDescription' {Maybe [ListenerDescription]
listenerDescriptions :: Maybe [ListenerDescription]
$sel:listenerDescriptions:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe [ListenerDescription]
listenerDescriptions} -> Maybe [ListenerDescription]
listenerDescriptions) (\s :: LoadBalancerDescription
s@LoadBalancerDescription' {} Maybe [ListenerDescription]
a -> LoadBalancerDescription
s {$sel:listenerDescriptions:LoadBalancerDescription' :: Maybe [ListenerDescription]
listenerDescriptions = Maybe [ListenerDescription]
a} :: LoadBalancerDescription) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The name of the load balancer.
loadBalancerDescription_loadBalancerName :: Lens.Lens' LoadBalancerDescription (Prelude.Maybe Prelude.Text)
loadBalancerDescription_loadBalancerName :: Lens' LoadBalancerDescription (Maybe Text)
loadBalancerDescription_loadBalancerName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LoadBalancerDescription' {Maybe Text
loadBalancerName :: Maybe Text
$sel:loadBalancerName:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe Text
loadBalancerName} -> Maybe Text
loadBalancerName) (\s :: LoadBalancerDescription
s@LoadBalancerDescription' {} Maybe Text
a -> LoadBalancerDescription
s {$sel:loadBalancerName:LoadBalancerDescription' :: Maybe Text
loadBalancerName = Maybe Text
a} :: LoadBalancerDescription)

-- | The policies defined for the load balancer.
loadBalancerDescription_policies :: Lens.Lens' LoadBalancerDescription (Prelude.Maybe Policies)
loadBalancerDescription_policies :: Lens' LoadBalancerDescription (Maybe Policies)
loadBalancerDescription_policies = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LoadBalancerDescription' {Maybe Policies
policies :: Maybe Policies
$sel:policies:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe Policies
policies} -> Maybe Policies
policies) (\s :: LoadBalancerDescription
s@LoadBalancerDescription' {} Maybe Policies
a -> LoadBalancerDescription
s {$sel:policies:LoadBalancerDescription' :: Maybe Policies
policies = Maybe Policies
a} :: LoadBalancerDescription)

-- | 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.
loadBalancerDescription_scheme :: Lens.Lens' LoadBalancerDescription (Prelude.Maybe Prelude.Text)
loadBalancerDescription_scheme :: Lens' LoadBalancerDescription (Maybe Text)
loadBalancerDescription_scheme = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LoadBalancerDescription' {Maybe Text
scheme :: Maybe Text
$sel:scheme:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe Text
scheme} -> Maybe Text
scheme) (\s :: LoadBalancerDescription
s@LoadBalancerDescription' {} Maybe Text
a -> LoadBalancerDescription
s {$sel:scheme:LoadBalancerDescription' :: Maybe Text
scheme = Maybe Text
a} :: LoadBalancerDescription)

-- | The security groups for the load balancer. Valid only for load balancers
-- in a VPC.
loadBalancerDescription_securityGroups :: Lens.Lens' LoadBalancerDescription (Prelude.Maybe [Prelude.Text])
loadBalancerDescription_securityGroups :: Lens' LoadBalancerDescription (Maybe [Text])
loadBalancerDescription_securityGroups = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LoadBalancerDescription' {Maybe [Text]
securityGroups :: Maybe [Text]
$sel:securityGroups:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe [Text]
securityGroups} -> Maybe [Text]
securityGroups) (\s :: LoadBalancerDescription
s@LoadBalancerDescription' {} Maybe [Text]
a -> LoadBalancerDescription
s {$sel:securityGroups:LoadBalancerDescription' :: Maybe [Text]
securityGroups = Maybe [Text]
a} :: LoadBalancerDescription) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The security group for the load balancer, which you can use as part of
-- your inbound rules for your registered instances. To only allow traffic
-- from load balancers, add a security group rule that specifies this
-- source security group as the inbound source.
loadBalancerDescription_sourceSecurityGroup :: Lens.Lens' LoadBalancerDescription (Prelude.Maybe SourceSecurityGroup)
loadBalancerDescription_sourceSecurityGroup :: Lens' LoadBalancerDescription (Maybe SourceSecurityGroup)
loadBalancerDescription_sourceSecurityGroup = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LoadBalancerDescription' {Maybe SourceSecurityGroup
sourceSecurityGroup :: Maybe SourceSecurityGroup
$sel:sourceSecurityGroup:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe SourceSecurityGroup
sourceSecurityGroup} -> Maybe SourceSecurityGroup
sourceSecurityGroup) (\s :: LoadBalancerDescription
s@LoadBalancerDescription' {} Maybe SourceSecurityGroup
a -> LoadBalancerDescription
s {$sel:sourceSecurityGroup:LoadBalancerDescription' :: Maybe SourceSecurityGroup
sourceSecurityGroup = Maybe SourceSecurityGroup
a} :: LoadBalancerDescription)

-- | The IDs of the subnets for the load balancer.
loadBalancerDescription_subnets :: Lens.Lens' LoadBalancerDescription (Prelude.Maybe [Prelude.Text])
loadBalancerDescription_subnets :: Lens' LoadBalancerDescription (Maybe [Text])
loadBalancerDescription_subnets = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LoadBalancerDescription' {Maybe [Text]
subnets :: Maybe [Text]
$sel:subnets:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe [Text]
subnets} -> Maybe [Text]
subnets) (\s :: LoadBalancerDescription
s@LoadBalancerDescription' {} Maybe [Text]
a -> LoadBalancerDescription
s {$sel:subnets:LoadBalancerDescription' :: Maybe [Text]
subnets = Maybe [Text]
a} :: LoadBalancerDescription) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The ID of the VPC for the load balancer.
loadBalancerDescription_vPCId :: Lens.Lens' LoadBalancerDescription (Prelude.Maybe Prelude.Text)
loadBalancerDescription_vPCId :: Lens' LoadBalancerDescription (Maybe Text)
loadBalancerDescription_vPCId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LoadBalancerDescription' {Maybe Text
vPCId :: Maybe Text
$sel:vPCId:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe Text
vPCId} -> Maybe Text
vPCId) (\s :: LoadBalancerDescription
s@LoadBalancerDescription' {} Maybe Text
a -> LoadBalancerDescription
s {$sel:vPCId:LoadBalancerDescription' :: Maybe Text
vPCId = Maybe Text
a} :: LoadBalancerDescription)

instance Data.FromXML LoadBalancerDescription where
  parseXML :: [Node] -> Either String LoadBalancerDescription
parseXML [Node]
x =
    Maybe [Text]
-> Maybe [BackendServerDescription]
-> Maybe Text
-> Maybe Text
-> Maybe ISO8601
-> Maybe Text
-> Maybe HealthCheck
-> Maybe [Instance]
-> Maybe [ListenerDescription]
-> Maybe Text
-> Maybe Policies
-> Maybe Text
-> Maybe [Text]
-> Maybe SourceSecurityGroup
-> Maybe [Text]
-> Maybe Text
-> LoadBalancerDescription
LoadBalancerDescription'
      forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ( [Node]
x
                      forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"AvailabilityZones"
                      forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                      forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"member")
                  )
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                      forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"BackendServerDescriptions"
                      forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                      forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"member")
                  )
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"CanonicalHostedZoneName")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"CanonicalHostedZoneNameID")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"CreatedTime")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"DNSName")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"HealthCheck")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                      forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"Instances"
                      forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                      forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"member")
                  )
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                      forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ListenerDescriptions"
                      forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                      forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"member")
                  )
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"LoadBalancerName")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"Policies")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"Scheme")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                      forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"SecurityGroups"
                      forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                      forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"member")
                  )
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"SourceSecurityGroup")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                      forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"Subnets"
                      forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                      forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"member")
                  )
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"VPCId")

instance Prelude.Hashable LoadBalancerDescription where
  hashWithSalt :: Int -> LoadBalancerDescription -> Int
hashWithSalt Int
_salt LoadBalancerDescription' {Maybe [Text]
Maybe [BackendServerDescription]
Maybe [Instance]
Maybe [ListenerDescription]
Maybe Text
Maybe ISO8601
Maybe HealthCheck
Maybe Policies
Maybe SourceSecurityGroup
vPCId :: Maybe Text
subnets :: Maybe [Text]
sourceSecurityGroup :: Maybe SourceSecurityGroup
securityGroups :: Maybe [Text]
scheme :: Maybe Text
policies :: Maybe Policies
loadBalancerName :: Maybe Text
listenerDescriptions :: Maybe [ListenerDescription]
instances :: Maybe [Instance]
healthCheck :: Maybe HealthCheck
dNSName :: Maybe Text
createdTime :: Maybe ISO8601
canonicalHostedZoneNameID :: Maybe Text
canonicalHostedZoneName :: Maybe Text
backendServerDescriptions :: Maybe [BackendServerDescription]
availabilityZones :: Maybe [Text]
$sel:vPCId:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe Text
$sel:subnets:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe [Text]
$sel:sourceSecurityGroup:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe SourceSecurityGroup
$sel:securityGroups:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe [Text]
$sel:scheme:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe Text
$sel:policies:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe Policies
$sel:loadBalancerName:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe Text
$sel:listenerDescriptions:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe [ListenerDescription]
$sel:instances:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe [Instance]
$sel:healthCheck:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe HealthCheck
$sel:dNSName:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe Text
$sel:createdTime:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe ISO8601
$sel:canonicalHostedZoneNameID:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe Text
$sel:canonicalHostedZoneName:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe Text
$sel:backendServerDescriptions:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe [BackendServerDescription]
$sel:availabilityZones:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe [Text]
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
availabilityZones
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [BackendServerDescription]
backendServerDescriptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
canonicalHostedZoneName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
canonicalHostedZoneNameID
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ISO8601
createdTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
dNSName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe HealthCheck
healthCheck
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Instance]
instances
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [ListenerDescription]
listenerDescriptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
loadBalancerName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Policies
policies
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
scheme
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
securityGroups
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SourceSecurityGroup
sourceSecurityGroup
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
subnets
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
vPCId

instance Prelude.NFData LoadBalancerDescription where
  rnf :: LoadBalancerDescription -> ()
rnf LoadBalancerDescription' {Maybe [Text]
Maybe [BackendServerDescription]
Maybe [Instance]
Maybe [ListenerDescription]
Maybe Text
Maybe ISO8601
Maybe HealthCheck
Maybe Policies
Maybe SourceSecurityGroup
vPCId :: Maybe Text
subnets :: Maybe [Text]
sourceSecurityGroup :: Maybe SourceSecurityGroup
securityGroups :: Maybe [Text]
scheme :: Maybe Text
policies :: Maybe Policies
loadBalancerName :: Maybe Text
listenerDescriptions :: Maybe [ListenerDescription]
instances :: Maybe [Instance]
healthCheck :: Maybe HealthCheck
dNSName :: Maybe Text
createdTime :: Maybe ISO8601
canonicalHostedZoneNameID :: Maybe Text
canonicalHostedZoneName :: Maybe Text
backendServerDescriptions :: Maybe [BackendServerDescription]
availabilityZones :: Maybe [Text]
$sel:vPCId:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe Text
$sel:subnets:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe [Text]
$sel:sourceSecurityGroup:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe SourceSecurityGroup
$sel:securityGroups:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe [Text]
$sel:scheme:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe Text
$sel:policies:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe Policies
$sel:loadBalancerName:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe Text
$sel:listenerDescriptions:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe [ListenerDescription]
$sel:instances:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe [Instance]
$sel:healthCheck:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe HealthCheck
$sel:dNSName:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe Text
$sel:createdTime:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe ISO8601
$sel:canonicalHostedZoneNameID:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe Text
$sel:canonicalHostedZoneName:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe Text
$sel:backendServerDescriptions:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe [BackendServerDescription]
$sel:availabilityZones:LoadBalancerDescription' :: LoadBalancerDescription -> Maybe [Text]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
availabilityZones
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [BackendServerDescription]
backendServerDescriptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
canonicalHostedZoneName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
canonicalHostedZoneNameID
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
createdTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
dNSName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe HealthCheck
healthCheck
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Instance]
instances
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [ListenerDescription]
listenerDescriptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
loadBalancerName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Policies
policies
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
scheme
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
securityGroups
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SourceSecurityGroup
sourceSecurityGroup
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
subnets
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
vPCId