{-# 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.SecurityHub.Types.AwsEc2SubnetDetails
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.SecurityHub.Types.AwsEc2SubnetDetails where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude
import Amazonka.SecurityHub.Types.Ipv6CidrBlockAssociation

-- | Contains information about a subnet in Amazon EC2.
--
-- /See:/ 'newAwsEc2SubnetDetails' smart constructor.
data AwsEc2SubnetDetails = AwsEc2SubnetDetails'
  { -- | The current state of the subnet.
    AwsEc2SubnetDetails -> Maybe Text
state :: Prelude.Maybe Prelude.Text,
    -- | The IPV6 CIDR blocks that are associated with the subnet.
    AwsEc2SubnetDetails -> Maybe [Ipv6CidrBlockAssociation]
ipv6CidrBlockAssociationSet :: Prelude.Maybe [Ipv6CidrBlockAssociation],
    -- | The identifier of the Availability Zone for the subnet.
    AwsEc2SubnetDetails -> Maybe Text
availabilityZoneId :: Prelude.Maybe Prelude.Text,
    -- | The number of available IPV4 addresses in the subnet. Does not include
    -- addresses for stopped instances.
    AwsEc2SubnetDetails -> Maybe Int
availableIpAddressCount :: Prelude.Maybe Prelude.Int,
    -- | The identifier of the VPC that contains the subnet.
    AwsEc2SubnetDetails -> Maybe Text
vpcId :: Prelude.Maybe Prelude.Text,
    -- | Whether to assign an IPV6 address to a network interface that is created
    -- in this subnet.
    AwsEc2SubnetDetails -> Maybe Bool
assignIpv6AddressOnCreation :: Prelude.Maybe Prelude.Bool,
    -- | The identifier of the subnet.
    AwsEc2SubnetDetails -> Maybe Text
subnetId :: Prelude.Maybe Prelude.Text,
    -- | The ARN of the subnet.
    AwsEc2SubnetDetails -> Maybe Text
subnetArn :: Prelude.Maybe Prelude.Text,
    -- | The identifier of the Amazon Web Services account that owns the subnet.
    AwsEc2SubnetDetails -> Maybe Text
ownerId :: Prelude.Maybe Prelude.Text,
    -- | The Availability Zone for the subnet.
    AwsEc2SubnetDetails -> Maybe Text
availabilityZone :: Prelude.Maybe Prelude.Text,
    -- | The IPV4 CIDR block that is assigned to the subnet.
    AwsEc2SubnetDetails -> Maybe Text
cidrBlock :: Prelude.Maybe Prelude.Text,
    -- | Whether instances in this subnet receive a public IP address.
    AwsEc2SubnetDetails -> Maybe Bool
mapPublicIpOnLaunch :: Prelude.Maybe Prelude.Bool,
    -- | Whether this subnet is the default subnet for the Availability Zone.
    AwsEc2SubnetDetails -> Maybe Bool
defaultForAz :: Prelude.Maybe Prelude.Bool
  }
  deriving (AwsEc2SubnetDetails -> AwsEc2SubnetDetails -> Bool
(AwsEc2SubnetDetails -> AwsEc2SubnetDetails -> Bool)
-> (AwsEc2SubnetDetails -> AwsEc2SubnetDetails -> Bool)
-> Eq AwsEc2SubnetDetails
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AwsEc2SubnetDetails -> AwsEc2SubnetDetails -> Bool
$c/= :: AwsEc2SubnetDetails -> AwsEc2SubnetDetails -> Bool
== :: AwsEc2SubnetDetails -> AwsEc2SubnetDetails -> Bool
$c== :: AwsEc2SubnetDetails -> AwsEc2SubnetDetails -> Bool
Prelude.Eq, ReadPrec [AwsEc2SubnetDetails]
ReadPrec AwsEc2SubnetDetails
Int -> ReadS AwsEc2SubnetDetails
ReadS [AwsEc2SubnetDetails]
(Int -> ReadS AwsEc2SubnetDetails)
-> ReadS [AwsEc2SubnetDetails]
-> ReadPrec AwsEc2SubnetDetails
-> ReadPrec [AwsEc2SubnetDetails]
-> Read AwsEc2SubnetDetails
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [AwsEc2SubnetDetails]
$creadListPrec :: ReadPrec [AwsEc2SubnetDetails]
readPrec :: ReadPrec AwsEc2SubnetDetails
$creadPrec :: ReadPrec AwsEc2SubnetDetails
readList :: ReadS [AwsEc2SubnetDetails]
$creadList :: ReadS [AwsEc2SubnetDetails]
readsPrec :: Int -> ReadS AwsEc2SubnetDetails
$creadsPrec :: Int -> ReadS AwsEc2SubnetDetails
Prelude.Read, Int -> AwsEc2SubnetDetails -> ShowS
[AwsEc2SubnetDetails] -> ShowS
AwsEc2SubnetDetails -> String
(Int -> AwsEc2SubnetDetails -> ShowS)
-> (AwsEc2SubnetDetails -> String)
-> ([AwsEc2SubnetDetails] -> ShowS)
-> Show AwsEc2SubnetDetails
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AwsEc2SubnetDetails] -> ShowS
$cshowList :: [AwsEc2SubnetDetails] -> ShowS
show :: AwsEc2SubnetDetails -> String
$cshow :: AwsEc2SubnetDetails -> String
showsPrec :: Int -> AwsEc2SubnetDetails -> ShowS
$cshowsPrec :: Int -> AwsEc2SubnetDetails -> ShowS
Prelude.Show, (forall x. AwsEc2SubnetDetails -> Rep AwsEc2SubnetDetails x)
-> (forall x. Rep AwsEc2SubnetDetails x -> AwsEc2SubnetDetails)
-> Generic AwsEc2SubnetDetails
forall x. Rep AwsEc2SubnetDetails x -> AwsEc2SubnetDetails
forall x. AwsEc2SubnetDetails -> Rep AwsEc2SubnetDetails x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep AwsEc2SubnetDetails x -> AwsEc2SubnetDetails
$cfrom :: forall x. AwsEc2SubnetDetails -> Rep AwsEc2SubnetDetails x
Prelude.Generic)

-- |
-- Create a value of 'AwsEc2SubnetDetails' 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:
--
-- 'state', 'awsEc2SubnetDetails_state' - The current state of the subnet.
--
-- 'ipv6CidrBlockAssociationSet', 'awsEc2SubnetDetails_ipv6CidrBlockAssociationSet' - The IPV6 CIDR blocks that are associated with the subnet.
--
-- 'availabilityZoneId', 'awsEc2SubnetDetails_availabilityZoneId' - The identifier of the Availability Zone for the subnet.
--
-- 'availableIpAddressCount', 'awsEc2SubnetDetails_availableIpAddressCount' - The number of available IPV4 addresses in the subnet. Does not include
-- addresses for stopped instances.
--
-- 'vpcId', 'awsEc2SubnetDetails_vpcId' - The identifier of the VPC that contains the subnet.
--
-- 'assignIpv6AddressOnCreation', 'awsEc2SubnetDetails_assignIpv6AddressOnCreation' - Whether to assign an IPV6 address to a network interface that is created
-- in this subnet.
--
-- 'subnetId', 'awsEc2SubnetDetails_subnetId' - The identifier of the subnet.
--
-- 'subnetArn', 'awsEc2SubnetDetails_subnetArn' - The ARN of the subnet.
--
-- 'ownerId', 'awsEc2SubnetDetails_ownerId' - The identifier of the Amazon Web Services account that owns the subnet.
--
-- 'availabilityZone', 'awsEc2SubnetDetails_availabilityZone' - The Availability Zone for the subnet.
--
-- 'cidrBlock', 'awsEc2SubnetDetails_cidrBlock' - The IPV4 CIDR block that is assigned to the subnet.
--
-- 'mapPublicIpOnLaunch', 'awsEc2SubnetDetails_mapPublicIpOnLaunch' - Whether instances in this subnet receive a public IP address.
--
-- 'defaultForAz', 'awsEc2SubnetDetails_defaultForAz' - Whether this subnet is the default subnet for the Availability Zone.
newAwsEc2SubnetDetails ::
  AwsEc2SubnetDetails
newAwsEc2SubnetDetails :: AwsEc2SubnetDetails
newAwsEc2SubnetDetails =
  AwsEc2SubnetDetails' :: Maybe Text
-> Maybe [Ipv6CidrBlockAssociation]
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Bool
-> AwsEc2SubnetDetails
AwsEc2SubnetDetails'
    { $sel:state:AwsEc2SubnetDetails' :: Maybe Text
state = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:ipv6CidrBlockAssociationSet:AwsEc2SubnetDetails' :: Maybe [Ipv6CidrBlockAssociation]
ipv6CidrBlockAssociationSet = Maybe [Ipv6CidrBlockAssociation]
forall a. Maybe a
Prelude.Nothing,
      $sel:availabilityZoneId:AwsEc2SubnetDetails' :: Maybe Text
availabilityZoneId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:availableIpAddressCount:AwsEc2SubnetDetails' :: Maybe Int
availableIpAddressCount = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:vpcId:AwsEc2SubnetDetails' :: Maybe Text
vpcId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:assignIpv6AddressOnCreation:AwsEc2SubnetDetails' :: Maybe Bool
assignIpv6AddressOnCreation = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:subnetId:AwsEc2SubnetDetails' :: Maybe Text
subnetId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:subnetArn:AwsEc2SubnetDetails' :: Maybe Text
subnetArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:ownerId:AwsEc2SubnetDetails' :: Maybe Text
ownerId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:availabilityZone:AwsEc2SubnetDetails' :: Maybe Text
availabilityZone = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:cidrBlock:AwsEc2SubnetDetails' :: Maybe Text
cidrBlock = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:mapPublicIpOnLaunch:AwsEc2SubnetDetails' :: Maybe Bool
mapPublicIpOnLaunch = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:defaultForAz:AwsEc2SubnetDetails' :: Maybe Bool
defaultForAz = Maybe Bool
forall a. Maybe a
Prelude.Nothing
    }

-- | The current state of the subnet.
awsEc2SubnetDetails_state :: Lens.Lens' AwsEc2SubnetDetails (Prelude.Maybe Prelude.Text)
awsEc2SubnetDetails_state :: (Maybe Text -> f (Maybe Text))
-> AwsEc2SubnetDetails -> f AwsEc2SubnetDetails
awsEc2SubnetDetails_state = (AwsEc2SubnetDetails -> Maybe Text)
-> (AwsEc2SubnetDetails -> Maybe Text -> AwsEc2SubnetDetails)
-> Lens
     AwsEc2SubnetDetails AwsEc2SubnetDetails (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsEc2SubnetDetails' {Maybe Text
state :: Maybe Text
$sel:state:AwsEc2SubnetDetails' :: AwsEc2SubnetDetails -> Maybe Text
state} -> Maybe Text
state) (\s :: AwsEc2SubnetDetails
s@AwsEc2SubnetDetails' {} Maybe Text
a -> AwsEc2SubnetDetails
s {$sel:state:AwsEc2SubnetDetails' :: Maybe Text
state = Maybe Text
a} :: AwsEc2SubnetDetails)

-- | The IPV6 CIDR blocks that are associated with the subnet.
awsEc2SubnetDetails_ipv6CidrBlockAssociationSet :: Lens.Lens' AwsEc2SubnetDetails (Prelude.Maybe [Ipv6CidrBlockAssociation])
awsEc2SubnetDetails_ipv6CidrBlockAssociationSet :: (Maybe [Ipv6CidrBlockAssociation]
 -> f (Maybe [Ipv6CidrBlockAssociation]))
-> AwsEc2SubnetDetails -> f AwsEc2SubnetDetails
awsEc2SubnetDetails_ipv6CidrBlockAssociationSet = (AwsEc2SubnetDetails -> Maybe [Ipv6CidrBlockAssociation])
-> (AwsEc2SubnetDetails
    -> Maybe [Ipv6CidrBlockAssociation] -> AwsEc2SubnetDetails)
-> Lens
     AwsEc2SubnetDetails
     AwsEc2SubnetDetails
     (Maybe [Ipv6CidrBlockAssociation])
     (Maybe [Ipv6CidrBlockAssociation])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsEc2SubnetDetails' {Maybe [Ipv6CidrBlockAssociation]
ipv6CidrBlockAssociationSet :: Maybe [Ipv6CidrBlockAssociation]
$sel:ipv6CidrBlockAssociationSet:AwsEc2SubnetDetails' :: AwsEc2SubnetDetails -> Maybe [Ipv6CidrBlockAssociation]
ipv6CidrBlockAssociationSet} -> Maybe [Ipv6CidrBlockAssociation]
ipv6CidrBlockAssociationSet) (\s :: AwsEc2SubnetDetails
s@AwsEc2SubnetDetails' {} Maybe [Ipv6CidrBlockAssociation]
a -> AwsEc2SubnetDetails
s {$sel:ipv6CidrBlockAssociationSet:AwsEc2SubnetDetails' :: Maybe [Ipv6CidrBlockAssociation]
ipv6CidrBlockAssociationSet = Maybe [Ipv6CidrBlockAssociation]
a} :: AwsEc2SubnetDetails) ((Maybe [Ipv6CidrBlockAssociation]
  -> f (Maybe [Ipv6CidrBlockAssociation]))
 -> AwsEc2SubnetDetails -> f AwsEc2SubnetDetails)
-> ((Maybe [Ipv6CidrBlockAssociation]
     -> f (Maybe [Ipv6CidrBlockAssociation]))
    -> Maybe [Ipv6CidrBlockAssociation]
    -> f (Maybe [Ipv6CidrBlockAssociation]))
-> (Maybe [Ipv6CidrBlockAssociation]
    -> f (Maybe [Ipv6CidrBlockAssociation]))
-> AwsEc2SubnetDetails
-> f AwsEc2SubnetDetails
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [Ipv6CidrBlockAssociation]
  [Ipv6CidrBlockAssociation]
  [Ipv6CidrBlockAssociation]
  [Ipv6CidrBlockAssociation]
-> Iso
     (Maybe [Ipv6CidrBlockAssociation])
     (Maybe [Ipv6CidrBlockAssociation])
     (Maybe [Ipv6CidrBlockAssociation])
     (Maybe [Ipv6CidrBlockAssociation])
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 AnIso
  [Ipv6CidrBlockAssociation]
  [Ipv6CidrBlockAssociation]
  [Ipv6CidrBlockAssociation]
  [Ipv6CidrBlockAssociation]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The identifier of the Availability Zone for the subnet.
awsEc2SubnetDetails_availabilityZoneId :: Lens.Lens' AwsEc2SubnetDetails (Prelude.Maybe Prelude.Text)
awsEc2SubnetDetails_availabilityZoneId :: (Maybe Text -> f (Maybe Text))
-> AwsEc2SubnetDetails -> f AwsEc2SubnetDetails
awsEc2SubnetDetails_availabilityZoneId = (AwsEc2SubnetDetails -> Maybe Text)
-> (AwsEc2SubnetDetails -> Maybe Text -> AwsEc2SubnetDetails)
-> Lens
     AwsEc2SubnetDetails AwsEc2SubnetDetails (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsEc2SubnetDetails' {Maybe Text
availabilityZoneId :: Maybe Text
$sel:availabilityZoneId:AwsEc2SubnetDetails' :: AwsEc2SubnetDetails -> Maybe Text
availabilityZoneId} -> Maybe Text
availabilityZoneId) (\s :: AwsEc2SubnetDetails
s@AwsEc2SubnetDetails' {} Maybe Text
a -> AwsEc2SubnetDetails
s {$sel:availabilityZoneId:AwsEc2SubnetDetails' :: Maybe Text
availabilityZoneId = Maybe Text
a} :: AwsEc2SubnetDetails)

-- | The number of available IPV4 addresses in the subnet. Does not include
-- addresses for stopped instances.
awsEc2SubnetDetails_availableIpAddressCount :: Lens.Lens' AwsEc2SubnetDetails (Prelude.Maybe Prelude.Int)
awsEc2SubnetDetails_availableIpAddressCount :: (Maybe Int -> f (Maybe Int))
-> AwsEc2SubnetDetails -> f AwsEc2SubnetDetails
awsEc2SubnetDetails_availableIpAddressCount = (AwsEc2SubnetDetails -> Maybe Int)
-> (AwsEc2SubnetDetails -> Maybe Int -> AwsEc2SubnetDetails)
-> Lens
     AwsEc2SubnetDetails AwsEc2SubnetDetails (Maybe Int) (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsEc2SubnetDetails' {Maybe Int
availableIpAddressCount :: Maybe Int
$sel:availableIpAddressCount:AwsEc2SubnetDetails' :: AwsEc2SubnetDetails -> Maybe Int
availableIpAddressCount} -> Maybe Int
availableIpAddressCount) (\s :: AwsEc2SubnetDetails
s@AwsEc2SubnetDetails' {} Maybe Int
a -> AwsEc2SubnetDetails
s {$sel:availableIpAddressCount:AwsEc2SubnetDetails' :: Maybe Int
availableIpAddressCount = Maybe Int
a} :: AwsEc2SubnetDetails)

-- | The identifier of the VPC that contains the subnet.
awsEc2SubnetDetails_vpcId :: Lens.Lens' AwsEc2SubnetDetails (Prelude.Maybe Prelude.Text)
awsEc2SubnetDetails_vpcId :: (Maybe Text -> f (Maybe Text))
-> AwsEc2SubnetDetails -> f AwsEc2SubnetDetails
awsEc2SubnetDetails_vpcId = (AwsEc2SubnetDetails -> Maybe Text)
-> (AwsEc2SubnetDetails -> Maybe Text -> AwsEc2SubnetDetails)
-> Lens
     AwsEc2SubnetDetails AwsEc2SubnetDetails (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsEc2SubnetDetails' {Maybe Text
vpcId :: Maybe Text
$sel:vpcId:AwsEc2SubnetDetails' :: AwsEc2SubnetDetails -> Maybe Text
vpcId} -> Maybe Text
vpcId) (\s :: AwsEc2SubnetDetails
s@AwsEc2SubnetDetails' {} Maybe Text
a -> AwsEc2SubnetDetails
s {$sel:vpcId:AwsEc2SubnetDetails' :: Maybe Text
vpcId = Maybe Text
a} :: AwsEc2SubnetDetails)

-- | Whether to assign an IPV6 address to a network interface that is created
-- in this subnet.
awsEc2SubnetDetails_assignIpv6AddressOnCreation :: Lens.Lens' AwsEc2SubnetDetails (Prelude.Maybe Prelude.Bool)
awsEc2SubnetDetails_assignIpv6AddressOnCreation :: (Maybe Bool -> f (Maybe Bool))
-> AwsEc2SubnetDetails -> f AwsEc2SubnetDetails
awsEc2SubnetDetails_assignIpv6AddressOnCreation = (AwsEc2SubnetDetails -> Maybe Bool)
-> (AwsEc2SubnetDetails -> Maybe Bool -> AwsEc2SubnetDetails)
-> Lens
     AwsEc2SubnetDetails AwsEc2SubnetDetails (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsEc2SubnetDetails' {Maybe Bool
assignIpv6AddressOnCreation :: Maybe Bool
$sel:assignIpv6AddressOnCreation:AwsEc2SubnetDetails' :: AwsEc2SubnetDetails -> Maybe Bool
assignIpv6AddressOnCreation} -> Maybe Bool
assignIpv6AddressOnCreation) (\s :: AwsEc2SubnetDetails
s@AwsEc2SubnetDetails' {} Maybe Bool
a -> AwsEc2SubnetDetails
s {$sel:assignIpv6AddressOnCreation:AwsEc2SubnetDetails' :: Maybe Bool
assignIpv6AddressOnCreation = Maybe Bool
a} :: AwsEc2SubnetDetails)

-- | The identifier of the subnet.
awsEc2SubnetDetails_subnetId :: Lens.Lens' AwsEc2SubnetDetails (Prelude.Maybe Prelude.Text)
awsEc2SubnetDetails_subnetId :: (Maybe Text -> f (Maybe Text))
-> AwsEc2SubnetDetails -> f AwsEc2SubnetDetails
awsEc2SubnetDetails_subnetId = (AwsEc2SubnetDetails -> Maybe Text)
-> (AwsEc2SubnetDetails -> Maybe Text -> AwsEc2SubnetDetails)
-> Lens
     AwsEc2SubnetDetails AwsEc2SubnetDetails (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsEc2SubnetDetails' {Maybe Text
subnetId :: Maybe Text
$sel:subnetId:AwsEc2SubnetDetails' :: AwsEc2SubnetDetails -> Maybe Text
subnetId} -> Maybe Text
subnetId) (\s :: AwsEc2SubnetDetails
s@AwsEc2SubnetDetails' {} Maybe Text
a -> AwsEc2SubnetDetails
s {$sel:subnetId:AwsEc2SubnetDetails' :: Maybe Text
subnetId = Maybe Text
a} :: AwsEc2SubnetDetails)

-- | The ARN of the subnet.
awsEc2SubnetDetails_subnetArn :: Lens.Lens' AwsEc2SubnetDetails (Prelude.Maybe Prelude.Text)
awsEc2SubnetDetails_subnetArn :: (Maybe Text -> f (Maybe Text))
-> AwsEc2SubnetDetails -> f AwsEc2SubnetDetails
awsEc2SubnetDetails_subnetArn = (AwsEc2SubnetDetails -> Maybe Text)
-> (AwsEc2SubnetDetails -> Maybe Text -> AwsEc2SubnetDetails)
-> Lens
     AwsEc2SubnetDetails AwsEc2SubnetDetails (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsEc2SubnetDetails' {Maybe Text
subnetArn :: Maybe Text
$sel:subnetArn:AwsEc2SubnetDetails' :: AwsEc2SubnetDetails -> Maybe Text
subnetArn} -> Maybe Text
subnetArn) (\s :: AwsEc2SubnetDetails
s@AwsEc2SubnetDetails' {} Maybe Text
a -> AwsEc2SubnetDetails
s {$sel:subnetArn:AwsEc2SubnetDetails' :: Maybe Text
subnetArn = Maybe Text
a} :: AwsEc2SubnetDetails)

-- | The identifier of the Amazon Web Services account that owns the subnet.
awsEc2SubnetDetails_ownerId :: Lens.Lens' AwsEc2SubnetDetails (Prelude.Maybe Prelude.Text)
awsEc2SubnetDetails_ownerId :: (Maybe Text -> f (Maybe Text))
-> AwsEc2SubnetDetails -> f AwsEc2SubnetDetails
awsEc2SubnetDetails_ownerId = (AwsEc2SubnetDetails -> Maybe Text)
-> (AwsEc2SubnetDetails -> Maybe Text -> AwsEc2SubnetDetails)
-> Lens
     AwsEc2SubnetDetails AwsEc2SubnetDetails (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsEc2SubnetDetails' {Maybe Text
ownerId :: Maybe Text
$sel:ownerId:AwsEc2SubnetDetails' :: AwsEc2SubnetDetails -> Maybe Text
ownerId} -> Maybe Text
ownerId) (\s :: AwsEc2SubnetDetails
s@AwsEc2SubnetDetails' {} Maybe Text
a -> AwsEc2SubnetDetails
s {$sel:ownerId:AwsEc2SubnetDetails' :: Maybe Text
ownerId = Maybe Text
a} :: AwsEc2SubnetDetails)

-- | The Availability Zone for the subnet.
awsEc2SubnetDetails_availabilityZone :: Lens.Lens' AwsEc2SubnetDetails (Prelude.Maybe Prelude.Text)
awsEc2SubnetDetails_availabilityZone :: (Maybe Text -> f (Maybe Text))
-> AwsEc2SubnetDetails -> f AwsEc2SubnetDetails
awsEc2SubnetDetails_availabilityZone = (AwsEc2SubnetDetails -> Maybe Text)
-> (AwsEc2SubnetDetails -> Maybe Text -> AwsEc2SubnetDetails)
-> Lens
     AwsEc2SubnetDetails AwsEc2SubnetDetails (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsEc2SubnetDetails' {Maybe Text
availabilityZone :: Maybe Text
$sel:availabilityZone:AwsEc2SubnetDetails' :: AwsEc2SubnetDetails -> Maybe Text
availabilityZone} -> Maybe Text
availabilityZone) (\s :: AwsEc2SubnetDetails
s@AwsEc2SubnetDetails' {} Maybe Text
a -> AwsEc2SubnetDetails
s {$sel:availabilityZone:AwsEc2SubnetDetails' :: Maybe Text
availabilityZone = Maybe Text
a} :: AwsEc2SubnetDetails)

-- | The IPV4 CIDR block that is assigned to the subnet.
awsEc2SubnetDetails_cidrBlock :: Lens.Lens' AwsEc2SubnetDetails (Prelude.Maybe Prelude.Text)
awsEc2SubnetDetails_cidrBlock :: (Maybe Text -> f (Maybe Text))
-> AwsEc2SubnetDetails -> f AwsEc2SubnetDetails
awsEc2SubnetDetails_cidrBlock = (AwsEc2SubnetDetails -> Maybe Text)
-> (AwsEc2SubnetDetails -> Maybe Text -> AwsEc2SubnetDetails)
-> Lens
     AwsEc2SubnetDetails AwsEc2SubnetDetails (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsEc2SubnetDetails' {Maybe Text
cidrBlock :: Maybe Text
$sel:cidrBlock:AwsEc2SubnetDetails' :: AwsEc2SubnetDetails -> Maybe Text
cidrBlock} -> Maybe Text
cidrBlock) (\s :: AwsEc2SubnetDetails
s@AwsEc2SubnetDetails' {} Maybe Text
a -> AwsEc2SubnetDetails
s {$sel:cidrBlock:AwsEc2SubnetDetails' :: Maybe Text
cidrBlock = Maybe Text
a} :: AwsEc2SubnetDetails)

-- | Whether instances in this subnet receive a public IP address.
awsEc2SubnetDetails_mapPublicIpOnLaunch :: Lens.Lens' AwsEc2SubnetDetails (Prelude.Maybe Prelude.Bool)
awsEc2SubnetDetails_mapPublicIpOnLaunch :: (Maybe Bool -> f (Maybe Bool))
-> AwsEc2SubnetDetails -> f AwsEc2SubnetDetails
awsEc2SubnetDetails_mapPublicIpOnLaunch = (AwsEc2SubnetDetails -> Maybe Bool)
-> (AwsEc2SubnetDetails -> Maybe Bool -> AwsEc2SubnetDetails)
-> Lens
     AwsEc2SubnetDetails AwsEc2SubnetDetails (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsEc2SubnetDetails' {Maybe Bool
mapPublicIpOnLaunch :: Maybe Bool
$sel:mapPublicIpOnLaunch:AwsEc2SubnetDetails' :: AwsEc2SubnetDetails -> Maybe Bool
mapPublicIpOnLaunch} -> Maybe Bool
mapPublicIpOnLaunch) (\s :: AwsEc2SubnetDetails
s@AwsEc2SubnetDetails' {} Maybe Bool
a -> AwsEc2SubnetDetails
s {$sel:mapPublicIpOnLaunch:AwsEc2SubnetDetails' :: Maybe Bool
mapPublicIpOnLaunch = Maybe Bool
a} :: AwsEc2SubnetDetails)

-- | Whether this subnet is the default subnet for the Availability Zone.
awsEc2SubnetDetails_defaultForAz :: Lens.Lens' AwsEc2SubnetDetails (Prelude.Maybe Prelude.Bool)
awsEc2SubnetDetails_defaultForAz :: (Maybe Bool -> f (Maybe Bool))
-> AwsEc2SubnetDetails -> f AwsEc2SubnetDetails
awsEc2SubnetDetails_defaultForAz = (AwsEc2SubnetDetails -> Maybe Bool)
-> (AwsEc2SubnetDetails -> Maybe Bool -> AwsEc2SubnetDetails)
-> Lens
     AwsEc2SubnetDetails AwsEc2SubnetDetails (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsEc2SubnetDetails' {Maybe Bool
defaultForAz :: Maybe Bool
$sel:defaultForAz:AwsEc2SubnetDetails' :: AwsEc2SubnetDetails -> Maybe Bool
defaultForAz} -> Maybe Bool
defaultForAz) (\s :: AwsEc2SubnetDetails
s@AwsEc2SubnetDetails' {} Maybe Bool
a -> AwsEc2SubnetDetails
s {$sel:defaultForAz:AwsEc2SubnetDetails' :: Maybe Bool
defaultForAz = Maybe Bool
a} :: AwsEc2SubnetDetails)

instance Core.FromJSON AwsEc2SubnetDetails where
  parseJSON :: Value -> Parser AwsEc2SubnetDetails
parseJSON =
    String
-> (Object -> Parser AwsEc2SubnetDetails)
-> Value
-> Parser AwsEc2SubnetDetails
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"AwsEc2SubnetDetails"
      ( \Object
x ->
          Maybe Text
-> Maybe [Ipv6CidrBlockAssociation]
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Bool
-> AwsEc2SubnetDetails
AwsEc2SubnetDetails'
            (Maybe Text
 -> Maybe [Ipv6CidrBlockAssociation]
 -> Maybe Text
 -> Maybe Int
 -> Maybe Text
 -> Maybe Bool
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Bool
 -> Maybe Bool
 -> AwsEc2SubnetDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe [Ipv6CidrBlockAssociation]
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Bool
      -> AwsEc2SubnetDetails)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"State")
            Parser
  (Maybe [Ipv6CidrBlockAssociation]
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Bool
   -> AwsEc2SubnetDetails)
-> Parser (Maybe [Ipv6CidrBlockAssociation])
-> Parser
     (Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Bool
      -> AwsEc2SubnetDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object -> Text -> Parser (Maybe (Maybe [Ipv6CidrBlockAssociation]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Ipv6CidrBlockAssociationSet"
                            Parser (Maybe (Maybe [Ipv6CidrBlockAssociation]))
-> Maybe [Ipv6CidrBlockAssociation]
-> Parser (Maybe [Ipv6CidrBlockAssociation])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [Ipv6CidrBlockAssociation]
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Bool
   -> AwsEc2SubnetDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe Int
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Bool
      -> AwsEc2SubnetDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AvailabilityZoneId")
            Parser
  (Maybe Int
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Bool
   -> AwsEc2SubnetDetails)
-> Parser (Maybe Int)
-> Parser
     (Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Bool
      -> AwsEc2SubnetDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AvailableIpAddressCount")
            Parser
  (Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Bool
   -> AwsEc2SubnetDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Bool
      -> AwsEc2SubnetDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"VpcId")
            Parser
  (Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Bool
   -> AwsEc2SubnetDetails)
-> Parser (Maybe Bool)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Bool
      -> AwsEc2SubnetDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AssignIpv6AddressOnCreation")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Bool
   -> AwsEc2SubnetDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Bool
      -> AwsEc2SubnetDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"SubnetId")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Bool
   -> AwsEc2SubnetDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Bool
      -> AwsEc2SubnetDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"SubnetArn")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Bool
   -> AwsEc2SubnetDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text -> Maybe Bool -> Maybe Bool -> AwsEc2SubnetDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"OwnerId")
            Parser
  (Maybe Text
   -> Maybe Text -> Maybe Bool -> Maybe Bool -> AwsEc2SubnetDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text -> Maybe Bool -> Maybe Bool -> AwsEc2SubnetDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AvailabilityZone")
            Parser
  (Maybe Text -> Maybe Bool -> Maybe Bool -> AwsEc2SubnetDetails)
-> Parser (Maybe Text)
-> Parser (Maybe Bool -> Maybe Bool -> AwsEc2SubnetDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"CidrBlock")
            Parser (Maybe Bool -> Maybe Bool -> AwsEc2SubnetDetails)
-> Parser (Maybe Bool)
-> Parser (Maybe Bool -> AwsEc2SubnetDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"MapPublicIpOnLaunch")
            Parser (Maybe Bool -> AwsEc2SubnetDetails)
-> Parser (Maybe Bool) -> Parser AwsEc2SubnetDetails
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DefaultForAz")
      )

instance Prelude.Hashable AwsEc2SubnetDetails

instance Prelude.NFData AwsEc2SubnetDetails

instance Core.ToJSON AwsEc2SubnetDetails where
  toJSON :: AwsEc2SubnetDetails -> Value
toJSON AwsEc2SubnetDetails' {Maybe Bool
Maybe Int
Maybe [Ipv6CidrBlockAssociation]
Maybe Text
defaultForAz :: Maybe Bool
mapPublicIpOnLaunch :: Maybe Bool
cidrBlock :: Maybe Text
availabilityZone :: Maybe Text
ownerId :: Maybe Text
subnetArn :: Maybe Text
subnetId :: Maybe Text
assignIpv6AddressOnCreation :: Maybe Bool
vpcId :: Maybe Text
availableIpAddressCount :: Maybe Int
availabilityZoneId :: Maybe Text
ipv6CidrBlockAssociationSet :: Maybe [Ipv6CidrBlockAssociation]
state :: Maybe Text
$sel:defaultForAz:AwsEc2SubnetDetails' :: AwsEc2SubnetDetails -> Maybe Bool
$sel:mapPublicIpOnLaunch:AwsEc2SubnetDetails' :: AwsEc2SubnetDetails -> Maybe Bool
$sel:cidrBlock:AwsEc2SubnetDetails' :: AwsEc2SubnetDetails -> Maybe Text
$sel:availabilityZone:AwsEc2SubnetDetails' :: AwsEc2SubnetDetails -> Maybe Text
$sel:ownerId:AwsEc2SubnetDetails' :: AwsEc2SubnetDetails -> Maybe Text
$sel:subnetArn:AwsEc2SubnetDetails' :: AwsEc2SubnetDetails -> Maybe Text
$sel:subnetId:AwsEc2SubnetDetails' :: AwsEc2SubnetDetails -> Maybe Text
$sel:assignIpv6AddressOnCreation:AwsEc2SubnetDetails' :: AwsEc2SubnetDetails -> Maybe Bool
$sel:vpcId:AwsEc2SubnetDetails' :: AwsEc2SubnetDetails -> Maybe Text
$sel:availableIpAddressCount:AwsEc2SubnetDetails' :: AwsEc2SubnetDetails -> Maybe Int
$sel:availabilityZoneId:AwsEc2SubnetDetails' :: AwsEc2SubnetDetails -> Maybe Text
$sel:ipv6CidrBlockAssociationSet:AwsEc2SubnetDetails' :: AwsEc2SubnetDetails -> Maybe [Ipv6CidrBlockAssociation]
$sel:state:AwsEc2SubnetDetails' :: AwsEc2SubnetDetails -> Maybe Text
..} =
    [Pair] -> Value
Core.object
      ( [Maybe Pair] -> [Pair]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Text
"State" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
state,
            (Text
"Ipv6CidrBlockAssociationSet" Text -> [Ipv6CidrBlockAssociation] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              ([Ipv6CidrBlockAssociation] -> Pair)
-> Maybe [Ipv6CidrBlockAssociation] -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Ipv6CidrBlockAssociation]
ipv6CidrBlockAssociationSet,
            (Text
"AvailabilityZoneId" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
availabilityZoneId,
            (Text
"AvailableIpAddressCount" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Int -> Pair) -> Maybe Int -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
availableIpAddressCount,
            (Text
"VpcId" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
vpcId,
            (Text
"AssignIpv6AddressOnCreation" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Bool -> Pair) -> Maybe Bool -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
assignIpv6AddressOnCreation,
            (Text
"SubnetId" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
subnetId,
            (Text
"SubnetArn" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
subnetArn,
            (Text
"OwnerId" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
ownerId,
            (Text
"AvailabilityZone" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
availabilityZone,
            (Text
"CidrBlock" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
cidrBlock,
            (Text
"MapPublicIpOnLaunch" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Bool -> Pair) -> Maybe Bool -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
mapPublicIpOnLaunch,
            (Text
"DefaultForAz" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Bool -> Pair) -> Maybe Bool -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
defaultForAz
          ]
      )