{-# 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.StartNetworkInsightsAnalysis
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Starts analyzing the specified path. If the path is reachable, the
-- operation returns the shortest feasible path.
module Amazonka.EC2.StartNetworkInsightsAnalysis
  ( -- * Creating a Request
    StartNetworkInsightsAnalysis (..),
    newStartNetworkInsightsAnalysis,

    -- * Request Lenses
    startNetworkInsightsAnalysis_additionalAccounts,
    startNetworkInsightsAnalysis_dryRun,
    startNetworkInsightsAnalysis_filterInArns,
    startNetworkInsightsAnalysis_tagSpecifications,
    startNetworkInsightsAnalysis_networkInsightsPathId,
    startNetworkInsightsAnalysis_clientToken,

    -- * Destructuring the Response
    StartNetworkInsightsAnalysisResponse (..),
    newStartNetworkInsightsAnalysisResponse,

    -- * Response Lenses
    startNetworkInsightsAnalysisResponse_networkInsightsAnalysis,
    startNetworkInsightsAnalysisResponse_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

-- | /See:/ 'newStartNetworkInsightsAnalysis' smart constructor.
data StartNetworkInsightsAnalysis = StartNetworkInsightsAnalysis'
  { -- | The member accounts that contain resources that the path can traverse.
    StartNetworkInsightsAnalysis -> Maybe [Text]
additionalAccounts :: Prelude.Maybe [Prelude.Text],
    -- | 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@.
    StartNetworkInsightsAnalysis -> Maybe Bool
dryRun :: Prelude.Maybe Prelude.Bool,
    -- | The Amazon Resource Names (ARN) of the resources that the path must
    -- traverse.
    StartNetworkInsightsAnalysis -> Maybe [Text]
filterInArns :: Prelude.Maybe [Prelude.Text],
    -- | The tags to apply.
    StartNetworkInsightsAnalysis -> Maybe [TagSpecification]
tagSpecifications :: Prelude.Maybe [TagSpecification],
    -- | The ID of the path.
    StartNetworkInsightsAnalysis -> Text
networkInsightsPathId :: Prelude.Text,
    -- | Unique, case-sensitive identifier that you provide to ensure the
    -- idempotency of the request. For more information, see
    -- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html How to ensure idempotency>.
    StartNetworkInsightsAnalysis -> Text
clientToken :: Prelude.Text
  }
  deriving (StartNetworkInsightsAnalysis
-> StartNetworkInsightsAnalysis -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: StartNetworkInsightsAnalysis
-> StartNetworkInsightsAnalysis -> Bool
$c/= :: StartNetworkInsightsAnalysis
-> StartNetworkInsightsAnalysis -> Bool
== :: StartNetworkInsightsAnalysis
-> StartNetworkInsightsAnalysis -> Bool
$c== :: StartNetworkInsightsAnalysis
-> StartNetworkInsightsAnalysis -> Bool
Prelude.Eq, ReadPrec [StartNetworkInsightsAnalysis]
ReadPrec StartNetworkInsightsAnalysis
Int -> ReadS StartNetworkInsightsAnalysis
ReadS [StartNetworkInsightsAnalysis]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [StartNetworkInsightsAnalysis]
$creadListPrec :: ReadPrec [StartNetworkInsightsAnalysis]
readPrec :: ReadPrec StartNetworkInsightsAnalysis
$creadPrec :: ReadPrec StartNetworkInsightsAnalysis
readList :: ReadS [StartNetworkInsightsAnalysis]
$creadList :: ReadS [StartNetworkInsightsAnalysis]
readsPrec :: Int -> ReadS StartNetworkInsightsAnalysis
$creadsPrec :: Int -> ReadS StartNetworkInsightsAnalysis
Prelude.Read, Int -> StartNetworkInsightsAnalysis -> ShowS
[StartNetworkInsightsAnalysis] -> ShowS
StartNetworkInsightsAnalysis -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [StartNetworkInsightsAnalysis] -> ShowS
$cshowList :: [StartNetworkInsightsAnalysis] -> ShowS
show :: StartNetworkInsightsAnalysis -> String
$cshow :: StartNetworkInsightsAnalysis -> String
showsPrec :: Int -> StartNetworkInsightsAnalysis -> ShowS
$cshowsPrec :: Int -> StartNetworkInsightsAnalysis -> ShowS
Prelude.Show, forall x.
Rep StartNetworkInsightsAnalysis x -> StartNetworkInsightsAnalysis
forall x.
StartNetworkInsightsAnalysis -> Rep StartNetworkInsightsAnalysis x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep StartNetworkInsightsAnalysis x -> StartNetworkInsightsAnalysis
$cfrom :: forall x.
StartNetworkInsightsAnalysis -> Rep StartNetworkInsightsAnalysis x
Prelude.Generic)

-- |
-- Create a value of 'StartNetworkInsightsAnalysis' 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:
--
-- 'additionalAccounts', 'startNetworkInsightsAnalysis_additionalAccounts' - The member accounts that contain resources that the path can traverse.
--
-- 'dryRun', 'startNetworkInsightsAnalysis_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@.
--
-- 'filterInArns', 'startNetworkInsightsAnalysis_filterInArns' - The Amazon Resource Names (ARN) of the resources that the path must
-- traverse.
--
-- 'tagSpecifications', 'startNetworkInsightsAnalysis_tagSpecifications' - The tags to apply.
--
-- 'networkInsightsPathId', 'startNetworkInsightsAnalysis_networkInsightsPathId' - The ID of the path.
--
-- 'clientToken', 'startNetworkInsightsAnalysis_clientToken' - Unique, case-sensitive identifier that you provide to ensure the
-- idempotency of the request. For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html How to ensure idempotency>.
newStartNetworkInsightsAnalysis ::
  -- | 'networkInsightsPathId'
  Prelude.Text ->
  -- | 'clientToken'
  Prelude.Text ->
  StartNetworkInsightsAnalysis
newStartNetworkInsightsAnalysis :: Text -> Text -> StartNetworkInsightsAnalysis
newStartNetworkInsightsAnalysis
  Text
pNetworkInsightsPathId_
  Text
pClientToken_ =
    StartNetworkInsightsAnalysis'
      { $sel:additionalAccounts:StartNetworkInsightsAnalysis' :: Maybe [Text]
additionalAccounts =
          forall a. Maybe a
Prelude.Nothing,
        $sel:dryRun:StartNetworkInsightsAnalysis' :: Maybe Bool
dryRun = forall a. Maybe a
Prelude.Nothing,
        $sel:filterInArns:StartNetworkInsightsAnalysis' :: Maybe [Text]
filterInArns = forall a. Maybe a
Prelude.Nothing,
        $sel:tagSpecifications:StartNetworkInsightsAnalysis' :: Maybe [TagSpecification]
tagSpecifications = forall a. Maybe a
Prelude.Nothing,
        $sel:networkInsightsPathId:StartNetworkInsightsAnalysis' :: Text
networkInsightsPathId =
          Text
pNetworkInsightsPathId_,
        $sel:clientToken:StartNetworkInsightsAnalysis' :: Text
clientToken = Text
pClientToken_
      }

-- | The member accounts that contain resources that the path can traverse.
startNetworkInsightsAnalysis_additionalAccounts :: Lens.Lens' StartNetworkInsightsAnalysis (Prelude.Maybe [Prelude.Text])
startNetworkInsightsAnalysis_additionalAccounts :: Lens' StartNetworkInsightsAnalysis (Maybe [Text])
startNetworkInsightsAnalysis_additionalAccounts = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartNetworkInsightsAnalysis' {Maybe [Text]
additionalAccounts :: Maybe [Text]
$sel:additionalAccounts:StartNetworkInsightsAnalysis' :: StartNetworkInsightsAnalysis -> Maybe [Text]
additionalAccounts} -> Maybe [Text]
additionalAccounts) (\s :: StartNetworkInsightsAnalysis
s@StartNetworkInsightsAnalysis' {} Maybe [Text]
a -> StartNetworkInsightsAnalysis
s {$sel:additionalAccounts:StartNetworkInsightsAnalysis' :: Maybe [Text]
additionalAccounts = Maybe [Text]
a} :: StartNetworkInsightsAnalysis) 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

-- | 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@.
startNetworkInsightsAnalysis_dryRun :: Lens.Lens' StartNetworkInsightsAnalysis (Prelude.Maybe Prelude.Bool)
startNetworkInsightsAnalysis_dryRun :: Lens' StartNetworkInsightsAnalysis (Maybe Bool)
startNetworkInsightsAnalysis_dryRun = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartNetworkInsightsAnalysis' {Maybe Bool
dryRun :: Maybe Bool
$sel:dryRun:StartNetworkInsightsAnalysis' :: StartNetworkInsightsAnalysis -> Maybe Bool
dryRun} -> Maybe Bool
dryRun) (\s :: StartNetworkInsightsAnalysis
s@StartNetworkInsightsAnalysis' {} Maybe Bool
a -> StartNetworkInsightsAnalysis
s {$sel:dryRun:StartNetworkInsightsAnalysis' :: Maybe Bool
dryRun = Maybe Bool
a} :: StartNetworkInsightsAnalysis)

-- | The Amazon Resource Names (ARN) of the resources that the path must
-- traverse.
startNetworkInsightsAnalysis_filterInArns :: Lens.Lens' StartNetworkInsightsAnalysis (Prelude.Maybe [Prelude.Text])
startNetworkInsightsAnalysis_filterInArns :: Lens' StartNetworkInsightsAnalysis (Maybe [Text])
startNetworkInsightsAnalysis_filterInArns = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartNetworkInsightsAnalysis' {Maybe [Text]
filterInArns :: Maybe [Text]
$sel:filterInArns:StartNetworkInsightsAnalysis' :: StartNetworkInsightsAnalysis -> Maybe [Text]
filterInArns} -> Maybe [Text]
filterInArns) (\s :: StartNetworkInsightsAnalysis
s@StartNetworkInsightsAnalysis' {} Maybe [Text]
a -> StartNetworkInsightsAnalysis
s {$sel:filterInArns:StartNetworkInsightsAnalysis' :: Maybe [Text]
filterInArns = Maybe [Text]
a} :: StartNetworkInsightsAnalysis) 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 tags to apply.
startNetworkInsightsAnalysis_tagSpecifications :: Lens.Lens' StartNetworkInsightsAnalysis (Prelude.Maybe [TagSpecification])
startNetworkInsightsAnalysis_tagSpecifications :: Lens' StartNetworkInsightsAnalysis (Maybe [TagSpecification])
startNetworkInsightsAnalysis_tagSpecifications = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartNetworkInsightsAnalysis' {Maybe [TagSpecification]
tagSpecifications :: Maybe [TagSpecification]
$sel:tagSpecifications:StartNetworkInsightsAnalysis' :: StartNetworkInsightsAnalysis -> Maybe [TagSpecification]
tagSpecifications} -> Maybe [TagSpecification]
tagSpecifications) (\s :: StartNetworkInsightsAnalysis
s@StartNetworkInsightsAnalysis' {} Maybe [TagSpecification]
a -> StartNetworkInsightsAnalysis
s {$sel:tagSpecifications:StartNetworkInsightsAnalysis' :: Maybe [TagSpecification]
tagSpecifications = Maybe [TagSpecification]
a} :: StartNetworkInsightsAnalysis) 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 path.
startNetworkInsightsAnalysis_networkInsightsPathId :: Lens.Lens' StartNetworkInsightsAnalysis Prelude.Text
startNetworkInsightsAnalysis_networkInsightsPathId :: Lens' StartNetworkInsightsAnalysis Text
startNetworkInsightsAnalysis_networkInsightsPathId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartNetworkInsightsAnalysis' {Text
networkInsightsPathId :: Text
$sel:networkInsightsPathId:StartNetworkInsightsAnalysis' :: StartNetworkInsightsAnalysis -> Text
networkInsightsPathId} -> Text
networkInsightsPathId) (\s :: StartNetworkInsightsAnalysis
s@StartNetworkInsightsAnalysis' {} Text
a -> StartNetworkInsightsAnalysis
s {$sel:networkInsightsPathId:StartNetworkInsightsAnalysis' :: Text
networkInsightsPathId = Text
a} :: StartNetworkInsightsAnalysis)

-- | Unique, case-sensitive identifier that you provide to ensure the
-- idempotency of the request. For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html How to ensure idempotency>.
startNetworkInsightsAnalysis_clientToken :: Lens.Lens' StartNetworkInsightsAnalysis Prelude.Text
startNetworkInsightsAnalysis_clientToken :: Lens' StartNetworkInsightsAnalysis Text
startNetworkInsightsAnalysis_clientToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartNetworkInsightsAnalysis' {Text
clientToken :: Text
$sel:clientToken:StartNetworkInsightsAnalysis' :: StartNetworkInsightsAnalysis -> Text
clientToken} -> Text
clientToken) (\s :: StartNetworkInsightsAnalysis
s@StartNetworkInsightsAnalysis' {} Text
a -> StartNetworkInsightsAnalysis
s {$sel:clientToken:StartNetworkInsightsAnalysis' :: Text
clientToken = Text
a} :: StartNetworkInsightsAnalysis)

instance Core.AWSRequest StartNetworkInsightsAnalysis where
  type
    AWSResponse StartNetworkInsightsAnalysis =
      StartNetworkInsightsAnalysisResponse
  request :: (Service -> Service)
-> StartNetworkInsightsAnalysis
-> Request StartNetworkInsightsAnalysis
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 StartNetworkInsightsAnalysis
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse StartNetworkInsightsAnalysis)))
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 NetworkInsightsAnalysis
-> Int -> StartNetworkInsightsAnalysisResponse
StartNetworkInsightsAnalysisResponse'
            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
"networkInsightsAnalysis")
            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
    StartNetworkInsightsAnalysis
  where
  hashWithSalt :: Int -> StartNetworkInsightsAnalysis -> Int
hashWithSalt Int
_salt StartNetworkInsightsAnalysis' {Maybe Bool
Maybe [Text]
Maybe [TagSpecification]
Text
clientToken :: Text
networkInsightsPathId :: Text
tagSpecifications :: Maybe [TagSpecification]
filterInArns :: Maybe [Text]
dryRun :: Maybe Bool
additionalAccounts :: Maybe [Text]
$sel:clientToken:StartNetworkInsightsAnalysis' :: StartNetworkInsightsAnalysis -> Text
$sel:networkInsightsPathId:StartNetworkInsightsAnalysis' :: StartNetworkInsightsAnalysis -> Text
$sel:tagSpecifications:StartNetworkInsightsAnalysis' :: StartNetworkInsightsAnalysis -> Maybe [TagSpecification]
$sel:filterInArns:StartNetworkInsightsAnalysis' :: StartNetworkInsightsAnalysis -> Maybe [Text]
$sel:dryRun:StartNetworkInsightsAnalysis' :: StartNetworkInsightsAnalysis -> Maybe Bool
$sel:additionalAccounts:StartNetworkInsightsAnalysis' :: StartNetworkInsightsAnalysis -> Maybe [Text]
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
additionalAccounts
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
dryRun
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
filterInArns
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [TagSpecification]
tagSpecifications
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
networkInsightsPathId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
clientToken

instance Prelude.NFData StartNetworkInsightsAnalysis where
  rnf :: StartNetworkInsightsAnalysis -> ()
rnf StartNetworkInsightsAnalysis' {Maybe Bool
Maybe [Text]
Maybe [TagSpecification]
Text
clientToken :: Text
networkInsightsPathId :: Text
tagSpecifications :: Maybe [TagSpecification]
filterInArns :: Maybe [Text]
dryRun :: Maybe Bool
additionalAccounts :: Maybe [Text]
$sel:clientToken:StartNetworkInsightsAnalysis' :: StartNetworkInsightsAnalysis -> Text
$sel:networkInsightsPathId:StartNetworkInsightsAnalysis' :: StartNetworkInsightsAnalysis -> Text
$sel:tagSpecifications:StartNetworkInsightsAnalysis' :: StartNetworkInsightsAnalysis -> Maybe [TagSpecification]
$sel:filterInArns:StartNetworkInsightsAnalysis' :: StartNetworkInsightsAnalysis -> Maybe [Text]
$sel:dryRun:StartNetworkInsightsAnalysis' :: StartNetworkInsightsAnalysis -> Maybe Bool
$sel:additionalAccounts:StartNetworkInsightsAnalysis' :: StartNetworkInsightsAnalysis -> Maybe [Text]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
additionalAccounts
      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 Maybe [Text]
filterInArns
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [TagSpecification]
tagSpecifications
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
networkInsightsPathId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
clientToken

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

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

instance Data.ToQuery StartNetworkInsightsAnalysis where
  toQuery :: StartNetworkInsightsAnalysis -> QueryString
toQuery StartNetworkInsightsAnalysis' {Maybe Bool
Maybe [Text]
Maybe [TagSpecification]
Text
clientToken :: Text
networkInsightsPathId :: Text
tagSpecifications :: Maybe [TagSpecification]
filterInArns :: Maybe [Text]
dryRun :: Maybe Bool
additionalAccounts :: Maybe [Text]
$sel:clientToken:StartNetworkInsightsAnalysis' :: StartNetworkInsightsAnalysis -> Text
$sel:networkInsightsPathId:StartNetworkInsightsAnalysis' :: StartNetworkInsightsAnalysis -> Text
$sel:tagSpecifications:StartNetworkInsightsAnalysis' :: StartNetworkInsightsAnalysis -> Maybe [TagSpecification]
$sel:filterInArns:StartNetworkInsightsAnalysis' :: StartNetworkInsightsAnalysis -> Maybe [Text]
$sel:dryRun:StartNetworkInsightsAnalysis' :: StartNetworkInsightsAnalysis -> Maybe Bool
$sel:additionalAccounts:StartNetworkInsightsAnalysis' :: StartNetworkInsightsAnalysis -> Maybe [Text]
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: ( ByteString
"StartNetworkInsightsAnalysis" ::
                      Prelude.ByteString
                  ),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2016-11-15" :: Prelude.ByteString),
        forall a. ToQuery a => a -> QueryString
Data.toQuery
          ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"AdditionalAccount"
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
additionalAccounts
          ),
        ByteString
"DryRun" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
dryRun,
        forall a. ToQuery a => a -> QueryString
Data.toQuery
          ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"FilterInArn"
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
filterInArns
          ),
        forall a. ToQuery a => a -> QueryString
Data.toQuery
          ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"TagSpecification"
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [TagSpecification]
tagSpecifications
          ),
        ByteString
"NetworkInsightsPathId"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
networkInsightsPathId,
        ByteString
"ClientToken" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
clientToken
      ]

-- | /See:/ 'newStartNetworkInsightsAnalysisResponse' smart constructor.
data StartNetworkInsightsAnalysisResponse = StartNetworkInsightsAnalysisResponse'
  { -- | Information about the network insights analysis.
    StartNetworkInsightsAnalysisResponse
-> Maybe NetworkInsightsAnalysis
networkInsightsAnalysis :: Prelude.Maybe NetworkInsightsAnalysis,
    -- | The response's http status code.
    StartNetworkInsightsAnalysisResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (StartNetworkInsightsAnalysisResponse
-> StartNetworkInsightsAnalysisResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: StartNetworkInsightsAnalysisResponse
-> StartNetworkInsightsAnalysisResponse -> Bool
$c/= :: StartNetworkInsightsAnalysisResponse
-> StartNetworkInsightsAnalysisResponse -> Bool
== :: StartNetworkInsightsAnalysisResponse
-> StartNetworkInsightsAnalysisResponse -> Bool
$c== :: StartNetworkInsightsAnalysisResponse
-> StartNetworkInsightsAnalysisResponse -> Bool
Prelude.Eq, ReadPrec [StartNetworkInsightsAnalysisResponse]
ReadPrec StartNetworkInsightsAnalysisResponse
Int -> ReadS StartNetworkInsightsAnalysisResponse
ReadS [StartNetworkInsightsAnalysisResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [StartNetworkInsightsAnalysisResponse]
$creadListPrec :: ReadPrec [StartNetworkInsightsAnalysisResponse]
readPrec :: ReadPrec StartNetworkInsightsAnalysisResponse
$creadPrec :: ReadPrec StartNetworkInsightsAnalysisResponse
readList :: ReadS [StartNetworkInsightsAnalysisResponse]
$creadList :: ReadS [StartNetworkInsightsAnalysisResponse]
readsPrec :: Int -> ReadS StartNetworkInsightsAnalysisResponse
$creadsPrec :: Int -> ReadS StartNetworkInsightsAnalysisResponse
Prelude.Read, Int -> StartNetworkInsightsAnalysisResponse -> ShowS
[StartNetworkInsightsAnalysisResponse] -> ShowS
StartNetworkInsightsAnalysisResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [StartNetworkInsightsAnalysisResponse] -> ShowS
$cshowList :: [StartNetworkInsightsAnalysisResponse] -> ShowS
show :: StartNetworkInsightsAnalysisResponse -> String
$cshow :: StartNetworkInsightsAnalysisResponse -> String
showsPrec :: Int -> StartNetworkInsightsAnalysisResponse -> ShowS
$cshowsPrec :: Int -> StartNetworkInsightsAnalysisResponse -> ShowS
Prelude.Show, forall x.
Rep StartNetworkInsightsAnalysisResponse x
-> StartNetworkInsightsAnalysisResponse
forall x.
StartNetworkInsightsAnalysisResponse
-> Rep StartNetworkInsightsAnalysisResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep StartNetworkInsightsAnalysisResponse x
-> StartNetworkInsightsAnalysisResponse
$cfrom :: forall x.
StartNetworkInsightsAnalysisResponse
-> Rep StartNetworkInsightsAnalysisResponse x
Prelude.Generic)

-- |
-- Create a value of 'StartNetworkInsightsAnalysisResponse' 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:
--
-- 'networkInsightsAnalysis', 'startNetworkInsightsAnalysisResponse_networkInsightsAnalysis' - Information about the network insights analysis.
--
-- 'httpStatus', 'startNetworkInsightsAnalysisResponse_httpStatus' - The response's http status code.
newStartNetworkInsightsAnalysisResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  StartNetworkInsightsAnalysisResponse
newStartNetworkInsightsAnalysisResponse :: Int -> StartNetworkInsightsAnalysisResponse
newStartNetworkInsightsAnalysisResponse Int
pHttpStatus_ =
  StartNetworkInsightsAnalysisResponse'
    { $sel:networkInsightsAnalysis:StartNetworkInsightsAnalysisResponse' :: Maybe NetworkInsightsAnalysis
networkInsightsAnalysis =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:StartNetworkInsightsAnalysisResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Information about the network insights analysis.
startNetworkInsightsAnalysisResponse_networkInsightsAnalysis :: Lens.Lens' StartNetworkInsightsAnalysisResponse (Prelude.Maybe NetworkInsightsAnalysis)
startNetworkInsightsAnalysisResponse_networkInsightsAnalysis :: Lens'
  StartNetworkInsightsAnalysisResponse
  (Maybe NetworkInsightsAnalysis)
startNetworkInsightsAnalysisResponse_networkInsightsAnalysis = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartNetworkInsightsAnalysisResponse' {Maybe NetworkInsightsAnalysis
networkInsightsAnalysis :: Maybe NetworkInsightsAnalysis
$sel:networkInsightsAnalysis:StartNetworkInsightsAnalysisResponse' :: StartNetworkInsightsAnalysisResponse
-> Maybe NetworkInsightsAnalysis
networkInsightsAnalysis} -> Maybe NetworkInsightsAnalysis
networkInsightsAnalysis) (\s :: StartNetworkInsightsAnalysisResponse
s@StartNetworkInsightsAnalysisResponse' {} Maybe NetworkInsightsAnalysis
a -> StartNetworkInsightsAnalysisResponse
s {$sel:networkInsightsAnalysis:StartNetworkInsightsAnalysisResponse' :: Maybe NetworkInsightsAnalysis
networkInsightsAnalysis = Maybe NetworkInsightsAnalysis
a} :: StartNetworkInsightsAnalysisResponse)

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

instance
  Prelude.NFData
    StartNetworkInsightsAnalysisResponse
  where
  rnf :: StartNetworkInsightsAnalysisResponse -> ()
rnf StartNetworkInsightsAnalysisResponse' {Int
Maybe NetworkInsightsAnalysis
httpStatus :: Int
networkInsightsAnalysis :: Maybe NetworkInsightsAnalysis
$sel:httpStatus:StartNetworkInsightsAnalysisResponse' :: StartNetworkInsightsAnalysisResponse -> Int
$sel:networkInsightsAnalysis:StartNetworkInsightsAnalysisResponse' :: StartNetworkInsightsAnalysisResponse
-> Maybe NetworkInsightsAnalysis
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe NetworkInsightsAnalysis
networkInsightsAnalysis
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus