{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# 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.DescribeNetworkInterfaceAttribute
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Describes a network interface attribute. You can specify only one
-- attribute at a time.
module Amazonka.EC2.DescribeNetworkInterfaceAttribute
  ( -- * Creating a Request
    DescribeNetworkInterfaceAttribute (..),
    newDescribeNetworkInterfaceAttribute,

    -- * Request Lenses
    describeNetworkInterfaceAttribute_attribute,
    describeNetworkInterfaceAttribute_dryRun,
    describeNetworkInterfaceAttribute_networkInterfaceId,

    -- * Destructuring the Response
    DescribeNetworkInterfaceAttributeResponse (..),
    newDescribeNetworkInterfaceAttributeResponse,

    -- * Response Lenses
    describeNetworkInterfaceAttributeResponse_attachment,
    describeNetworkInterfaceAttributeResponse_description,
    describeNetworkInterfaceAttributeResponse_groups,
    describeNetworkInterfaceAttributeResponse_networkInterfaceId,
    describeNetworkInterfaceAttributeResponse_sourceDestCheck,
    describeNetworkInterfaceAttributeResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.EC2.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | Contains the parameters for DescribeNetworkInterfaceAttribute.
--
-- /See:/ 'newDescribeNetworkInterfaceAttribute' smart constructor.
data DescribeNetworkInterfaceAttribute = DescribeNetworkInterfaceAttribute'
  { -- | The attribute of the network interface. This parameter is required.
    DescribeNetworkInterfaceAttribute
-> Maybe NetworkInterfaceAttribute
attribute :: Prelude.Maybe NetworkInterfaceAttribute,
    -- | Checks whether you have the required permissions for the action, without
    -- actually making the request, and provides an error response. If you have
    -- the required permissions, the error response is @DryRunOperation@.
    -- Otherwise, it is @UnauthorizedOperation@.
    DescribeNetworkInterfaceAttribute -> Maybe Bool
dryRun :: Prelude.Maybe Prelude.Bool,
    -- | The ID of the network interface.
    DescribeNetworkInterfaceAttribute -> Text
networkInterfaceId :: Prelude.Text
  }
  deriving (DescribeNetworkInterfaceAttribute
-> DescribeNetworkInterfaceAttribute -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeNetworkInterfaceAttribute
-> DescribeNetworkInterfaceAttribute -> Bool
$c/= :: DescribeNetworkInterfaceAttribute
-> DescribeNetworkInterfaceAttribute -> Bool
== :: DescribeNetworkInterfaceAttribute
-> DescribeNetworkInterfaceAttribute -> Bool
$c== :: DescribeNetworkInterfaceAttribute
-> DescribeNetworkInterfaceAttribute -> Bool
Prelude.Eq, ReadPrec [DescribeNetworkInterfaceAttribute]
ReadPrec DescribeNetworkInterfaceAttribute
Int -> ReadS DescribeNetworkInterfaceAttribute
ReadS [DescribeNetworkInterfaceAttribute]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeNetworkInterfaceAttribute]
$creadListPrec :: ReadPrec [DescribeNetworkInterfaceAttribute]
readPrec :: ReadPrec DescribeNetworkInterfaceAttribute
$creadPrec :: ReadPrec DescribeNetworkInterfaceAttribute
readList :: ReadS [DescribeNetworkInterfaceAttribute]
$creadList :: ReadS [DescribeNetworkInterfaceAttribute]
readsPrec :: Int -> ReadS DescribeNetworkInterfaceAttribute
$creadsPrec :: Int -> ReadS DescribeNetworkInterfaceAttribute
Prelude.Read, Int -> DescribeNetworkInterfaceAttribute -> ShowS
[DescribeNetworkInterfaceAttribute] -> ShowS
DescribeNetworkInterfaceAttribute -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeNetworkInterfaceAttribute] -> ShowS
$cshowList :: [DescribeNetworkInterfaceAttribute] -> ShowS
show :: DescribeNetworkInterfaceAttribute -> String
$cshow :: DescribeNetworkInterfaceAttribute -> String
showsPrec :: Int -> DescribeNetworkInterfaceAttribute -> ShowS
$cshowsPrec :: Int -> DescribeNetworkInterfaceAttribute -> ShowS
Prelude.Show, forall x.
Rep DescribeNetworkInterfaceAttribute x
-> DescribeNetworkInterfaceAttribute
forall x.
DescribeNetworkInterfaceAttribute
-> Rep DescribeNetworkInterfaceAttribute x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeNetworkInterfaceAttribute x
-> DescribeNetworkInterfaceAttribute
$cfrom :: forall x.
DescribeNetworkInterfaceAttribute
-> Rep DescribeNetworkInterfaceAttribute x
Prelude.Generic)

-- |
-- Create a value of 'DescribeNetworkInterfaceAttribute' 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:
--
-- 'attribute', 'describeNetworkInterfaceAttribute_attribute' - The attribute of the network interface. This parameter is required.
--
-- 'dryRun', 'describeNetworkInterfaceAttribute_dryRun' - Checks whether you have the required permissions for the action, without
-- actually making the request, and provides an error response. If you have
-- the required permissions, the error response is @DryRunOperation@.
-- Otherwise, it is @UnauthorizedOperation@.
--
-- 'networkInterfaceId', 'describeNetworkInterfaceAttribute_networkInterfaceId' - The ID of the network interface.
newDescribeNetworkInterfaceAttribute ::
  -- | 'networkInterfaceId'
  Prelude.Text ->
  DescribeNetworkInterfaceAttribute
newDescribeNetworkInterfaceAttribute :: Text -> DescribeNetworkInterfaceAttribute
newDescribeNetworkInterfaceAttribute
  Text
pNetworkInterfaceId_ =
    DescribeNetworkInterfaceAttribute'
      { $sel:attribute:DescribeNetworkInterfaceAttribute' :: Maybe NetworkInterfaceAttribute
attribute =
          forall a. Maybe a
Prelude.Nothing,
        $sel:dryRun:DescribeNetworkInterfaceAttribute' :: Maybe Bool
dryRun = forall a. Maybe a
Prelude.Nothing,
        $sel:networkInterfaceId:DescribeNetworkInterfaceAttribute' :: Text
networkInterfaceId =
          Text
pNetworkInterfaceId_
      }

-- | The attribute of the network interface. This parameter is required.
describeNetworkInterfaceAttribute_attribute :: Lens.Lens' DescribeNetworkInterfaceAttribute (Prelude.Maybe NetworkInterfaceAttribute)
describeNetworkInterfaceAttribute_attribute :: Lens'
  DescribeNetworkInterfaceAttribute (Maybe NetworkInterfaceAttribute)
describeNetworkInterfaceAttribute_attribute = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeNetworkInterfaceAttribute' {Maybe NetworkInterfaceAttribute
attribute :: Maybe NetworkInterfaceAttribute
$sel:attribute:DescribeNetworkInterfaceAttribute' :: DescribeNetworkInterfaceAttribute
-> Maybe NetworkInterfaceAttribute
attribute} -> Maybe NetworkInterfaceAttribute
attribute) (\s :: DescribeNetworkInterfaceAttribute
s@DescribeNetworkInterfaceAttribute' {} Maybe NetworkInterfaceAttribute
a -> DescribeNetworkInterfaceAttribute
s {$sel:attribute:DescribeNetworkInterfaceAttribute' :: Maybe NetworkInterfaceAttribute
attribute = Maybe NetworkInterfaceAttribute
a} :: DescribeNetworkInterfaceAttribute)

-- | Checks whether you have the required permissions for the action, without
-- actually making the request, and provides an error response. If you have
-- the required permissions, the error response is @DryRunOperation@.
-- Otherwise, it is @UnauthorizedOperation@.
describeNetworkInterfaceAttribute_dryRun :: Lens.Lens' DescribeNetworkInterfaceAttribute (Prelude.Maybe Prelude.Bool)
describeNetworkInterfaceAttribute_dryRun :: Lens' DescribeNetworkInterfaceAttribute (Maybe Bool)
describeNetworkInterfaceAttribute_dryRun = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeNetworkInterfaceAttribute' {Maybe Bool
dryRun :: Maybe Bool
$sel:dryRun:DescribeNetworkInterfaceAttribute' :: DescribeNetworkInterfaceAttribute -> Maybe Bool
dryRun} -> Maybe Bool
dryRun) (\s :: DescribeNetworkInterfaceAttribute
s@DescribeNetworkInterfaceAttribute' {} Maybe Bool
a -> DescribeNetworkInterfaceAttribute
s {$sel:dryRun:DescribeNetworkInterfaceAttribute' :: Maybe Bool
dryRun = Maybe Bool
a} :: DescribeNetworkInterfaceAttribute)

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

instance
  Core.AWSRequest
    DescribeNetworkInterfaceAttribute
  where
  type
    AWSResponse DescribeNetworkInterfaceAttribute =
      DescribeNetworkInterfaceAttributeResponse
  request :: (Service -> Service)
-> DescribeNetworkInterfaceAttribute
-> Request DescribeNetworkInterfaceAttribute
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.postQuery (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DescribeNetworkInterfaceAttribute
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse DescribeNetworkInterfaceAttribute)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXML
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe NetworkInterfaceAttachment
-> Maybe AttributeValue
-> Maybe [GroupIdentifier]
-> Maybe Text
-> Maybe AttributeBooleanValue
-> Int
-> DescribeNetworkInterfaceAttributeResponse
DescribeNetworkInterfaceAttributeResponse'
            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
"attachment")
            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
"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
"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
"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
"sourceDestCheck")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance
  Prelude.Hashable
    DescribeNetworkInterfaceAttribute
  where
  hashWithSalt :: Int -> DescribeNetworkInterfaceAttribute -> Int
hashWithSalt
    Int
_salt
    DescribeNetworkInterfaceAttribute' {Maybe Bool
Maybe NetworkInterfaceAttribute
Text
networkInterfaceId :: Text
dryRun :: Maybe Bool
attribute :: Maybe NetworkInterfaceAttribute
$sel:networkInterfaceId:DescribeNetworkInterfaceAttribute' :: DescribeNetworkInterfaceAttribute -> Text
$sel:dryRun:DescribeNetworkInterfaceAttribute' :: DescribeNetworkInterfaceAttribute -> Maybe Bool
$sel:attribute:DescribeNetworkInterfaceAttribute' :: DescribeNetworkInterfaceAttribute
-> Maybe NetworkInterfaceAttribute
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe NetworkInterfaceAttribute
attribute
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
dryRun
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
networkInterfaceId

instance
  Prelude.NFData
    DescribeNetworkInterfaceAttribute
  where
  rnf :: DescribeNetworkInterfaceAttribute -> ()
rnf DescribeNetworkInterfaceAttribute' {Maybe Bool
Maybe NetworkInterfaceAttribute
Text
networkInterfaceId :: Text
dryRun :: Maybe Bool
attribute :: Maybe NetworkInterfaceAttribute
$sel:networkInterfaceId:DescribeNetworkInterfaceAttribute' :: DescribeNetworkInterfaceAttribute -> Text
$sel:dryRun:DescribeNetworkInterfaceAttribute' :: DescribeNetworkInterfaceAttribute -> Maybe Bool
$sel:attribute:DescribeNetworkInterfaceAttribute' :: DescribeNetworkInterfaceAttribute
-> Maybe NetworkInterfaceAttribute
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe NetworkInterfaceAttribute
attribute
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
dryRun
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
networkInterfaceId

instance
  Data.ToHeaders
    DescribeNetworkInterfaceAttribute
  where
  toHeaders :: DescribeNetworkInterfaceAttribute -> ResponseHeaders
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

instance
  Data.ToPath
    DescribeNetworkInterfaceAttribute
  where
  toPath :: DescribeNetworkInterfaceAttribute -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

instance
  Data.ToQuery
    DescribeNetworkInterfaceAttribute
  where
  toQuery :: DescribeNetworkInterfaceAttribute -> QueryString
toQuery DescribeNetworkInterfaceAttribute' {Maybe Bool
Maybe NetworkInterfaceAttribute
Text
networkInterfaceId :: Text
dryRun :: Maybe Bool
attribute :: Maybe NetworkInterfaceAttribute
$sel:networkInterfaceId:DescribeNetworkInterfaceAttribute' :: DescribeNetworkInterfaceAttribute -> Text
$sel:dryRun:DescribeNetworkInterfaceAttribute' :: DescribeNetworkInterfaceAttribute -> Maybe Bool
$sel:attribute:DescribeNetworkInterfaceAttribute' :: DescribeNetworkInterfaceAttribute
-> Maybe NetworkInterfaceAttribute
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: ( ByteString
"DescribeNetworkInterfaceAttribute" ::
                      Prelude.ByteString
                  ),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2016-11-15" :: Prelude.ByteString),
        ByteString
"Attribute" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe NetworkInterfaceAttribute
attribute,
        ByteString
"DryRun" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
dryRun,
        ByteString
"NetworkInterfaceId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
networkInterfaceId
      ]

-- | Contains the output of DescribeNetworkInterfaceAttribute.
--
-- /See:/ 'newDescribeNetworkInterfaceAttributeResponse' smart constructor.
data DescribeNetworkInterfaceAttributeResponse = DescribeNetworkInterfaceAttributeResponse'
  { -- | The attachment (if any) of the network interface.
    DescribeNetworkInterfaceAttributeResponse
-> Maybe NetworkInterfaceAttachment
attachment :: Prelude.Maybe NetworkInterfaceAttachment,
    -- | The description of the network interface.
    DescribeNetworkInterfaceAttributeResponse -> Maybe AttributeValue
description :: Prelude.Maybe AttributeValue,
    -- | The security groups associated with the network interface.
    DescribeNetworkInterfaceAttributeResponse
-> Maybe [GroupIdentifier]
groups :: Prelude.Maybe [GroupIdentifier],
    -- | The ID of the network interface.
    DescribeNetworkInterfaceAttributeResponse -> Maybe Text
networkInterfaceId :: Prelude.Maybe Prelude.Text,
    -- | Indicates whether source\/destination checking is enabled.
    DescribeNetworkInterfaceAttributeResponse
-> Maybe AttributeBooleanValue
sourceDestCheck :: Prelude.Maybe AttributeBooleanValue,
    -- | The response's http status code.
    DescribeNetworkInterfaceAttributeResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeNetworkInterfaceAttributeResponse
-> DescribeNetworkInterfaceAttributeResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeNetworkInterfaceAttributeResponse
-> DescribeNetworkInterfaceAttributeResponse -> Bool
$c/= :: DescribeNetworkInterfaceAttributeResponse
-> DescribeNetworkInterfaceAttributeResponse -> Bool
== :: DescribeNetworkInterfaceAttributeResponse
-> DescribeNetworkInterfaceAttributeResponse -> Bool
$c== :: DescribeNetworkInterfaceAttributeResponse
-> DescribeNetworkInterfaceAttributeResponse -> Bool
Prelude.Eq, ReadPrec [DescribeNetworkInterfaceAttributeResponse]
ReadPrec DescribeNetworkInterfaceAttributeResponse
Int -> ReadS DescribeNetworkInterfaceAttributeResponse
ReadS [DescribeNetworkInterfaceAttributeResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeNetworkInterfaceAttributeResponse]
$creadListPrec :: ReadPrec [DescribeNetworkInterfaceAttributeResponse]
readPrec :: ReadPrec DescribeNetworkInterfaceAttributeResponse
$creadPrec :: ReadPrec DescribeNetworkInterfaceAttributeResponse
readList :: ReadS [DescribeNetworkInterfaceAttributeResponse]
$creadList :: ReadS [DescribeNetworkInterfaceAttributeResponse]
readsPrec :: Int -> ReadS DescribeNetworkInterfaceAttributeResponse
$creadsPrec :: Int -> ReadS DescribeNetworkInterfaceAttributeResponse
Prelude.Read, Int -> DescribeNetworkInterfaceAttributeResponse -> ShowS
[DescribeNetworkInterfaceAttributeResponse] -> ShowS
DescribeNetworkInterfaceAttributeResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeNetworkInterfaceAttributeResponse] -> ShowS
$cshowList :: [DescribeNetworkInterfaceAttributeResponse] -> ShowS
show :: DescribeNetworkInterfaceAttributeResponse -> String
$cshow :: DescribeNetworkInterfaceAttributeResponse -> String
showsPrec :: Int -> DescribeNetworkInterfaceAttributeResponse -> ShowS
$cshowsPrec :: Int -> DescribeNetworkInterfaceAttributeResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeNetworkInterfaceAttributeResponse x
-> DescribeNetworkInterfaceAttributeResponse
forall x.
DescribeNetworkInterfaceAttributeResponse
-> Rep DescribeNetworkInterfaceAttributeResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeNetworkInterfaceAttributeResponse x
-> DescribeNetworkInterfaceAttributeResponse
$cfrom :: forall x.
DescribeNetworkInterfaceAttributeResponse
-> Rep DescribeNetworkInterfaceAttributeResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeNetworkInterfaceAttributeResponse' 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:
--
-- 'attachment', 'describeNetworkInterfaceAttributeResponse_attachment' - The attachment (if any) of the network interface.
--
-- 'description', 'describeNetworkInterfaceAttributeResponse_description' - The description of the network interface.
--
-- 'groups', 'describeNetworkInterfaceAttributeResponse_groups' - The security groups associated with the network interface.
--
-- 'networkInterfaceId', 'describeNetworkInterfaceAttributeResponse_networkInterfaceId' - The ID of the network interface.
--
-- 'sourceDestCheck', 'describeNetworkInterfaceAttributeResponse_sourceDestCheck' - Indicates whether source\/destination checking is enabled.
--
-- 'httpStatus', 'describeNetworkInterfaceAttributeResponse_httpStatus' - The response's http status code.
newDescribeNetworkInterfaceAttributeResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeNetworkInterfaceAttributeResponse
newDescribeNetworkInterfaceAttributeResponse :: Int -> DescribeNetworkInterfaceAttributeResponse
newDescribeNetworkInterfaceAttributeResponse
  Int
pHttpStatus_ =
    DescribeNetworkInterfaceAttributeResponse'
      { $sel:attachment:DescribeNetworkInterfaceAttributeResponse' :: Maybe NetworkInterfaceAttachment
attachment =
          forall a. Maybe a
Prelude.Nothing,
        $sel:description:DescribeNetworkInterfaceAttributeResponse' :: Maybe AttributeValue
description = forall a. Maybe a
Prelude.Nothing,
        $sel:groups:DescribeNetworkInterfaceAttributeResponse' :: Maybe [GroupIdentifier]
groups = forall a. Maybe a
Prelude.Nothing,
        $sel:networkInterfaceId:DescribeNetworkInterfaceAttributeResponse' :: Maybe Text
networkInterfaceId =
          forall a. Maybe a
Prelude.Nothing,
        $sel:sourceDestCheck:DescribeNetworkInterfaceAttributeResponse' :: Maybe AttributeBooleanValue
sourceDestCheck =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:DescribeNetworkInterfaceAttributeResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | The attachment (if any) of the network interface.
describeNetworkInterfaceAttributeResponse_attachment :: Lens.Lens' DescribeNetworkInterfaceAttributeResponse (Prelude.Maybe NetworkInterfaceAttachment)
describeNetworkInterfaceAttributeResponse_attachment :: Lens'
  DescribeNetworkInterfaceAttributeResponse
  (Maybe NetworkInterfaceAttachment)
describeNetworkInterfaceAttributeResponse_attachment = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeNetworkInterfaceAttributeResponse' {Maybe NetworkInterfaceAttachment
attachment :: Maybe NetworkInterfaceAttachment
$sel:attachment:DescribeNetworkInterfaceAttributeResponse' :: DescribeNetworkInterfaceAttributeResponse
-> Maybe NetworkInterfaceAttachment
attachment} -> Maybe NetworkInterfaceAttachment
attachment) (\s :: DescribeNetworkInterfaceAttributeResponse
s@DescribeNetworkInterfaceAttributeResponse' {} Maybe NetworkInterfaceAttachment
a -> DescribeNetworkInterfaceAttributeResponse
s {$sel:attachment:DescribeNetworkInterfaceAttributeResponse' :: Maybe NetworkInterfaceAttachment
attachment = Maybe NetworkInterfaceAttachment
a} :: DescribeNetworkInterfaceAttributeResponse)

-- | The description of the network interface.
describeNetworkInterfaceAttributeResponse_description :: Lens.Lens' DescribeNetworkInterfaceAttributeResponse (Prelude.Maybe AttributeValue)
describeNetworkInterfaceAttributeResponse_description :: Lens'
  DescribeNetworkInterfaceAttributeResponse (Maybe AttributeValue)
describeNetworkInterfaceAttributeResponse_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeNetworkInterfaceAttributeResponse' {Maybe AttributeValue
description :: Maybe AttributeValue
$sel:description:DescribeNetworkInterfaceAttributeResponse' :: DescribeNetworkInterfaceAttributeResponse -> Maybe AttributeValue
description} -> Maybe AttributeValue
description) (\s :: DescribeNetworkInterfaceAttributeResponse
s@DescribeNetworkInterfaceAttributeResponse' {} Maybe AttributeValue
a -> DescribeNetworkInterfaceAttributeResponse
s {$sel:description:DescribeNetworkInterfaceAttributeResponse' :: Maybe AttributeValue
description = Maybe AttributeValue
a} :: DescribeNetworkInterfaceAttributeResponse)

-- | The security groups associated with the network interface.
describeNetworkInterfaceAttributeResponse_groups :: Lens.Lens' DescribeNetworkInterfaceAttributeResponse (Prelude.Maybe [GroupIdentifier])
describeNetworkInterfaceAttributeResponse_groups :: Lens'
  DescribeNetworkInterfaceAttributeResponse (Maybe [GroupIdentifier])
describeNetworkInterfaceAttributeResponse_groups = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeNetworkInterfaceAttributeResponse' {Maybe [GroupIdentifier]
groups :: Maybe [GroupIdentifier]
$sel:groups:DescribeNetworkInterfaceAttributeResponse' :: DescribeNetworkInterfaceAttributeResponse
-> Maybe [GroupIdentifier]
groups} -> Maybe [GroupIdentifier]
groups) (\s :: DescribeNetworkInterfaceAttributeResponse
s@DescribeNetworkInterfaceAttributeResponse' {} Maybe [GroupIdentifier]
a -> DescribeNetworkInterfaceAttributeResponse
s {$sel:groups:DescribeNetworkInterfaceAttributeResponse' :: Maybe [GroupIdentifier]
groups = Maybe [GroupIdentifier]
a} :: DescribeNetworkInterfaceAttributeResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

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

-- | Indicates whether source\/destination checking is enabled.
describeNetworkInterfaceAttributeResponse_sourceDestCheck :: Lens.Lens' DescribeNetworkInterfaceAttributeResponse (Prelude.Maybe AttributeBooleanValue)
describeNetworkInterfaceAttributeResponse_sourceDestCheck :: Lens'
  DescribeNetworkInterfaceAttributeResponse
  (Maybe AttributeBooleanValue)
describeNetworkInterfaceAttributeResponse_sourceDestCheck = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeNetworkInterfaceAttributeResponse' {Maybe AttributeBooleanValue
sourceDestCheck :: Maybe AttributeBooleanValue
$sel:sourceDestCheck:DescribeNetworkInterfaceAttributeResponse' :: DescribeNetworkInterfaceAttributeResponse
-> Maybe AttributeBooleanValue
sourceDestCheck} -> Maybe AttributeBooleanValue
sourceDestCheck) (\s :: DescribeNetworkInterfaceAttributeResponse
s@DescribeNetworkInterfaceAttributeResponse' {} Maybe AttributeBooleanValue
a -> DescribeNetworkInterfaceAttributeResponse
s {$sel:sourceDestCheck:DescribeNetworkInterfaceAttributeResponse' :: Maybe AttributeBooleanValue
sourceDestCheck = Maybe AttributeBooleanValue
a} :: DescribeNetworkInterfaceAttributeResponse)

-- | The response's http status code.
describeNetworkInterfaceAttributeResponse_httpStatus :: Lens.Lens' DescribeNetworkInterfaceAttributeResponse Prelude.Int
describeNetworkInterfaceAttributeResponse_httpStatus :: Lens' DescribeNetworkInterfaceAttributeResponse Int
describeNetworkInterfaceAttributeResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeNetworkInterfaceAttributeResponse' {Int
httpStatus :: Int
$sel:httpStatus:DescribeNetworkInterfaceAttributeResponse' :: DescribeNetworkInterfaceAttributeResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: DescribeNetworkInterfaceAttributeResponse
s@DescribeNetworkInterfaceAttributeResponse' {} Int
a -> DescribeNetworkInterfaceAttributeResponse
s {$sel:httpStatus:DescribeNetworkInterfaceAttributeResponse' :: Int
httpStatus = Int
a} :: DescribeNetworkInterfaceAttributeResponse)

instance
  Prelude.NFData
    DescribeNetworkInterfaceAttributeResponse
  where
  rnf :: DescribeNetworkInterfaceAttributeResponse -> ()
rnf DescribeNetworkInterfaceAttributeResponse' {Int
Maybe [GroupIdentifier]
Maybe Text
Maybe AttributeBooleanValue
Maybe AttributeValue
Maybe NetworkInterfaceAttachment
httpStatus :: Int
sourceDestCheck :: Maybe AttributeBooleanValue
networkInterfaceId :: Maybe Text
groups :: Maybe [GroupIdentifier]
description :: Maybe AttributeValue
attachment :: Maybe NetworkInterfaceAttachment
$sel:httpStatus:DescribeNetworkInterfaceAttributeResponse' :: DescribeNetworkInterfaceAttributeResponse -> Int
$sel:sourceDestCheck:DescribeNetworkInterfaceAttributeResponse' :: DescribeNetworkInterfaceAttributeResponse
-> Maybe AttributeBooleanValue
$sel:networkInterfaceId:DescribeNetworkInterfaceAttributeResponse' :: DescribeNetworkInterfaceAttributeResponse -> Maybe Text
$sel:groups:DescribeNetworkInterfaceAttributeResponse' :: DescribeNetworkInterfaceAttributeResponse
-> Maybe [GroupIdentifier]
$sel:description:DescribeNetworkInterfaceAttributeResponse' :: DescribeNetworkInterfaceAttributeResponse -> Maybe AttributeValue
$sel:attachment:DescribeNetworkInterfaceAttributeResponse' :: DescribeNetworkInterfaceAttributeResponse
-> Maybe NetworkInterfaceAttachment
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe NetworkInterfaceAttachment
attachment
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AttributeValue
description
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [GroupIdentifier]
groups
      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 AttributeBooleanValue
sourceDestCheck
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus