{-# 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.EC2.Types.LaunchTemplateInstanceNetworkInterfaceSpecification
-- 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.EC2.Types.LaunchTemplateInstanceNetworkInterfaceSpecification where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.EC2.Internal
import Amazonka.EC2.Types.InstanceIpv6Address
import Amazonka.EC2.Types.Ipv4PrefixSpecificationResponse
import Amazonka.EC2.Types.Ipv6PrefixSpecificationResponse
import Amazonka.EC2.Types.PrivateIpAddressSpecification
import qualified Amazonka.Prelude as Prelude

-- | Describes a network interface.
--
-- /See:/ 'newLaunchTemplateInstanceNetworkInterfaceSpecification' smart constructor.
data LaunchTemplateInstanceNetworkInterfaceSpecification = LaunchTemplateInstanceNetworkInterfaceSpecification'
  { -- | Indicates whether to associate a Carrier IP address with eth0 for a new
    -- network interface.
    --
    -- Use this option when you launch an instance in a Wavelength Zone and
    -- want to associate a Carrier IP address with the network interface. For
    -- more information about Carrier IP addresses, see
    -- <https://docs.aws.amazon.com/wavelength/latest/developerguide/how-wavelengths-work.html#provider-owned-ip Carrier IP addresses>
    -- in the /Wavelength Developer Guide/.
    LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Bool
associateCarrierIpAddress :: Prelude.Maybe Prelude.Bool,
    -- | Indicates whether to associate a public IPv4 address with eth0 for a new
    -- network interface.
    LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Bool
associatePublicIpAddress :: Prelude.Maybe Prelude.Bool,
    -- | Indicates whether the network interface is deleted when the instance is
    -- terminated.
    LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Bool
deleteOnTermination :: Prelude.Maybe Prelude.Bool,
    -- | A description for the network interface.
    LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | The device index for the network interface attachment.
    LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Int
deviceIndex :: Prelude.Maybe Prelude.Int,
    -- | The IDs of one or more security groups.
    LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe [Text]
groups :: Prelude.Maybe [Prelude.Text],
    -- | The type of network interface.
    LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Text
interfaceType :: Prelude.Maybe Prelude.Text,
    -- | The number of IPv4 prefixes that Amazon Web Services automatically
    -- assigned to the network interface.
    LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Int
ipv4PrefixCount :: Prelude.Maybe Prelude.Int,
    -- | One or more IPv4 prefixes assigned to the network interface.
    LaunchTemplateInstanceNetworkInterfaceSpecification
-> Maybe [Ipv4PrefixSpecificationResponse]
ipv4Prefixes :: Prelude.Maybe [Ipv4PrefixSpecificationResponse],
    -- | The number of IPv6 addresses for the network interface.
    LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Int
ipv6AddressCount :: Prelude.Maybe Prelude.Int,
    -- | The IPv6 addresses for the network interface.
    LaunchTemplateInstanceNetworkInterfaceSpecification
-> Maybe [InstanceIpv6Address]
ipv6Addresses :: Prelude.Maybe [InstanceIpv6Address],
    -- | The number of IPv6 prefixes that Amazon Web Services automatically
    -- assigned to the network interface.
    LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Int
ipv6PrefixCount :: Prelude.Maybe Prelude.Int,
    -- | One or more IPv6 prefixes assigned to the network interface.
    LaunchTemplateInstanceNetworkInterfaceSpecification
-> Maybe [Ipv6PrefixSpecificationResponse]
ipv6Prefixes :: Prelude.Maybe [Ipv6PrefixSpecificationResponse],
    -- | The index of the network card.
    LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Int
networkCardIndex :: Prelude.Maybe Prelude.Int,
    -- | The ID of the network interface.
    LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Text
networkInterfaceId :: Prelude.Maybe Prelude.Text,
    -- | The primary private IPv4 address of the network interface.
    LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Text
privateIpAddress :: Prelude.Maybe Prelude.Text,
    -- | One or more private IPv4 addresses.
    LaunchTemplateInstanceNetworkInterfaceSpecification
-> Maybe [PrivateIpAddressSpecification]
privateIpAddresses :: Prelude.Maybe [PrivateIpAddressSpecification],
    -- | The number of secondary private IPv4 addresses for the network
    -- interface.
    LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Int
secondaryPrivateIpAddressCount :: Prelude.Maybe Prelude.Int,
    -- | The ID of the subnet for the network interface.
    LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Text
subnetId :: Prelude.Maybe Prelude.Text
  }
  deriving (LaunchTemplateInstanceNetworkInterfaceSpecification
-> LaunchTemplateInstanceNetworkInterfaceSpecification -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: LaunchTemplateInstanceNetworkInterfaceSpecification
-> LaunchTemplateInstanceNetworkInterfaceSpecification -> Bool
$c/= :: LaunchTemplateInstanceNetworkInterfaceSpecification
-> LaunchTemplateInstanceNetworkInterfaceSpecification -> Bool
== :: LaunchTemplateInstanceNetworkInterfaceSpecification
-> LaunchTemplateInstanceNetworkInterfaceSpecification -> Bool
$c== :: LaunchTemplateInstanceNetworkInterfaceSpecification
-> LaunchTemplateInstanceNetworkInterfaceSpecification -> Bool
Prelude.Eq, ReadPrec [LaunchTemplateInstanceNetworkInterfaceSpecification]
ReadPrec LaunchTemplateInstanceNetworkInterfaceSpecification
Int -> ReadS LaunchTemplateInstanceNetworkInterfaceSpecification
ReadS [LaunchTemplateInstanceNetworkInterfaceSpecification]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [LaunchTemplateInstanceNetworkInterfaceSpecification]
$creadListPrec :: ReadPrec [LaunchTemplateInstanceNetworkInterfaceSpecification]
readPrec :: ReadPrec LaunchTemplateInstanceNetworkInterfaceSpecification
$creadPrec :: ReadPrec LaunchTemplateInstanceNetworkInterfaceSpecification
readList :: ReadS [LaunchTemplateInstanceNetworkInterfaceSpecification]
$creadList :: ReadS [LaunchTemplateInstanceNetworkInterfaceSpecification]
readsPrec :: Int -> ReadS LaunchTemplateInstanceNetworkInterfaceSpecification
$creadsPrec :: Int -> ReadS LaunchTemplateInstanceNetworkInterfaceSpecification
Prelude.Read, Int -> LaunchTemplateInstanceNetworkInterfaceSpecification -> ShowS
[LaunchTemplateInstanceNetworkInterfaceSpecification] -> ShowS
LaunchTemplateInstanceNetworkInterfaceSpecification -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [LaunchTemplateInstanceNetworkInterfaceSpecification] -> ShowS
$cshowList :: [LaunchTemplateInstanceNetworkInterfaceSpecification] -> ShowS
show :: LaunchTemplateInstanceNetworkInterfaceSpecification -> String
$cshow :: LaunchTemplateInstanceNetworkInterfaceSpecification -> String
showsPrec :: Int -> LaunchTemplateInstanceNetworkInterfaceSpecification -> ShowS
$cshowsPrec :: Int -> LaunchTemplateInstanceNetworkInterfaceSpecification -> ShowS
Prelude.Show, forall x.
Rep LaunchTemplateInstanceNetworkInterfaceSpecification x
-> LaunchTemplateInstanceNetworkInterfaceSpecification
forall x.
LaunchTemplateInstanceNetworkInterfaceSpecification
-> Rep LaunchTemplateInstanceNetworkInterfaceSpecification x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep LaunchTemplateInstanceNetworkInterfaceSpecification x
-> LaunchTemplateInstanceNetworkInterfaceSpecification
$cfrom :: forall x.
LaunchTemplateInstanceNetworkInterfaceSpecification
-> Rep LaunchTemplateInstanceNetworkInterfaceSpecification x
Prelude.Generic)

-- |
-- Create a value of 'LaunchTemplateInstanceNetworkInterfaceSpecification' 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:
--
-- 'associateCarrierIpAddress', 'launchTemplateInstanceNetworkInterfaceSpecification_associateCarrierIpAddress' - Indicates whether to associate a Carrier IP address with eth0 for a new
-- network interface.
--
-- Use this option when you launch an instance in a Wavelength Zone and
-- want to associate a Carrier IP address with the network interface. For
-- more information about Carrier IP addresses, see
-- <https://docs.aws.amazon.com/wavelength/latest/developerguide/how-wavelengths-work.html#provider-owned-ip Carrier IP addresses>
-- in the /Wavelength Developer Guide/.
--
-- 'associatePublicIpAddress', 'launchTemplateInstanceNetworkInterfaceSpecification_associatePublicIpAddress' - Indicates whether to associate a public IPv4 address with eth0 for a new
-- network interface.
--
-- 'deleteOnTermination', 'launchTemplateInstanceNetworkInterfaceSpecification_deleteOnTermination' - Indicates whether the network interface is deleted when the instance is
-- terminated.
--
-- 'description', 'launchTemplateInstanceNetworkInterfaceSpecification_description' - A description for the network interface.
--
-- 'deviceIndex', 'launchTemplateInstanceNetworkInterfaceSpecification_deviceIndex' - The device index for the network interface attachment.
--
-- 'groups', 'launchTemplateInstanceNetworkInterfaceSpecification_groups' - The IDs of one or more security groups.
--
-- 'interfaceType', 'launchTemplateInstanceNetworkInterfaceSpecification_interfaceType' - The type of network interface.
--
-- 'ipv4PrefixCount', 'launchTemplateInstanceNetworkInterfaceSpecification_ipv4PrefixCount' - The number of IPv4 prefixes that Amazon Web Services automatically
-- assigned to the network interface.
--
-- 'ipv4Prefixes', 'launchTemplateInstanceNetworkInterfaceSpecification_ipv4Prefixes' - One or more IPv4 prefixes assigned to the network interface.
--
-- 'ipv6AddressCount', 'launchTemplateInstanceNetworkInterfaceSpecification_ipv6AddressCount' - The number of IPv6 addresses for the network interface.
--
-- 'ipv6Addresses', 'launchTemplateInstanceNetworkInterfaceSpecification_ipv6Addresses' - The IPv6 addresses for the network interface.
--
-- 'ipv6PrefixCount', 'launchTemplateInstanceNetworkInterfaceSpecification_ipv6PrefixCount' - The number of IPv6 prefixes that Amazon Web Services automatically
-- assigned to the network interface.
--
-- 'ipv6Prefixes', 'launchTemplateInstanceNetworkInterfaceSpecification_ipv6Prefixes' - One or more IPv6 prefixes assigned to the network interface.
--
-- 'networkCardIndex', 'launchTemplateInstanceNetworkInterfaceSpecification_networkCardIndex' - The index of the network card.
--
-- 'networkInterfaceId', 'launchTemplateInstanceNetworkInterfaceSpecification_networkInterfaceId' - The ID of the network interface.
--
-- 'privateIpAddress', 'launchTemplateInstanceNetworkInterfaceSpecification_privateIpAddress' - The primary private IPv4 address of the network interface.
--
-- 'privateIpAddresses', 'launchTemplateInstanceNetworkInterfaceSpecification_privateIpAddresses' - One or more private IPv4 addresses.
--
-- 'secondaryPrivateIpAddressCount', 'launchTemplateInstanceNetworkInterfaceSpecification_secondaryPrivateIpAddressCount' - The number of secondary private IPv4 addresses for the network
-- interface.
--
-- 'subnetId', 'launchTemplateInstanceNetworkInterfaceSpecification_subnetId' - The ID of the subnet for the network interface.
newLaunchTemplateInstanceNetworkInterfaceSpecification ::
  LaunchTemplateInstanceNetworkInterfaceSpecification
newLaunchTemplateInstanceNetworkInterfaceSpecification :: LaunchTemplateInstanceNetworkInterfaceSpecification
newLaunchTemplateInstanceNetworkInterfaceSpecification =
  LaunchTemplateInstanceNetworkInterfaceSpecification'
    { $sel:associateCarrierIpAddress:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe Bool
associateCarrierIpAddress =
        forall a. Maybe a
Prelude.Nothing,
      $sel:associatePublicIpAddress:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe Bool
associatePublicIpAddress =
        forall a. Maybe a
Prelude.Nothing,
      $sel:deleteOnTermination:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe Bool
deleteOnTermination =
        forall a. Maybe a
Prelude.Nothing,
      $sel:description:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe Text
description =
        forall a. Maybe a
Prelude.Nothing,
      $sel:deviceIndex:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe Int
deviceIndex =
        forall a. Maybe a
Prelude.Nothing,
      $sel:groups:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe [Text]
groups =
        forall a. Maybe a
Prelude.Nothing,
      $sel:interfaceType:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe Text
interfaceType =
        forall a. Maybe a
Prelude.Nothing,
      $sel:ipv4PrefixCount:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe Int
ipv4PrefixCount =
        forall a. Maybe a
Prelude.Nothing,
      $sel:ipv4Prefixes:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe [Ipv4PrefixSpecificationResponse]
ipv4Prefixes =
        forall a. Maybe a
Prelude.Nothing,
      $sel:ipv6AddressCount:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe Int
ipv6AddressCount =
        forall a. Maybe a
Prelude.Nothing,
      $sel:ipv6Addresses:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe [InstanceIpv6Address]
ipv6Addresses =
        forall a. Maybe a
Prelude.Nothing,
      $sel:ipv6PrefixCount:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe Int
ipv6PrefixCount =
        forall a. Maybe a
Prelude.Nothing,
      $sel:ipv6Prefixes:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe [Ipv6PrefixSpecificationResponse]
ipv6Prefixes =
        forall a. Maybe a
Prelude.Nothing,
      $sel:networkCardIndex:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe Int
networkCardIndex =
        forall a. Maybe a
Prelude.Nothing,
      $sel:networkInterfaceId:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe Text
networkInterfaceId =
        forall a. Maybe a
Prelude.Nothing,
      $sel:privateIpAddress:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe Text
privateIpAddress =
        forall a. Maybe a
Prelude.Nothing,
      $sel:privateIpAddresses:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe [PrivateIpAddressSpecification]
privateIpAddresses =
        forall a. Maybe a
Prelude.Nothing,
      $sel:secondaryPrivateIpAddressCount:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe Int
secondaryPrivateIpAddressCount =
        forall a. Maybe a
Prelude.Nothing,
      $sel:subnetId:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe Text
subnetId =
        forall a. Maybe a
Prelude.Nothing
    }

-- | Indicates whether to associate a Carrier IP address with eth0 for a new
-- network interface.
--
-- Use this option when you launch an instance in a Wavelength Zone and
-- want to associate a Carrier IP address with the network interface. For
-- more information about Carrier IP addresses, see
-- <https://docs.aws.amazon.com/wavelength/latest/developerguide/how-wavelengths-work.html#provider-owned-ip Carrier IP addresses>
-- in the /Wavelength Developer Guide/.
launchTemplateInstanceNetworkInterfaceSpecification_associateCarrierIpAddress :: Lens.Lens' LaunchTemplateInstanceNetworkInterfaceSpecification (Prelude.Maybe Prelude.Bool)
launchTemplateInstanceNetworkInterfaceSpecification_associateCarrierIpAddress :: Lens'
  LaunchTemplateInstanceNetworkInterfaceSpecification (Maybe Bool)
launchTemplateInstanceNetworkInterfaceSpecification_associateCarrierIpAddress = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LaunchTemplateInstanceNetworkInterfaceSpecification' {Maybe Bool
associateCarrierIpAddress :: Maybe Bool
$sel:associateCarrierIpAddress:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Bool
associateCarrierIpAddress} -> Maybe Bool
associateCarrierIpAddress) (\s :: LaunchTemplateInstanceNetworkInterfaceSpecification
s@LaunchTemplateInstanceNetworkInterfaceSpecification' {} Maybe Bool
a -> LaunchTemplateInstanceNetworkInterfaceSpecification
s {$sel:associateCarrierIpAddress:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe Bool
associateCarrierIpAddress = Maybe Bool
a} :: LaunchTemplateInstanceNetworkInterfaceSpecification)

-- | Indicates whether to associate a public IPv4 address with eth0 for a new
-- network interface.
launchTemplateInstanceNetworkInterfaceSpecification_associatePublicIpAddress :: Lens.Lens' LaunchTemplateInstanceNetworkInterfaceSpecification (Prelude.Maybe Prelude.Bool)
launchTemplateInstanceNetworkInterfaceSpecification_associatePublicIpAddress :: Lens'
  LaunchTemplateInstanceNetworkInterfaceSpecification (Maybe Bool)
launchTemplateInstanceNetworkInterfaceSpecification_associatePublicIpAddress = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LaunchTemplateInstanceNetworkInterfaceSpecification' {Maybe Bool
associatePublicIpAddress :: Maybe Bool
$sel:associatePublicIpAddress:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Bool
associatePublicIpAddress} -> Maybe Bool
associatePublicIpAddress) (\s :: LaunchTemplateInstanceNetworkInterfaceSpecification
s@LaunchTemplateInstanceNetworkInterfaceSpecification' {} Maybe Bool
a -> LaunchTemplateInstanceNetworkInterfaceSpecification
s {$sel:associatePublicIpAddress:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe Bool
associatePublicIpAddress = Maybe Bool
a} :: LaunchTemplateInstanceNetworkInterfaceSpecification)

-- | Indicates whether the network interface is deleted when the instance is
-- terminated.
launchTemplateInstanceNetworkInterfaceSpecification_deleteOnTermination :: Lens.Lens' LaunchTemplateInstanceNetworkInterfaceSpecification (Prelude.Maybe Prelude.Bool)
launchTemplateInstanceNetworkInterfaceSpecification_deleteOnTermination :: Lens'
  LaunchTemplateInstanceNetworkInterfaceSpecification (Maybe Bool)
launchTemplateInstanceNetworkInterfaceSpecification_deleteOnTermination = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LaunchTemplateInstanceNetworkInterfaceSpecification' {Maybe Bool
deleteOnTermination :: Maybe Bool
$sel:deleteOnTermination:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Bool
deleteOnTermination} -> Maybe Bool
deleteOnTermination) (\s :: LaunchTemplateInstanceNetworkInterfaceSpecification
s@LaunchTemplateInstanceNetworkInterfaceSpecification' {} Maybe Bool
a -> LaunchTemplateInstanceNetworkInterfaceSpecification
s {$sel:deleteOnTermination:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe Bool
deleteOnTermination = Maybe Bool
a} :: LaunchTemplateInstanceNetworkInterfaceSpecification)

-- | A description for the network interface.
launchTemplateInstanceNetworkInterfaceSpecification_description :: Lens.Lens' LaunchTemplateInstanceNetworkInterfaceSpecification (Prelude.Maybe Prelude.Text)
launchTemplateInstanceNetworkInterfaceSpecification_description :: Lens'
  LaunchTemplateInstanceNetworkInterfaceSpecification (Maybe Text)
launchTemplateInstanceNetworkInterfaceSpecification_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LaunchTemplateInstanceNetworkInterfaceSpecification' {Maybe Text
description :: Maybe Text
$sel:description:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Text
description} -> Maybe Text
description) (\s :: LaunchTemplateInstanceNetworkInterfaceSpecification
s@LaunchTemplateInstanceNetworkInterfaceSpecification' {} Maybe Text
a -> LaunchTemplateInstanceNetworkInterfaceSpecification
s {$sel:description:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe Text
description = Maybe Text
a} :: LaunchTemplateInstanceNetworkInterfaceSpecification)

-- | The device index for the network interface attachment.
launchTemplateInstanceNetworkInterfaceSpecification_deviceIndex :: Lens.Lens' LaunchTemplateInstanceNetworkInterfaceSpecification (Prelude.Maybe Prelude.Int)
launchTemplateInstanceNetworkInterfaceSpecification_deviceIndex :: Lens'
  LaunchTemplateInstanceNetworkInterfaceSpecification (Maybe Int)
launchTemplateInstanceNetworkInterfaceSpecification_deviceIndex = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LaunchTemplateInstanceNetworkInterfaceSpecification' {Maybe Int
deviceIndex :: Maybe Int
$sel:deviceIndex:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Int
deviceIndex} -> Maybe Int
deviceIndex) (\s :: LaunchTemplateInstanceNetworkInterfaceSpecification
s@LaunchTemplateInstanceNetworkInterfaceSpecification' {} Maybe Int
a -> LaunchTemplateInstanceNetworkInterfaceSpecification
s {$sel:deviceIndex:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe Int
deviceIndex = Maybe Int
a} :: LaunchTemplateInstanceNetworkInterfaceSpecification)

-- | The IDs of one or more security groups.
launchTemplateInstanceNetworkInterfaceSpecification_groups :: Lens.Lens' LaunchTemplateInstanceNetworkInterfaceSpecification (Prelude.Maybe [Prelude.Text])
launchTemplateInstanceNetworkInterfaceSpecification_groups :: Lens'
  LaunchTemplateInstanceNetworkInterfaceSpecification (Maybe [Text])
launchTemplateInstanceNetworkInterfaceSpecification_groups = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LaunchTemplateInstanceNetworkInterfaceSpecification' {Maybe [Text]
groups :: Maybe [Text]
$sel:groups:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe [Text]
groups} -> Maybe [Text]
groups) (\s :: LaunchTemplateInstanceNetworkInterfaceSpecification
s@LaunchTemplateInstanceNetworkInterfaceSpecification' {} Maybe [Text]
a -> LaunchTemplateInstanceNetworkInterfaceSpecification
s {$sel:groups:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe [Text]
groups = Maybe [Text]
a} :: LaunchTemplateInstanceNetworkInterfaceSpecification) 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 type of network interface.
launchTemplateInstanceNetworkInterfaceSpecification_interfaceType :: Lens.Lens' LaunchTemplateInstanceNetworkInterfaceSpecification (Prelude.Maybe Prelude.Text)
launchTemplateInstanceNetworkInterfaceSpecification_interfaceType :: Lens'
  LaunchTemplateInstanceNetworkInterfaceSpecification (Maybe Text)
launchTemplateInstanceNetworkInterfaceSpecification_interfaceType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LaunchTemplateInstanceNetworkInterfaceSpecification' {Maybe Text
interfaceType :: Maybe Text
$sel:interfaceType:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Text
interfaceType} -> Maybe Text
interfaceType) (\s :: LaunchTemplateInstanceNetworkInterfaceSpecification
s@LaunchTemplateInstanceNetworkInterfaceSpecification' {} Maybe Text
a -> LaunchTemplateInstanceNetworkInterfaceSpecification
s {$sel:interfaceType:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe Text
interfaceType = Maybe Text
a} :: LaunchTemplateInstanceNetworkInterfaceSpecification)

-- | The number of IPv4 prefixes that Amazon Web Services automatically
-- assigned to the network interface.
launchTemplateInstanceNetworkInterfaceSpecification_ipv4PrefixCount :: Lens.Lens' LaunchTemplateInstanceNetworkInterfaceSpecification (Prelude.Maybe Prelude.Int)
launchTemplateInstanceNetworkInterfaceSpecification_ipv4PrefixCount :: Lens'
  LaunchTemplateInstanceNetworkInterfaceSpecification (Maybe Int)
launchTemplateInstanceNetworkInterfaceSpecification_ipv4PrefixCount = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LaunchTemplateInstanceNetworkInterfaceSpecification' {Maybe Int
ipv4PrefixCount :: Maybe Int
$sel:ipv4PrefixCount:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Int
ipv4PrefixCount} -> Maybe Int
ipv4PrefixCount) (\s :: LaunchTemplateInstanceNetworkInterfaceSpecification
s@LaunchTemplateInstanceNetworkInterfaceSpecification' {} Maybe Int
a -> LaunchTemplateInstanceNetworkInterfaceSpecification
s {$sel:ipv4PrefixCount:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe Int
ipv4PrefixCount = Maybe Int
a} :: LaunchTemplateInstanceNetworkInterfaceSpecification)

-- | One or more IPv4 prefixes assigned to the network interface.
launchTemplateInstanceNetworkInterfaceSpecification_ipv4Prefixes :: Lens.Lens' LaunchTemplateInstanceNetworkInterfaceSpecification (Prelude.Maybe [Ipv4PrefixSpecificationResponse])
launchTemplateInstanceNetworkInterfaceSpecification_ipv4Prefixes :: Lens'
  LaunchTemplateInstanceNetworkInterfaceSpecification
  (Maybe [Ipv4PrefixSpecificationResponse])
launchTemplateInstanceNetworkInterfaceSpecification_ipv4Prefixes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LaunchTemplateInstanceNetworkInterfaceSpecification' {Maybe [Ipv4PrefixSpecificationResponse]
ipv4Prefixes :: Maybe [Ipv4PrefixSpecificationResponse]
$sel:ipv4Prefixes:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification
-> Maybe [Ipv4PrefixSpecificationResponse]
ipv4Prefixes} -> Maybe [Ipv4PrefixSpecificationResponse]
ipv4Prefixes) (\s :: LaunchTemplateInstanceNetworkInterfaceSpecification
s@LaunchTemplateInstanceNetworkInterfaceSpecification' {} Maybe [Ipv4PrefixSpecificationResponse]
a -> LaunchTemplateInstanceNetworkInterfaceSpecification
s {$sel:ipv4Prefixes:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe [Ipv4PrefixSpecificationResponse]
ipv4Prefixes = Maybe [Ipv4PrefixSpecificationResponse]
a} :: LaunchTemplateInstanceNetworkInterfaceSpecification) 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 number of IPv6 addresses for the network interface.
launchTemplateInstanceNetworkInterfaceSpecification_ipv6AddressCount :: Lens.Lens' LaunchTemplateInstanceNetworkInterfaceSpecification (Prelude.Maybe Prelude.Int)
launchTemplateInstanceNetworkInterfaceSpecification_ipv6AddressCount :: Lens'
  LaunchTemplateInstanceNetworkInterfaceSpecification (Maybe Int)
launchTemplateInstanceNetworkInterfaceSpecification_ipv6AddressCount = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LaunchTemplateInstanceNetworkInterfaceSpecification' {Maybe Int
ipv6AddressCount :: Maybe Int
$sel:ipv6AddressCount:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Int
ipv6AddressCount} -> Maybe Int
ipv6AddressCount) (\s :: LaunchTemplateInstanceNetworkInterfaceSpecification
s@LaunchTemplateInstanceNetworkInterfaceSpecification' {} Maybe Int
a -> LaunchTemplateInstanceNetworkInterfaceSpecification
s {$sel:ipv6AddressCount:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe Int
ipv6AddressCount = Maybe Int
a} :: LaunchTemplateInstanceNetworkInterfaceSpecification)

-- | The IPv6 addresses for the network interface.
launchTemplateInstanceNetworkInterfaceSpecification_ipv6Addresses :: Lens.Lens' LaunchTemplateInstanceNetworkInterfaceSpecification (Prelude.Maybe [InstanceIpv6Address])
launchTemplateInstanceNetworkInterfaceSpecification_ipv6Addresses :: Lens'
  LaunchTemplateInstanceNetworkInterfaceSpecification
  (Maybe [InstanceIpv6Address])
launchTemplateInstanceNetworkInterfaceSpecification_ipv6Addresses = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LaunchTemplateInstanceNetworkInterfaceSpecification' {Maybe [InstanceIpv6Address]
ipv6Addresses :: Maybe [InstanceIpv6Address]
$sel:ipv6Addresses:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification
-> Maybe [InstanceIpv6Address]
ipv6Addresses} -> Maybe [InstanceIpv6Address]
ipv6Addresses) (\s :: LaunchTemplateInstanceNetworkInterfaceSpecification
s@LaunchTemplateInstanceNetworkInterfaceSpecification' {} Maybe [InstanceIpv6Address]
a -> LaunchTemplateInstanceNetworkInterfaceSpecification
s {$sel:ipv6Addresses:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe [InstanceIpv6Address]
ipv6Addresses = Maybe [InstanceIpv6Address]
a} :: LaunchTemplateInstanceNetworkInterfaceSpecification) 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 number of IPv6 prefixes that Amazon Web Services automatically
-- assigned to the network interface.
launchTemplateInstanceNetworkInterfaceSpecification_ipv6PrefixCount :: Lens.Lens' LaunchTemplateInstanceNetworkInterfaceSpecification (Prelude.Maybe Prelude.Int)
launchTemplateInstanceNetworkInterfaceSpecification_ipv6PrefixCount :: Lens'
  LaunchTemplateInstanceNetworkInterfaceSpecification (Maybe Int)
launchTemplateInstanceNetworkInterfaceSpecification_ipv6PrefixCount = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LaunchTemplateInstanceNetworkInterfaceSpecification' {Maybe Int
ipv6PrefixCount :: Maybe Int
$sel:ipv6PrefixCount:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Int
ipv6PrefixCount} -> Maybe Int
ipv6PrefixCount) (\s :: LaunchTemplateInstanceNetworkInterfaceSpecification
s@LaunchTemplateInstanceNetworkInterfaceSpecification' {} Maybe Int
a -> LaunchTemplateInstanceNetworkInterfaceSpecification
s {$sel:ipv6PrefixCount:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe Int
ipv6PrefixCount = Maybe Int
a} :: LaunchTemplateInstanceNetworkInterfaceSpecification)

-- | One or more IPv6 prefixes assigned to the network interface.
launchTemplateInstanceNetworkInterfaceSpecification_ipv6Prefixes :: Lens.Lens' LaunchTemplateInstanceNetworkInterfaceSpecification (Prelude.Maybe [Ipv6PrefixSpecificationResponse])
launchTemplateInstanceNetworkInterfaceSpecification_ipv6Prefixes :: Lens'
  LaunchTemplateInstanceNetworkInterfaceSpecification
  (Maybe [Ipv6PrefixSpecificationResponse])
launchTemplateInstanceNetworkInterfaceSpecification_ipv6Prefixes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LaunchTemplateInstanceNetworkInterfaceSpecification' {Maybe [Ipv6PrefixSpecificationResponse]
ipv6Prefixes :: Maybe [Ipv6PrefixSpecificationResponse]
$sel:ipv6Prefixes:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification
-> Maybe [Ipv6PrefixSpecificationResponse]
ipv6Prefixes} -> Maybe [Ipv6PrefixSpecificationResponse]
ipv6Prefixes) (\s :: LaunchTemplateInstanceNetworkInterfaceSpecification
s@LaunchTemplateInstanceNetworkInterfaceSpecification' {} Maybe [Ipv6PrefixSpecificationResponse]
a -> LaunchTemplateInstanceNetworkInterfaceSpecification
s {$sel:ipv6Prefixes:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe [Ipv6PrefixSpecificationResponse]
ipv6Prefixes = Maybe [Ipv6PrefixSpecificationResponse]
a} :: LaunchTemplateInstanceNetworkInterfaceSpecification) 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 index of the network card.
launchTemplateInstanceNetworkInterfaceSpecification_networkCardIndex :: Lens.Lens' LaunchTemplateInstanceNetworkInterfaceSpecification (Prelude.Maybe Prelude.Int)
launchTemplateInstanceNetworkInterfaceSpecification_networkCardIndex :: Lens'
  LaunchTemplateInstanceNetworkInterfaceSpecification (Maybe Int)
launchTemplateInstanceNetworkInterfaceSpecification_networkCardIndex = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LaunchTemplateInstanceNetworkInterfaceSpecification' {Maybe Int
networkCardIndex :: Maybe Int
$sel:networkCardIndex:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Int
networkCardIndex} -> Maybe Int
networkCardIndex) (\s :: LaunchTemplateInstanceNetworkInterfaceSpecification
s@LaunchTemplateInstanceNetworkInterfaceSpecification' {} Maybe Int
a -> LaunchTemplateInstanceNetworkInterfaceSpecification
s {$sel:networkCardIndex:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe Int
networkCardIndex = Maybe Int
a} :: LaunchTemplateInstanceNetworkInterfaceSpecification)

-- | The ID of the network interface.
launchTemplateInstanceNetworkInterfaceSpecification_networkInterfaceId :: Lens.Lens' LaunchTemplateInstanceNetworkInterfaceSpecification (Prelude.Maybe Prelude.Text)
launchTemplateInstanceNetworkInterfaceSpecification_networkInterfaceId :: Lens'
  LaunchTemplateInstanceNetworkInterfaceSpecification (Maybe Text)
launchTemplateInstanceNetworkInterfaceSpecification_networkInterfaceId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LaunchTemplateInstanceNetworkInterfaceSpecification' {Maybe Text
networkInterfaceId :: Maybe Text
$sel:networkInterfaceId:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Text
networkInterfaceId} -> Maybe Text
networkInterfaceId) (\s :: LaunchTemplateInstanceNetworkInterfaceSpecification
s@LaunchTemplateInstanceNetworkInterfaceSpecification' {} Maybe Text
a -> LaunchTemplateInstanceNetworkInterfaceSpecification
s {$sel:networkInterfaceId:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe Text
networkInterfaceId = Maybe Text
a} :: LaunchTemplateInstanceNetworkInterfaceSpecification)

-- | The primary private IPv4 address of the network interface.
launchTemplateInstanceNetworkInterfaceSpecification_privateIpAddress :: Lens.Lens' LaunchTemplateInstanceNetworkInterfaceSpecification (Prelude.Maybe Prelude.Text)
launchTemplateInstanceNetworkInterfaceSpecification_privateIpAddress :: Lens'
  LaunchTemplateInstanceNetworkInterfaceSpecification (Maybe Text)
launchTemplateInstanceNetworkInterfaceSpecification_privateIpAddress = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LaunchTemplateInstanceNetworkInterfaceSpecification' {Maybe Text
privateIpAddress :: Maybe Text
$sel:privateIpAddress:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Text
privateIpAddress} -> Maybe Text
privateIpAddress) (\s :: LaunchTemplateInstanceNetworkInterfaceSpecification
s@LaunchTemplateInstanceNetworkInterfaceSpecification' {} Maybe Text
a -> LaunchTemplateInstanceNetworkInterfaceSpecification
s {$sel:privateIpAddress:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe Text
privateIpAddress = Maybe Text
a} :: LaunchTemplateInstanceNetworkInterfaceSpecification)

-- | One or more private IPv4 addresses.
launchTemplateInstanceNetworkInterfaceSpecification_privateIpAddresses :: Lens.Lens' LaunchTemplateInstanceNetworkInterfaceSpecification (Prelude.Maybe [PrivateIpAddressSpecification])
launchTemplateInstanceNetworkInterfaceSpecification_privateIpAddresses :: Lens'
  LaunchTemplateInstanceNetworkInterfaceSpecification
  (Maybe [PrivateIpAddressSpecification])
launchTemplateInstanceNetworkInterfaceSpecification_privateIpAddresses = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LaunchTemplateInstanceNetworkInterfaceSpecification' {Maybe [PrivateIpAddressSpecification]
privateIpAddresses :: Maybe [PrivateIpAddressSpecification]
$sel:privateIpAddresses:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification
-> Maybe [PrivateIpAddressSpecification]
privateIpAddresses} -> Maybe [PrivateIpAddressSpecification]
privateIpAddresses) (\s :: LaunchTemplateInstanceNetworkInterfaceSpecification
s@LaunchTemplateInstanceNetworkInterfaceSpecification' {} Maybe [PrivateIpAddressSpecification]
a -> LaunchTemplateInstanceNetworkInterfaceSpecification
s {$sel:privateIpAddresses:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe [PrivateIpAddressSpecification]
privateIpAddresses = Maybe [PrivateIpAddressSpecification]
a} :: LaunchTemplateInstanceNetworkInterfaceSpecification) 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 number of secondary private IPv4 addresses for the network
-- interface.
launchTemplateInstanceNetworkInterfaceSpecification_secondaryPrivateIpAddressCount :: Lens.Lens' LaunchTemplateInstanceNetworkInterfaceSpecification (Prelude.Maybe Prelude.Int)
launchTemplateInstanceNetworkInterfaceSpecification_secondaryPrivateIpAddressCount :: Lens'
  LaunchTemplateInstanceNetworkInterfaceSpecification (Maybe Int)
launchTemplateInstanceNetworkInterfaceSpecification_secondaryPrivateIpAddressCount = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LaunchTemplateInstanceNetworkInterfaceSpecification' {Maybe Int
secondaryPrivateIpAddressCount :: Maybe Int
$sel:secondaryPrivateIpAddressCount:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Int
secondaryPrivateIpAddressCount} -> Maybe Int
secondaryPrivateIpAddressCount) (\s :: LaunchTemplateInstanceNetworkInterfaceSpecification
s@LaunchTemplateInstanceNetworkInterfaceSpecification' {} Maybe Int
a -> LaunchTemplateInstanceNetworkInterfaceSpecification
s {$sel:secondaryPrivateIpAddressCount:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe Int
secondaryPrivateIpAddressCount = Maybe Int
a} :: LaunchTemplateInstanceNetworkInterfaceSpecification)

-- | The ID of the subnet for the network interface.
launchTemplateInstanceNetworkInterfaceSpecification_subnetId :: Lens.Lens' LaunchTemplateInstanceNetworkInterfaceSpecification (Prelude.Maybe Prelude.Text)
launchTemplateInstanceNetworkInterfaceSpecification_subnetId :: Lens'
  LaunchTemplateInstanceNetworkInterfaceSpecification (Maybe Text)
launchTemplateInstanceNetworkInterfaceSpecification_subnetId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LaunchTemplateInstanceNetworkInterfaceSpecification' {Maybe Text
subnetId :: Maybe Text
$sel:subnetId:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Text
subnetId} -> Maybe Text
subnetId) (\s :: LaunchTemplateInstanceNetworkInterfaceSpecification
s@LaunchTemplateInstanceNetworkInterfaceSpecification' {} Maybe Text
a -> LaunchTemplateInstanceNetworkInterfaceSpecification
s {$sel:subnetId:LaunchTemplateInstanceNetworkInterfaceSpecification' :: Maybe Text
subnetId = Maybe Text
a} :: LaunchTemplateInstanceNetworkInterfaceSpecification)

instance
  Data.FromXML
    LaunchTemplateInstanceNetworkInterfaceSpecification
  where
  parseXML :: [Node]
-> Either
     String LaunchTemplateInstanceNetworkInterfaceSpecification
parseXML [Node]
x =
    Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Text
-> Maybe Int
-> Maybe [Text]
-> Maybe Text
-> Maybe Int
-> Maybe [Ipv4PrefixSpecificationResponse]
-> Maybe Int
-> Maybe [InstanceIpv6Address]
-> Maybe Int
-> Maybe [Ipv6PrefixSpecificationResponse]
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Maybe [PrivateIpAddressSpecification]
-> Maybe Int
-> Maybe Text
-> LaunchTemplateInstanceNetworkInterfaceSpecification
LaunchTemplateInstanceNetworkInterfaceSpecification'
      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
"associateCarrierIpAddress")
      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
"associatePublicIpAddress")
      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
"deleteOnTermination")
      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
"description")
      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
"deviceIndex")
      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
"groupSet"
                      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
"groupId")
                  )
      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
"interfaceType")
      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
"ipv4PrefixCount")
      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
"ipv4PrefixSet"
                      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
"item")
                  )
      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
"ipv6AddressCount")
      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
"ipv6AddressesSet"
                      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
"item")
                  )
      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
"ipv6PrefixCount")
      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
"ipv6PrefixSet"
                      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
"item")
                  )
      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
"networkCardIndex")
      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
"networkInterfaceId")
      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
"privateIpAddress")
      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
"privateIpAddressesSet"
                      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
"item")
                  )
      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
"secondaryPrivateIpAddressCount")
      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
"subnetId")

instance
  Prelude.Hashable
    LaunchTemplateInstanceNetworkInterfaceSpecification
  where
  hashWithSalt :: Int -> LaunchTemplateInstanceNetworkInterfaceSpecification -> Int
hashWithSalt
    Int
_salt
    LaunchTemplateInstanceNetworkInterfaceSpecification' {Maybe Bool
Maybe Int
Maybe [Text]
Maybe [InstanceIpv6Address]
Maybe [Ipv4PrefixSpecificationResponse]
Maybe [Ipv6PrefixSpecificationResponse]
Maybe [PrivateIpAddressSpecification]
Maybe Text
subnetId :: Maybe Text
secondaryPrivateIpAddressCount :: Maybe Int
privateIpAddresses :: Maybe [PrivateIpAddressSpecification]
privateIpAddress :: Maybe Text
networkInterfaceId :: Maybe Text
networkCardIndex :: Maybe Int
ipv6Prefixes :: Maybe [Ipv6PrefixSpecificationResponse]
ipv6PrefixCount :: Maybe Int
ipv6Addresses :: Maybe [InstanceIpv6Address]
ipv6AddressCount :: Maybe Int
ipv4Prefixes :: Maybe [Ipv4PrefixSpecificationResponse]
ipv4PrefixCount :: Maybe Int
interfaceType :: Maybe Text
groups :: Maybe [Text]
deviceIndex :: Maybe Int
description :: Maybe Text
deleteOnTermination :: Maybe Bool
associatePublicIpAddress :: Maybe Bool
associateCarrierIpAddress :: Maybe Bool
$sel:subnetId:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Text
$sel:secondaryPrivateIpAddressCount:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Int
$sel:privateIpAddresses:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification
-> Maybe [PrivateIpAddressSpecification]
$sel:privateIpAddress:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Text
$sel:networkInterfaceId:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Text
$sel:networkCardIndex:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Int
$sel:ipv6Prefixes:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification
-> Maybe [Ipv6PrefixSpecificationResponse]
$sel:ipv6PrefixCount:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Int
$sel:ipv6Addresses:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification
-> Maybe [InstanceIpv6Address]
$sel:ipv6AddressCount:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Int
$sel:ipv4Prefixes:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification
-> Maybe [Ipv4PrefixSpecificationResponse]
$sel:ipv4PrefixCount:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Int
$sel:interfaceType:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Text
$sel:groups:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe [Text]
$sel:deviceIndex:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Int
$sel:description:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Text
$sel:deleteOnTermination:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Bool
$sel:associatePublicIpAddress:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Bool
$sel:associateCarrierIpAddress:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Bool
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
associateCarrierIpAddress
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
associatePublicIpAddress
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
deleteOnTermination
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
deviceIndex
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
groups
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
interfaceType
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
ipv4PrefixCount
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Ipv4PrefixSpecificationResponse]
ipv4Prefixes
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
ipv6AddressCount
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [InstanceIpv6Address]
ipv6Addresses
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
ipv6PrefixCount
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Ipv6PrefixSpecificationResponse]
ipv6Prefixes
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
networkCardIndex
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
networkInterfaceId
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
privateIpAddress
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [PrivateIpAddressSpecification]
privateIpAddresses
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
secondaryPrivateIpAddressCount
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
subnetId

instance
  Prelude.NFData
    LaunchTemplateInstanceNetworkInterfaceSpecification
  where
  rnf :: LaunchTemplateInstanceNetworkInterfaceSpecification -> ()
rnf
    LaunchTemplateInstanceNetworkInterfaceSpecification' {Maybe Bool
Maybe Int
Maybe [Text]
Maybe [InstanceIpv6Address]
Maybe [Ipv4PrefixSpecificationResponse]
Maybe [Ipv6PrefixSpecificationResponse]
Maybe [PrivateIpAddressSpecification]
Maybe Text
subnetId :: Maybe Text
secondaryPrivateIpAddressCount :: Maybe Int
privateIpAddresses :: Maybe [PrivateIpAddressSpecification]
privateIpAddress :: Maybe Text
networkInterfaceId :: Maybe Text
networkCardIndex :: Maybe Int
ipv6Prefixes :: Maybe [Ipv6PrefixSpecificationResponse]
ipv6PrefixCount :: Maybe Int
ipv6Addresses :: Maybe [InstanceIpv6Address]
ipv6AddressCount :: Maybe Int
ipv4Prefixes :: Maybe [Ipv4PrefixSpecificationResponse]
ipv4PrefixCount :: Maybe Int
interfaceType :: Maybe Text
groups :: Maybe [Text]
deviceIndex :: Maybe Int
description :: Maybe Text
deleteOnTermination :: Maybe Bool
associatePublicIpAddress :: Maybe Bool
associateCarrierIpAddress :: Maybe Bool
$sel:subnetId:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Text
$sel:secondaryPrivateIpAddressCount:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Int
$sel:privateIpAddresses:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification
-> Maybe [PrivateIpAddressSpecification]
$sel:privateIpAddress:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Text
$sel:networkInterfaceId:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Text
$sel:networkCardIndex:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Int
$sel:ipv6Prefixes:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification
-> Maybe [Ipv6PrefixSpecificationResponse]
$sel:ipv6PrefixCount:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Int
$sel:ipv6Addresses:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification
-> Maybe [InstanceIpv6Address]
$sel:ipv6AddressCount:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Int
$sel:ipv4Prefixes:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification
-> Maybe [Ipv4PrefixSpecificationResponse]
$sel:ipv4PrefixCount:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Int
$sel:interfaceType:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Text
$sel:groups:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe [Text]
$sel:deviceIndex:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Int
$sel:description:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Text
$sel:deleteOnTermination:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Bool
$sel:associatePublicIpAddress:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Bool
$sel:associateCarrierIpAddress:LaunchTemplateInstanceNetworkInterfaceSpecification' :: LaunchTemplateInstanceNetworkInterfaceSpecification -> Maybe Bool
..} =
      forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
associateCarrierIpAddress
        seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
associatePublicIpAddress
        seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
deleteOnTermination
        seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
        seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
deviceIndex
        seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
groups
        seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
interfaceType
        seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
ipv4PrefixCount
        seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Ipv4PrefixSpecificationResponse]
ipv4Prefixes
        seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
ipv6AddressCount
        seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [InstanceIpv6Address]
ipv6Addresses
        seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
ipv6PrefixCount
        seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Ipv6PrefixSpecificationResponse]
ipv6Prefixes
        seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
networkCardIndex
        seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
networkInterfaceId
        seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
privateIpAddress
        seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [PrivateIpAddressSpecification]
privateIpAddresses
        seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
          Maybe Int
secondaryPrivateIpAddressCount
        seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
subnetId