{-# 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.CloudFormation.DescribeChangeSet
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Returns the inputs for the change set and a list of changes that
-- CloudFormation will make if you execute the change set. For more
-- information, see
-- <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-changesets.html Updating Stacks Using Change Sets>
-- in the CloudFormation User Guide.
--
-- This operation returns paginated results.
module Amazonka.CloudFormation.DescribeChangeSet
  ( -- * Creating a Request
    DescribeChangeSet (..),
    newDescribeChangeSet,

    -- * Request Lenses
    describeChangeSet_nextToken,
    describeChangeSet_stackName,
    describeChangeSet_changeSetName,

    -- * Destructuring the Response
    DescribeChangeSetResponse (..),
    newDescribeChangeSetResponse,

    -- * Response Lenses
    describeChangeSetResponse_creationTime,
    describeChangeSetResponse_parentChangeSetId,
    describeChangeSetResponse_changes,
    describeChangeSetResponse_notificationARNs,
    describeChangeSetResponse_changeSetName,
    describeChangeSetResponse_executionStatus,
    describeChangeSetResponse_changeSetId,
    describeChangeSetResponse_includeNestedStacks,
    describeChangeSetResponse_nextToken,
    describeChangeSetResponse_rootChangeSetId,
    describeChangeSetResponse_parameters,
    describeChangeSetResponse_statusReason,
    describeChangeSetResponse_stackId,
    describeChangeSetResponse_description,
    describeChangeSetResponse_capabilities,
    describeChangeSetResponse_rollbackConfiguration,
    describeChangeSetResponse_tags,
    describeChangeSetResponse_stackName,
    describeChangeSetResponse_httpStatus,
    describeChangeSetResponse_status,
  )
where

import Amazonka.CloudFormation.Types
import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | The input for the DescribeChangeSet action.
--
-- /See:/ 'newDescribeChangeSet' smart constructor.
data DescribeChangeSet = DescribeChangeSet'
  { -- | A string (provided by the DescribeChangeSet response output) that
    -- identifies the next page of information that you want to retrieve.
    DescribeChangeSet -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | If you specified the name of a change set, specify the stack name or ID
    -- (ARN) of the change set you want to describe.
    DescribeChangeSet -> Maybe Text
stackName :: Prelude.Maybe Prelude.Text,
    -- | The name or Amazon Resource Name (ARN) of the change set that you want
    -- to describe.
    DescribeChangeSet -> Text
changeSetName :: Prelude.Text
  }
  deriving (DescribeChangeSet -> DescribeChangeSet -> Bool
(DescribeChangeSet -> DescribeChangeSet -> Bool)
-> (DescribeChangeSet -> DescribeChangeSet -> Bool)
-> Eq DescribeChangeSet
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeChangeSet -> DescribeChangeSet -> Bool
$c/= :: DescribeChangeSet -> DescribeChangeSet -> Bool
== :: DescribeChangeSet -> DescribeChangeSet -> Bool
$c== :: DescribeChangeSet -> DescribeChangeSet -> Bool
Prelude.Eq, ReadPrec [DescribeChangeSet]
ReadPrec DescribeChangeSet
Int -> ReadS DescribeChangeSet
ReadS [DescribeChangeSet]
(Int -> ReadS DescribeChangeSet)
-> ReadS [DescribeChangeSet]
-> ReadPrec DescribeChangeSet
-> ReadPrec [DescribeChangeSet]
-> Read DescribeChangeSet
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeChangeSet]
$creadListPrec :: ReadPrec [DescribeChangeSet]
readPrec :: ReadPrec DescribeChangeSet
$creadPrec :: ReadPrec DescribeChangeSet
readList :: ReadS [DescribeChangeSet]
$creadList :: ReadS [DescribeChangeSet]
readsPrec :: Int -> ReadS DescribeChangeSet
$creadsPrec :: Int -> ReadS DescribeChangeSet
Prelude.Read, Int -> DescribeChangeSet -> ShowS
[DescribeChangeSet] -> ShowS
DescribeChangeSet -> String
(Int -> DescribeChangeSet -> ShowS)
-> (DescribeChangeSet -> String)
-> ([DescribeChangeSet] -> ShowS)
-> Show DescribeChangeSet
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeChangeSet] -> ShowS
$cshowList :: [DescribeChangeSet] -> ShowS
show :: DescribeChangeSet -> String
$cshow :: DescribeChangeSet -> String
showsPrec :: Int -> DescribeChangeSet -> ShowS
$cshowsPrec :: Int -> DescribeChangeSet -> ShowS
Prelude.Show, (forall x. DescribeChangeSet -> Rep DescribeChangeSet x)
-> (forall x. Rep DescribeChangeSet x -> DescribeChangeSet)
-> Generic DescribeChangeSet
forall x. Rep DescribeChangeSet x -> DescribeChangeSet
forall x. DescribeChangeSet -> Rep DescribeChangeSet x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeChangeSet x -> DescribeChangeSet
$cfrom :: forall x. DescribeChangeSet -> Rep DescribeChangeSet x
Prelude.Generic)

-- |
-- Create a value of 'DescribeChangeSet' 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:
--
-- 'nextToken', 'describeChangeSet_nextToken' - A string (provided by the DescribeChangeSet response output) that
-- identifies the next page of information that you want to retrieve.
--
-- 'stackName', 'describeChangeSet_stackName' - If you specified the name of a change set, specify the stack name or ID
-- (ARN) of the change set you want to describe.
--
-- 'changeSetName', 'describeChangeSet_changeSetName' - The name or Amazon Resource Name (ARN) of the change set that you want
-- to describe.
newDescribeChangeSet ::
  -- | 'changeSetName'
  Prelude.Text ->
  DescribeChangeSet
newDescribeChangeSet :: Text -> DescribeChangeSet
newDescribeChangeSet Text
pChangeSetName_ =
  DescribeChangeSet' :: Maybe Text -> Maybe Text -> Text -> DescribeChangeSet
DescribeChangeSet'
    { $sel:nextToken:DescribeChangeSet' :: Maybe Text
nextToken = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:stackName:DescribeChangeSet' :: Maybe Text
stackName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:changeSetName:DescribeChangeSet' :: Text
changeSetName = Text
pChangeSetName_
    }

-- | A string (provided by the DescribeChangeSet response output) that
-- identifies the next page of information that you want to retrieve.
describeChangeSet_nextToken :: Lens.Lens' DescribeChangeSet (Prelude.Maybe Prelude.Text)
describeChangeSet_nextToken :: (Maybe Text -> f (Maybe Text))
-> DescribeChangeSet -> f DescribeChangeSet
describeChangeSet_nextToken = (DescribeChangeSet -> Maybe Text)
-> (DescribeChangeSet -> Maybe Text -> DescribeChangeSet)
-> Lens
     DescribeChangeSet DescribeChangeSet (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeChangeSet' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeChangeSet' :: DescribeChangeSet -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeChangeSet
s@DescribeChangeSet' {} Maybe Text
a -> DescribeChangeSet
s {$sel:nextToken:DescribeChangeSet' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeChangeSet)

-- | If you specified the name of a change set, specify the stack name or ID
-- (ARN) of the change set you want to describe.
describeChangeSet_stackName :: Lens.Lens' DescribeChangeSet (Prelude.Maybe Prelude.Text)
describeChangeSet_stackName :: (Maybe Text -> f (Maybe Text))
-> DescribeChangeSet -> f DescribeChangeSet
describeChangeSet_stackName = (DescribeChangeSet -> Maybe Text)
-> (DescribeChangeSet -> Maybe Text -> DescribeChangeSet)
-> Lens
     DescribeChangeSet DescribeChangeSet (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeChangeSet' {Maybe Text
stackName :: Maybe Text
$sel:stackName:DescribeChangeSet' :: DescribeChangeSet -> Maybe Text
stackName} -> Maybe Text
stackName) (\s :: DescribeChangeSet
s@DescribeChangeSet' {} Maybe Text
a -> DescribeChangeSet
s {$sel:stackName:DescribeChangeSet' :: Maybe Text
stackName = Maybe Text
a} :: DescribeChangeSet)

-- | The name or Amazon Resource Name (ARN) of the change set that you want
-- to describe.
describeChangeSet_changeSetName :: Lens.Lens' DescribeChangeSet Prelude.Text
describeChangeSet_changeSetName :: (Text -> f Text) -> DescribeChangeSet -> f DescribeChangeSet
describeChangeSet_changeSetName = (DescribeChangeSet -> Text)
-> (DescribeChangeSet -> Text -> DescribeChangeSet)
-> Lens DescribeChangeSet DescribeChangeSet Text Text
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeChangeSet' {Text
changeSetName :: Text
$sel:changeSetName:DescribeChangeSet' :: DescribeChangeSet -> Text
changeSetName} -> Text
changeSetName) (\s :: DescribeChangeSet
s@DescribeChangeSet' {} Text
a -> DescribeChangeSet
s {$sel:changeSetName:DescribeChangeSet' :: Text
changeSetName = Text
a} :: DescribeChangeSet)

instance Core.AWSPager DescribeChangeSet where
  page :: DescribeChangeSet
-> AWSResponse DescribeChangeSet -> Maybe DescribeChangeSet
page DescribeChangeSet
rq AWSResponse DescribeChangeSet
rs
    | Maybe Text -> Bool
forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeChangeSet
DescribeChangeSetResponse
rs
            DescribeChangeSetResponse
-> Getting (First Text) DescribeChangeSetResponse Text
-> Maybe Text
forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? (Maybe Text -> Const (First Text) (Maybe Text))
-> DescribeChangeSetResponse
-> Const (First Text) DescribeChangeSetResponse
Lens' DescribeChangeSetResponse (Maybe Text)
describeChangeSetResponse_nextToken
              ((Maybe Text -> Const (First Text) (Maybe Text))
 -> DescribeChangeSetResponse
 -> Const (First Text) DescribeChangeSetResponse)
-> ((Text -> Const (First Text) Text)
    -> Maybe Text -> Const (First Text) (Maybe Text))
-> Getting (First Text) DescribeChangeSetResponse Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. (Text -> Const (First Text) Text)
-> Maybe Text -> Const (First Text) (Maybe Text)
forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
      Maybe DescribeChangeSet
forall a. Maybe a
Prelude.Nothing
    | Maybe [Change] -> Bool
forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeChangeSet
DescribeChangeSetResponse
rs
            DescribeChangeSetResponse
-> Getting (First [Change]) DescribeChangeSetResponse [Change]
-> Maybe [Change]
forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? (Maybe [Change] -> Const (First [Change]) (Maybe [Change]))
-> DescribeChangeSetResponse
-> Const (First [Change]) DescribeChangeSetResponse
Lens' DescribeChangeSetResponse (Maybe [Change])
describeChangeSetResponse_changes
              ((Maybe [Change] -> Const (First [Change]) (Maybe [Change]))
 -> DescribeChangeSetResponse
 -> Const (First [Change]) DescribeChangeSetResponse)
-> (([Change] -> Const (First [Change]) [Change])
    -> Maybe [Change] -> Const (First [Change]) (Maybe [Change]))
-> Getting (First [Change]) DescribeChangeSetResponse [Change]
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. ([Change] -> Const (First [Change]) [Change])
-> Maybe [Change] -> Const (First [Change]) (Maybe [Change])
forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
      Maybe DescribeChangeSet
forall a. Maybe a
Prelude.Nothing
    | Bool
Prelude.otherwise =
      DescribeChangeSet -> Maybe DescribeChangeSet
forall a. a -> Maybe a
Prelude.Just (DescribeChangeSet -> Maybe DescribeChangeSet)
-> DescribeChangeSet -> Maybe DescribeChangeSet
forall a b. (a -> b) -> a -> b
Prelude.$
        DescribeChangeSet
rq
          DescribeChangeSet
-> (DescribeChangeSet -> DescribeChangeSet) -> DescribeChangeSet
forall a b. a -> (a -> b) -> b
Prelude.& (Maybe Text -> Identity (Maybe Text))
-> DescribeChangeSet -> Identity DescribeChangeSet
Lens DescribeChangeSet DescribeChangeSet (Maybe Text) (Maybe Text)
describeChangeSet_nextToken
          ((Maybe Text -> Identity (Maybe Text))
 -> DescribeChangeSet -> Identity DescribeChangeSet)
-> Maybe Text -> DescribeChangeSet -> DescribeChangeSet
forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeChangeSet
DescribeChangeSetResponse
rs
          DescribeChangeSetResponse
-> Getting (First Text) DescribeChangeSetResponse Text
-> Maybe Text
forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? (Maybe Text -> Const (First Text) (Maybe Text))
-> DescribeChangeSetResponse
-> Const (First Text) DescribeChangeSetResponse
Lens' DescribeChangeSetResponse (Maybe Text)
describeChangeSetResponse_nextToken
            ((Maybe Text -> Const (First Text) (Maybe Text))
 -> DescribeChangeSetResponse
 -> Const (First Text) DescribeChangeSetResponse)
-> ((Text -> Const (First Text) Text)
    -> Maybe Text -> Const (First Text) (Maybe Text))
-> Getting (First Text) DescribeChangeSetResponse Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. (Text -> Const (First Text) Text)
-> Maybe Text -> Const (First Text) (Maybe Text)
forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just

instance Core.AWSRequest DescribeChangeSet where
  type
    AWSResponse DescribeChangeSet =
      DescribeChangeSetResponse
  request :: DescribeChangeSet -> Request DescribeChangeSet
request = Service -> DescribeChangeSet -> Request DescribeChangeSet
forall a. ToRequest a => Service -> a -> Request a
Request.postQuery Service
defaultService
  response :: Logger
-> Service
-> Proxy DescribeChangeSet
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeChangeSet)))
response =
    Text
-> (Int
    -> ResponseHeaders
    -> [Node]
    -> Either String (AWSResponse DescribeChangeSet))
-> Logger
-> Service
-> Proxy DescribeChangeSet
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeChangeSet)))
forall (m :: * -> *) a.
MonadResource m =>
Text
-> (Int
    -> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> Logger
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXMLWrapper
      Text
"DescribeChangeSetResult"
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe ISO8601
-> Maybe Text
-> Maybe [Change]
-> Maybe [Text]
-> Maybe Text
-> Maybe ExecutionStatus
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe [Parameter]
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe [Capability]
-> Maybe RollbackConfiguration
-> Maybe [Tag]
-> Maybe Text
-> Int
-> ChangeSetStatus
-> DescribeChangeSetResponse
DescribeChangeSetResponse'
            (Maybe ISO8601
 -> Maybe Text
 -> Maybe [Change]
 -> Maybe [Text]
 -> Maybe Text
 -> Maybe ExecutionStatus
 -> Maybe Text
 -> Maybe Bool
 -> Maybe Text
 -> Maybe Text
 -> Maybe [Parameter]
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe [Capability]
 -> Maybe RollbackConfiguration
 -> Maybe [Tag]
 -> Maybe Text
 -> Int
 -> ChangeSetStatus
 -> DescribeChangeSetResponse)
-> Either String (Maybe ISO8601)
-> Either
     String
     (Maybe Text
      -> Maybe [Change]
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe ExecutionStatus
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Parameter]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Capability]
      -> Maybe RollbackConfiguration
      -> Maybe [Tag]
      -> Maybe Text
      -> Int
      -> ChangeSetStatus
      -> DescribeChangeSetResponse)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x [Node] -> Text -> Either String (Maybe ISO8601)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"CreationTime")
            Either
  String
  (Maybe Text
   -> Maybe [Change]
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe ExecutionStatus
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Parameter]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Capability]
   -> Maybe RollbackConfiguration
   -> Maybe [Tag]
   -> Maybe Text
   -> Int
   -> ChangeSetStatus
   -> DescribeChangeSetResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe [Change]
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe ExecutionStatus
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Parameter]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Capability]
      -> Maybe RollbackConfiguration
      -> Maybe [Tag]
      -> Maybe Text
      -> Int
      -> ChangeSetStatus
      -> DescribeChangeSetResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"ParentChangeSetId")
            Either
  String
  (Maybe [Change]
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe ExecutionStatus
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Parameter]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Capability]
   -> Maybe RollbackConfiguration
   -> Maybe [Tag]
   -> Maybe Text
   -> Int
   -> ChangeSetStatus
   -> DescribeChangeSetResponse)
-> Either String (Maybe [Change])
-> Either
     String
     (Maybe [Text]
      -> Maybe Text
      -> Maybe ExecutionStatus
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Parameter]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Capability]
      -> Maybe RollbackConfiguration
      -> Maybe [Tag]
      -> Maybe Text
      -> Int
      -> ChangeSetStatus
      -> DescribeChangeSetResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x [Node] -> Text -> Either String (Maybe [Node])
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"Changes" Either String (Maybe [Node]) -> [Node] -> Either String [Node]
forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ [Node]
forall a. Monoid a => a
Prelude.mempty
                            Either String [Node]
-> ([Node] -> Either String (Maybe [Change]))
-> Either String (Maybe [Change])
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= ([Node] -> Either String [Change])
-> [Node] -> Either String (Maybe [Change])
forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (Text -> [Node] -> Either String [Change]
forall a. FromXML a => Text -> [Node] -> Either String [a]
Core.parseXMLList Text
"member")
                        )
            Either
  String
  (Maybe [Text]
   -> Maybe Text
   -> Maybe ExecutionStatus
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Parameter]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Capability]
   -> Maybe RollbackConfiguration
   -> Maybe [Tag]
   -> Maybe Text
   -> Int
   -> ChangeSetStatus
   -> DescribeChangeSetResponse)
-> Either String (Maybe [Text])
-> Either
     String
     (Maybe Text
      -> Maybe ExecutionStatus
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Parameter]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Capability]
      -> Maybe RollbackConfiguration
      -> Maybe [Tag]
      -> Maybe Text
      -> Int
      -> ChangeSetStatus
      -> DescribeChangeSetResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x [Node] -> Text -> Either String (Maybe [Node])
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"NotificationARNs"
                            Either String (Maybe [Node]) -> [Node] -> Either String [Node]
forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ [Node]
forall a. Monoid a => a
Prelude.mempty
                            Either String [Node]
-> ([Node] -> Either String (Maybe [Text]))
-> Either String (Maybe [Text])
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= ([Node] -> Either String [Text])
-> [Node] -> Either String (Maybe [Text])
forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (Text -> [Node] -> Either String [Text]
forall a. FromXML a => Text -> [Node] -> Either String [a]
Core.parseXMLList Text
"member")
                        )
            Either
  String
  (Maybe Text
   -> Maybe ExecutionStatus
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Parameter]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Capability]
   -> Maybe RollbackConfiguration
   -> Maybe [Tag]
   -> Maybe Text
   -> Int
   -> ChangeSetStatus
   -> DescribeChangeSetResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe ExecutionStatus
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Parameter]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Capability]
      -> Maybe RollbackConfiguration
      -> Maybe [Tag]
      -> Maybe Text
      -> Int
      -> ChangeSetStatus
      -> DescribeChangeSetResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"ChangeSetName")
            Either
  String
  (Maybe ExecutionStatus
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Parameter]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Capability]
   -> Maybe RollbackConfiguration
   -> Maybe [Tag]
   -> Maybe Text
   -> Int
   -> ChangeSetStatus
   -> DescribeChangeSetResponse)
-> Either String (Maybe ExecutionStatus)
-> Either
     String
     (Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Parameter]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Capability]
      -> Maybe RollbackConfiguration
      -> Maybe [Tag]
      -> Maybe Text
      -> Int
      -> ChangeSetStatus
      -> DescribeChangeSetResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe ExecutionStatus)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"ExecutionStatus")
            Either
  String
  (Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Parameter]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Capability]
   -> Maybe RollbackConfiguration
   -> Maybe [Tag]
   -> Maybe Text
   -> Int
   -> ChangeSetStatus
   -> DescribeChangeSetResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Parameter]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Capability]
      -> Maybe RollbackConfiguration
      -> Maybe [Tag]
      -> Maybe Text
      -> Int
      -> ChangeSetStatus
      -> DescribeChangeSetResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"ChangeSetId")
            Either
  String
  (Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Parameter]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Capability]
   -> Maybe RollbackConfiguration
   -> Maybe [Tag]
   -> Maybe Text
   -> Int
   -> ChangeSetStatus
   -> DescribeChangeSetResponse)
-> Either String (Maybe Bool)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe [Parameter]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Capability]
      -> Maybe RollbackConfiguration
      -> Maybe [Tag]
      -> Maybe Text
      -> Int
      -> ChangeSetStatus
      -> DescribeChangeSetResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Bool)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"IncludeNestedStacks")
            Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe [Parameter]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Capability]
   -> Maybe RollbackConfiguration
   -> Maybe [Tag]
   -> Maybe Text
   -> Int
   -> ChangeSetStatus
   -> DescribeChangeSetResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe [Parameter]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Capability]
      -> Maybe RollbackConfiguration
      -> Maybe [Tag]
      -> Maybe Text
      -> Int
      -> ChangeSetStatus
      -> DescribeChangeSetResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"NextToken")
            Either
  String
  (Maybe Text
   -> Maybe [Parameter]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Capability]
   -> Maybe RollbackConfiguration
   -> Maybe [Tag]
   -> Maybe Text
   -> Int
   -> ChangeSetStatus
   -> DescribeChangeSetResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe [Parameter]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Capability]
      -> Maybe RollbackConfiguration
      -> Maybe [Tag]
      -> Maybe Text
      -> Int
      -> ChangeSetStatus
      -> DescribeChangeSetResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"RootChangeSetId")
            Either
  String
  (Maybe [Parameter]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Capability]
   -> Maybe RollbackConfiguration
   -> Maybe [Tag]
   -> Maybe Text
   -> Int
   -> ChangeSetStatus
   -> DescribeChangeSetResponse)
-> Either String (Maybe [Parameter])
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Capability]
      -> Maybe RollbackConfiguration
      -> Maybe [Tag]
      -> Maybe Text
      -> Int
      -> ChangeSetStatus
      -> DescribeChangeSetResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x [Node] -> Text -> Either String (Maybe [Node])
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"Parameters" Either String (Maybe [Node]) -> [Node] -> Either String [Node]
forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ [Node]
forall a. Monoid a => a
Prelude.mempty
                            Either String [Node]
-> ([Node] -> Either String (Maybe [Parameter]))
-> Either String (Maybe [Parameter])
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= ([Node] -> Either String [Parameter])
-> [Node] -> Either String (Maybe [Parameter])
forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (Text -> [Node] -> Either String [Parameter]
forall a. FromXML a => Text -> [Node] -> Either String [a]
Core.parseXMLList Text
"member")
                        )
            Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Capability]
   -> Maybe RollbackConfiguration
   -> Maybe [Tag]
   -> Maybe Text
   -> Int
   -> ChangeSetStatus
   -> DescribeChangeSetResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe [Capability]
      -> Maybe RollbackConfiguration
      -> Maybe [Tag]
      -> Maybe Text
      -> Int
      -> ChangeSetStatus
      -> DescribeChangeSetResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"StatusReason")
            Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe [Capability]
   -> Maybe RollbackConfiguration
   -> Maybe [Tag]
   -> Maybe Text
   -> Int
   -> ChangeSetStatus
   -> DescribeChangeSetResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe [Capability]
      -> Maybe RollbackConfiguration
      -> Maybe [Tag]
      -> Maybe Text
      -> Int
      -> ChangeSetStatus
      -> DescribeChangeSetResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"StackId")
            Either
  String
  (Maybe Text
   -> Maybe [Capability]
   -> Maybe RollbackConfiguration
   -> Maybe [Tag]
   -> Maybe Text
   -> Int
   -> ChangeSetStatus
   -> DescribeChangeSetResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe [Capability]
      -> Maybe RollbackConfiguration
      -> Maybe [Tag]
      -> Maybe Text
      -> Int
      -> ChangeSetStatus
      -> DescribeChangeSetResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"Description")
            Either
  String
  (Maybe [Capability]
   -> Maybe RollbackConfiguration
   -> Maybe [Tag]
   -> Maybe Text
   -> Int
   -> ChangeSetStatus
   -> DescribeChangeSetResponse)
-> Either String (Maybe [Capability])
-> Either
     String
     (Maybe RollbackConfiguration
      -> Maybe [Tag]
      -> Maybe Text
      -> Int
      -> ChangeSetStatus
      -> DescribeChangeSetResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x [Node] -> Text -> Either String (Maybe [Node])
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"Capabilities" Either String (Maybe [Node]) -> [Node] -> Either String [Node]
forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ [Node]
forall a. Monoid a => a
Prelude.mempty
                            Either String [Node]
-> ([Node] -> Either String (Maybe [Capability]))
-> Either String (Maybe [Capability])
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= ([Node] -> Either String [Capability])
-> [Node] -> Either String (Maybe [Capability])
forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (Text -> [Node] -> Either String [Capability]
forall a. FromXML a => Text -> [Node] -> Either String [a]
Core.parseXMLList Text
"member")
                        )
            Either
  String
  (Maybe RollbackConfiguration
   -> Maybe [Tag]
   -> Maybe Text
   -> Int
   -> ChangeSetStatus
   -> DescribeChangeSetResponse)
-> Either String (Maybe RollbackConfiguration)
-> Either
     String
     (Maybe [Tag]
      -> Maybe Text
      -> Int
      -> ChangeSetStatus
      -> DescribeChangeSetResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe RollbackConfiguration)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"RollbackConfiguration")
            Either
  String
  (Maybe [Tag]
   -> Maybe Text
   -> Int
   -> ChangeSetStatus
   -> DescribeChangeSetResponse)
-> Either String (Maybe [Tag])
-> Either
     String
     (Maybe Text -> Int -> ChangeSetStatus -> DescribeChangeSetResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x [Node] -> Text -> Either String (Maybe [Node])
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"Tags" Either String (Maybe [Node]) -> [Node] -> Either String [Node]
forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ [Node]
forall a. Monoid a => a
Prelude.mempty
                            Either String [Node]
-> ([Node] -> Either String (Maybe [Tag]))
-> Either String (Maybe [Tag])
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= ([Node] -> Either String [Tag])
-> [Node] -> Either String (Maybe [Tag])
forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (Text -> [Node] -> Either String [Tag]
forall a. FromXML a => Text -> [Node] -> Either String [a]
Core.parseXMLList Text
"member")
                        )
            Either
  String
  (Maybe Text -> Int -> ChangeSetStatus -> DescribeChangeSetResponse)
-> Either String (Maybe Text)
-> Either
     String (Int -> ChangeSetStatus -> DescribeChangeSetResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"StackName")
            Either String (Int -> ChangeSetStatus -> DescribeChangeSetResponse)
-> Either String Int
-> Either String (ChangeSetStatus -> DescribeChangeSetResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Int -> Either String Int
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (Int -> Int
forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
            Either String (ChangeSetStatus -> DescribeChangeSetResponse)
-> Either String ChangeSetStatus
-> Either String DescribeChangeSetResponse
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String ChangeSetStatus
forall a. FromXML a => [Node] -> Text -> Either String a
Core..@ Text
"Status")
      )

instance Prelude.Hashable DescribeChangeSet

instance Prelude.NFData DescribeChangeSet

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

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

instance Core.ToQuery DescribeChangeSet where
  toQuery :: DescribeChangeSet -> QueryString
toQuery DescribeChangeSet' {Maybe Text
Text
changeSetName :: Text
stackName :: Maybe Text
nextToken :: Maybe Text
$sel:changeSetName:DescribeChangeSet' :: DescribeChangeSet -> Text
$sel:stackName:DescribeChangeSet' :: DescribeChangeSet -> Maybe Text
$sel:nextToken:DescribeChangeSet' :: DescribeChangeSet -> Maybe Text
..} =
    [QueryString] -> QueryString
forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          ByteString -> ByteString -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: (ByteString
"DescribeChangeSet" :: Prelude.ByteString),
        ByteString
"Version"
          ByteString -> ByteString -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: (ByteString
"2010-05-15" :: Prelude.ByteString),
        ByteString
"NextToken" ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Text
nextToken,
        ByteString
"StackName" ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Text
stackName,
        ByteString
"ChangeSetName" ByteString -> Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Text
changeSetName
      ]

-- | The output for the DescribeChangeSet action.
--
-- /See:/ 'newDescribeChangeSetResponse' smart constructor.
data DescribeChangeSetResponse = DescribeChangeSetResponse'
  { -- | The start time when the change set was created, in UTC.
    DescribeChangeSetResponse -> Maybe ISO8601
creationTime :: Prelude.Maybe Core.ISO8601,
    -- | Specifies the change set ID of the parent change set in the current
    -- nested change set hierarchy.
    DescribeChangeSetResponse -> Maybe Text
parentChangeSetId :: Prelude.Maybe Prelude.Text,
    -- | A list of @Change@ structures that describes the resources
    -- CloudFormation changes if you execute the change set.
    DescribeChangeSetResponse -> Maybe [Change]
changes :: Prelude.Maybe [Change],
    -- | The ARNs of the Amazon Simple Notification Service (Amazon SNS) topics
    -- that will be associated with the stack if you execute the change set.
    DescribeChangeSetResponse -> Maybe [Text]
notificationARNs :: Prelude.Maybe [Prelude.Text],
    -- | The name of the change set.
    DescribeChangeSetResponse -> Maybe Text
changeSetName :: Prelude.Maybe Prelude.Text,
    -- | If the change set execution status is @AVAILABLE@, you can execute the
    -- change set. If you can’t execute the change set, the status indicates
    -- why. For example, a change set might be in an @UNAVAILABLE@ state
    -- because CloudFormation is still creating it or in an @OBSOLETE@ state
    -- because the stack was already updated.
    DescribeChangeSetResponse -> Maybe ExecutionStatus
executionStatus :: Prelude.Maybe ExecutionStatus,
    -- | The ARN of the change set.
    DescribeChangeSetResponse -> Maybe Text
changeSetId :: Prelude.Maybe Prelude.Text,
    -- | Verifies if @IncludeNestedStacks@ is set to @True@.
    DescribeChangeSetResponse -> Maybe Bool
includeNestedStacks :: Prelude.Maybe Prelude.Bool,
    -- | If the output exceeds 1 MB, a string that identifies the next page of
    -- changes. If there is no additional page, this value is null.
    DescribeChangeSetResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | Specifies the change set ID of the root change set in the current nested
    -- change set hierarchy.
    DescribeChangeSetResponse -> Maybe Text
rootChangeSetId :: Prelude.Maybe Prelude.Text,
    -- | A list of @Parameter@ structures that describes the input parameters and
    -- their values used to create the change set. For more information, see
    -- the
    -- <https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_Parameter.html Parameter>
    -- data type.
    DescribeChangeSetResponse -> Maybe [Parameter]
parameters :: Prelude.Maybe [Parameter],
    -- | A description of the change set\'s status. For example, if your attempt
    -- to create a change set failed, CloudFormation shows the error message.
    DescribeChangeSetResponse -> Maybe Text
statusReason :: Prelude.Maybe Prelude.Text,
    -- | The ARN of the stack that is associated with the change set.
    DescribeChangeSetResponse -> Maybe Text
stackId :: Prelude.Maybe Prelude.Text,
    -- | Information about the change set.
    DescribeChangeSetResponse -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | If you execute the change set, the list of capabilities that were
    -- explicitly acknowledged when the change set was created.
    DescribeChangeSetResponse -> Maybe [Capability]
capabilities :: Prelude.Maybe [Capability],
    -- | The rollback triggers for CloudFormation to monitor during stack
    -- creation and updating operations, and for the specified monitoring
    -- period afterwards.
    DescribeChangeSetResponse -> Maybe RollbackConfiguration
rollbackConfiguration :: Prelude.Maybe RollbackConfiguration,
    -- | If you execute the change set, the tags that will be associated with the
    -- stack.
    DescribeChangeSetResponse -> Maybe [Tag]
tags :: Prelude.Maybe [Tag],
    -- | The name of the stack that is associated with the change set.
    DescribeChangeSetResponse -> Maybe Text
stackName :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    DescribeChangeSetResponse -> Int
httpStatus :: Prelude.Int,
    -- | The current status of the change set, such as @CREATE_IN_PROGRESS@,
    -- @CREATE_COMPLETE@, or @FAILED@.
    DescribeChangeSetResponse -> ChangeSetStatus
status :: ChangeSetStatus
  }
  deriving (DescribeChangeSetResponse -> DescribeChangeSetResponse -> Bool
(DescribeChangeSetResponse -> DescribeChangeSetResponse -> Bool)
-> (DescribeChangeSetResponse -> DescribeChangeSetResponse -> Bool)
-> Eq DescribeChangeSetResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeChangeSetResponse -> DescribeChangeSetResponse -> Bool
$c/= :: DescribeChangeSetResponse -> DescribeChangeSetResponse -> Bool
== :: DescribeChangeSetResponse -> DescribeChangeSetResponse -> Bool
$c== :: DescribeChangeSetResponse -> DescribeChangeSetResponse -> Bool
Prelude.Eq, ReadPrec [DescribeChangeSetResponse]
ReadPrec DescribeChangeSetResponse
Int -> ReadS DescribeChangeSetResponse
ReadS [DescribeChangeSetResponse]
(Int -> ReadS DescribeChangeSetResponse)
-> ReadS [DescribeChangeSetResponse]
-> ReadPrec DescribeChangeSetResponse
-> ReadPrec [DescribeChangeSetResponse]
-> Read DescribeChangeSetResponse
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeChangeSetResponse]
$creadListPrec :: ReadPrec [DescribeChangeSetResponse]
readPrec :: ReadPrec DescribeChangeSetResponse
$creadPrec :: ReadPrec DescribeChangeSetResponse
readList :: ReadS [DescribeChangeSetResponse]
$creadList :: ReadS [DescribeChangeSetResponse]
readsPrec :: Int -> ReadS DescribeChangeSetResponse
$creadsPrec :: Int -> ReadS DescribeChangeSetResponse
Prelude.Read, Int -> DescribeChangeSetResponse -> ShowS
[DescribeChangeSetResponse] -> ShowS
DescribeChangeSetResponse -> String
(Int -> DescribeChangeSetResponse -> ShowS)
-> (DescribeChangeSetResponse -> String)
-> ([DescribeChangeSetResponse] -> ShowS)
-> Show DescribeChangeSetResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeChangeSetResponse] -> ShowS
$cshowList :: [DescribeChangeSetResponse] -> ShowS
show :: DescribeChangeSetResponse -> String
$cshow :: DescribeChangeSetResponse -> String
showsPrec :: Int -> DescribeChangeSetResponse -> ShowS
$cshowsPrec :: Int -> DescribeChangeSetResponse -> ShowS
Prelude.Show, (forall x.
 DescribeChangeSetResponse -> Rep DescribeChangeSetResponse x)
-> (forall x.
    Rep DescribeChangeSetResponse x -> DescribeChangeSetResponse)
-> Generic DescribeChangeSetResponse
forall x.
Rep DescribeChangeSetResponse x -> DescribeChangeSetResponse
forall x.
DescribeChangeSetResponse -> Rep DescribeChangeSetResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeChangeSetResponse x -> DescribeChangeSetResponse
$cfrom :: forall x.
DescribeChangeSetResponse -> Rep DescribeChangeSetResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeChangeSetResponse' 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:
--
-- 'creationTime', 'describeChangeSetResponse_creationTime' - The start time when the change set was created, in UTC.
--
-- 'parentChangeSetId', 'describeChangeSetResponse_parentChangeSetId' - Specifies the change set ID of the parent change set in the current
-- nested change set hierarchy.
--
-- 'changes', 'describeChangeSetResponse_changes' - A list of @Change@ structures that describes the resources
-- CloudFormation changes if you execute the change set.
--
-- 'notificationARNs', 'describeChangeSetResponse_notificationARNs' - The ARNs of the Amazon Simple Notification Service (Amazon SNS) topics
-- that will be associated with the stack if you execute the change set.
--
-- 'changeSetName', 'describeChangeSetResponse_changeSetName' - The name of the change set.
--
-- 'executionStatus', 'describeChangeSetResponse_executionStatus' - If the change set execution status is @AVAILABLE@, you can execute the
-- change set. If you can’t execute the change set, the status indicates
-- why. For example, a change set might be in an @UNAVAILABLE@ state
-- because CloudFormation is still creating it or in an @OBSOLETE@ state
-- because the stack was already updated.
--
-- 'changeSetId', 'describeChangeSetResponse_changeSetId' - The ARN of the change set.
--
-- 'includeNestedStacks', 'describeChangeSetResponse_includeNestedStacks' - Verifies if @IncludeNestedStacks@ is set to @True@.
--
-- 'nextToken', 'describeChangeSetResponse_nextToken' - If the output exceeds 1 MB, a string that identifies the next page of
-- changes. If there is no additional page, this value is null.
--
-- 'rootChangeSetId', 'describeChangeSetResponse_rootChangeSetId' - Specifies the change set ID of the root change set in the current nested
-- change set hierarchy.
--
-- 'parameters', 'describeChangeSetResponse_parameters' - A list of @Parameter@ structures that describes the input parameters and
-- their values used to create the change set. For more information, see
-- the
-- <https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_Parameter.html Parameter>
-- data type.
--
-- 'statusReason', 'describeChangeSetResponse_statusReason' - A description of the change set\'s status. For example, if your attempt
-- to create a change set failed, CloudFormation shows the error message.
--
-- 'stackId', 'describeChangeSetResponse_stackId' - The ARN of the stack that is associated with the change set.
--
-- 'description', 'describeChangeSetResponse_description' - Information about the change set.
--
-- 'capabilities', 'describeChangeSetResponse_capabilities' - If you execute the change set, the list of capabilities that were
-- explicitly acknowledged when the change set was created.
--
-- 'rollbackConfiguration', 'describeChangeSetResponse_rollbackConfiguration' - The rollback triggers for CloudFormation to monitor during stack
-- creation and updating operations, and for the specified monitoring
-- period afterwards.
--
-- 'tags', 'describeChangeSetResponse_tags' - If you execute the change set, the tags that will be associated with the
-- stack.
--
-- 'stackName', 'describeChangeSetResponse_stackName' - The name of the stack that is associated with the change set.
--
-- 'httpStatus', 'describeChangeSetResponse_httpStatus' - The response's http status code.
--
-- 'status', 'describeChangeSetResponse_status' - The current status of the change set, such as @CREATE_IN_PROGRESS@,
-- @CREATE_COMPLETE@, or @FAILED@.
newDescribeChangeSetResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'status'
  ChangeSetStatus ->
  DescribeChangeSetResponse
newDescribeChangeSetResponse :: Int -> ChangeSetStatus -> DescribeChangeSetResponse
newDescribeChangeSetResponse Int
pHttpStatus_ ChangeSetStatus
pStatus_ =
  DescribeChangeSetResponse' :: Maybe ISO8601
-> Maybe Text
-> Maybe [Change]
-> Maybe [Text]
-> Maybe Text
-> Maybe ExecutionStatus
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe [Parameter]
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe [Capability]
-> Maybe RollbackConfiguration
-> Maybe [Tag]
-> Maybe Text
-> Int
-> ChangeSetStatus
-> DescribeChangeSetResponse
DescribeChangeSetResponse'
    { $sel:creationTime:DescribeChangeSetResponse' :: Maybe ISO8601
creationTime =
        Maybe ISO8601
forall a. Maybe a
Prelude.Nothing,
      $sel:parentChangeSetId:DescribeChangeSetResponse' :: Maybe Text
parentChangeSetId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:changes:DescribeChangeSetResponse' :: Maybe [Change]
changes = Maybe [Change]
forall a. Maybe a
Prelude.Nothing,
      $sel:notificationARNs:DescribeChangeSetResponse' :: Maybe [Text]
notificationARNs = Maybe [Text]
forall a. Maybe a
Prelude.Nothing,
      $sel:changeSetName:DescribeChangeSetResponse' :: Maybe Text
changeSetName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:executionStatus:DescribeChangeSetResponse' :: Maybe ExecutionStatus
executionStatus = Maybe ExecutionStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:changeSetId:DescribeChangeSetResponse' :: Maybe Text
changeSetId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:includeNestedStacks:DescribeChangeSetResponse' :: Maybe Bool
includeNestedStacks = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeChangeSetResponse' :: Maybe Text
nextToken = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:rootChangeSetId:DescribeChangeSetResponse' :: Maybe Text
rootChangeSetId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:parameters:DescribeChangeSetResponse' :: Maybe [Parameter]
parameters = Maybe [Parameter]
forall a. Maybe a
Prelude.Nothing,
      $sel:statusReason:DescribeChangeSetResponse' :: Maybe Text
statusReason = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:stackId:DescribeChangeSetResponse' :: Maybe Text
stackId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:description:DescribeChangeSetResponse' :: Maybe Text
description = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:capabilities:DescribeChangeSetResponse' :: Maybe [Capability]
capabilities = Maybe [Capability]
forall a. Maybe a
Prelude.Nothing,
      $sel:rollbackConfiguration:DescribeChangeSetResponse' :: Maybe RollbackConfiguration
rollbackConfiguration = Maybe RollbackConfiguration
forall a. Maybe a
Prelude.Nothing,
      $sel:tags:DescribeChangeSetResponse' :: Maybe [Tag]
tags = Maybe [Tag]
forall a. Maybe a
Prelude.Nothing,
      $sel:stackName:DescribeChangeSetResponse' :: Maybe Text
stackName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeChangeSetResponse' :: Int
httpStatus = Int
pHttpStatus_,
      $sel:status:DescribeChangeSetResponse' :: ChangeSetStatus
status = ChangeSetStatus
pStatus_
    }

-- | The start time when the change set was created, in UTC.
describeChangeSetResponse_creationTime :: Lens.Lens' DescribeChangeSetResponse (Prelude.Maybe Prelude.UTCTime)
describeChangeSetResponse_creationTime :: (Maybe UTCTime -> f (Maybe UTCTime))
-> DescribeChangeSetResponse -> f DescribeChangeSetResponse
describeChangeSetResponse_creationTime = (DescribeChangeSetResponse -> Maybe ISO8601)
-> (DescribeChangeSetResponse
    -> Maybe ISO8601 -> DescribeChangeSetResponse)
-> Lens
     DescribeChangeSetResponse
     DescribeChangeSetResponse
     (Maybe ISO8601)
     (Maybe ISO8601)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeChangeSetResponse' {Maybe ISO8601
creationTime :: Maybe ISO8601
$sel:creationTime:DescribeChangeSetResponse' :: DescribeChangeSetResponse -> Maybe ISO8601
creationTime} -> Maybe ISO8601
creationTime) (\s :: DescribeChangeSetResponse
s@DescribeChangeSetResponse' {} Maybe ISO8601
a -> DescribeChangeSetResponse
s {$sel:creationTime:DescribeChangeSetResponse' :: Maybe ISO8601
creationTime = Maybe ISO8601
a} :: DescribeChangeSetResponse) ((Maybe ISO8601 -> f (Maybe ISO8601))
 -> DescribeChangeSetResponse -> f DescribeChangeSetResponse)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe ISO8601 -> f (Maybe ISO8601))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> DescribeChangeSetResponse
-> f DescribeChangeSetResponse
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso ISO8601 ISO8601 UTCTime UTCTime
-> Iso
     (Maybe ISO8601) (Maybe ISO8601) (Maybe UTCTime) (Maybe UTCTime)
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso ISO8601 ISO8601 UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | Specifies the change set ID of the parent change set in the current
-- nested change set hierarchy.
describeChangeSetResponse_parentChangeSetId :: Lens.Lens' DescribeChangeSetResponse (Prelude.Maybe Prelude.Text)
describeChangeSetResponse_parentChangeSetId :: (Maybe Text -> f (Maybe Text))
-> DescribeChangeSetResponse -> f DescribeChangeSetResponse
describeChangeSetResponse_parentChangeSetId = (DescribeChangeSetResponse -> Maybe Text)
-> (DescribeChangeSetResponse
    -> Maybe Text -> DescribeChangeSetResponse)
-> Lens' DescribeChangeSetResponse (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeChangeSetResponse' {Maybe Text
parentChangeSetId :: Maybe Text
$sel:parentChangeSetId:DescribeChangeSetResponse' :: DescribeChangeSetResponse -> Maybe Text
parentChangeSetId} -> Maybe Text
parentChangeSetId) (\s :: DescribeChangeSetResponse
s@DescribeChangeSetResponse' {} Maybe Text
a -> DescribeChangeSetResponse
s {$sel:parentChangeSetId:DescribeChangeSetResponse' :: Maybe Text
parentChangeSetId = Maybe Text
a} :: DescribeChangeSetResponse)

-- | A list of @Change@ structures that describes the resources
-- CloudFormation changes if you execute the change set.
describeChangeSetResponse_changes :: Lens.Lens' DescribeChangeSetResponse (Prelude.Maybe [Change])
describeChangeSetResponse_changes :: (Maybe [Change] -> f (Maybe [Change]))
-> DescribeChangeSetResponse -> f DescribeChangeSetResponse
describeChangeSetResponse_changes = (DescribeChangeSetResponse -> Maybe [Change])
-> (DescribeChangeSetResponse
    -> Maybe [Change] -> DescribeChangeSetResponse)
-> Lens' DescribeChangeSetResponse (Maybe [Change])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeChangeSetResponse' {Maybe [Change]
changes :: Maybe [Change]
$sel:changes:DescribeChangeSetResponse' :: DescribeChangeSetResponse -> Maybe [Change]
changes} -> Maybe [Change]
changes) (\s :: DescribeChangeSetResponse
s@DescribeChangeSetResponse' {} Maybe [Change]
a -> DescribeChangeSetResponse
s {$sel:changes:DescribeChangeSetResponse' :: Maybe [Change]
changes = Maybe [Change]
a} :: DescribeChangeSetResponse) ((Maybe [Change] -> f (Maybe [Change]))
 -> DescribeChangeSetResponse -> f DescribeChangeSetResponse)
-> ((Maybe [Change] -> f (Maybe [Change]))
    -> Maybe [Change] -> f (Maybe [Change]))
-> (Maybe [Change] -> f (Maybe [Change]))
-> DescribeChangeSetResponse
-> f DescribeChangeSetResponse
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Change] [Change] [Change] [Change]
-> Iso
     (Maybe [Change]) (Maybe [Change]) (Maybe [Change]) (Maybe [Change])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso [Change] [Change] [Change] [Change]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The ARNs of the Amazon Simple Notification Service (Amazon SNS) topics
-- that will be associated with the stack if you execute the change set.
describeChangeSetResponse_notificationARNs :: Lens.Lens' DescribeChangeSetResponse (Prelude.Maybe [Prelude.Text])
describeChangeSetResponse_notificationARNs :: (Maybe [Text] -> f (Maybe [Text]))
-> DescribeChangeSetResponse -> f DescribeChangeSetResponse
describeChangeSetResponse_notificationARNs = (DescribeChangeSetResponse -> Maybe [Text])
-> (DescribeChangeSetResponse
    -> Maybe [Text] -> DescribeChangeSetResponse)
-> Lens
     DescribeChangeSetResponse
     DescribeChangeSetResponse
     (Maybe [Text])
     (Maybe [Text])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeChangeSetResponse' {Maybe [Text]
notificationARNs :: Maybe [Text]
$sel:notificationARNs:DescribeChangeSetResponse' :: DescribeChangeSetResponse -> Maybe [Text]
notificationARNs} -> Maybe [Text]
notificationARNs) (\s :: DescribeChangeSetResponse
s@DescribeChangeSetResponse' {} Maybe [Text]
a -> DescribeChangeSetResponse
s {$sel:notificationARNs:DescribeChangeSetResponse' :: Maybe [Text]
notificationARNs = Maybe [Text]
a} :: DescribeChangeSetResponse) ((Maybe [Text] -> f (Maybe [Text]))
 -> DescribeChangeSetResponse -> f DescribeChangeSetResponse)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> DescribeChangeSetResponse
-> f DescribeChangeSetResponse
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Text] [Text] [Text] [Text]
-> Iso (Maybe [Text]) (Maybe [Text]) (Maybe [Text]) (Maybe [Text])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso [Text] [Text] [Text] [Text]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The name of the change set.
describeChangeSetResponse_changeSetName :: Lens.Lens' DescribeChangeSetResponse (Prelude.Maybe Prelude.Text)
describeChangeSetResponse_changeSetName :: (Maybe Text -> f (Maybe Text))
-> DescribeChangeSetResponse -> f DescribeChangeSetResponse
describeChangeSetResponse_changeSetName = (DescribeChangeSetResponse -> Maybe Text)
-> (DescribeChangeSetResponse
    -> Maybe Text -> DescribeChangeSetResponse)
-> Lens' DescribeChangeSetResponse (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeChangeSetResponse' {Maybe Text
changeSetName :: Maybe Text
$sel:changeSetName:DescribeChangeSetResponse' :: DescribeChangeSetResponse -> Maybe Text
changeSetName} -> Maybe Text
changeSetName) (\s :: DescribeChangeSetResponse
s@DescribeChangeSetResponse' {} Maybe Text
a -> DescribeChangeSetResponse
s {$sel:changeSetName:DescribeChangeSetResponse' :: Maybe Text
changeSetName = Maybe Text
a} :: DescribeChangeSetResponse)

-- | If the change set execution status is @AVAILABLE@, you can execute the
-- change set. If you can’t execute the change set, the status indicates
-- why. For example, a change set might be in an @UNAVAILABLE@ state
-- because CloudFormation is still creating it or in an @OBSOLETE@ state
-- because the stack was already updated.
describeChangeSetResponse_executionStatus :: Lens.Lens' DescribeChangeSetResponse (Prelude.Maybe ExecutionStatus)
describeChangeSetResponse_executionStatus :: (Maybe ExecutionStatus -> f (Maybe ExecutionStatus))
-> DescribeChangeSetResponse -> f DescribeChangeSetResponse
describeChangeSetResponse_executionStatus = (DescribeChangeSetResponse -> Maybe ExecutionStatus)
-> (DescribeChangeSetResponse
    -> Maybe ExecutionStatus -> DescribeChangeSetResponse)
-> Lens
     DescribeChangeSetResponse
     DescribeChangeSetResponse
     (Maybe ExecutionStatus)
     (Maybe ExecutionStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeChangeSetResponse' {Maybe ExecutionStatus
executionStatus :: Maybe ExecutionStatus
$sel:executionStatus:DescribeChangeSetResponse' :: DescribeChangeSetResponse -> Maybe ExecutionStatus
executionStatus} -> Maybe ExecutionStatus
executionStatus) (\s :: DescribeChangeSetResponse
s@DescribeChangeSetResponse' {} Maybe ExecutionStatus
a -> DescribeChangeSetResponse
s {$sel:executionStatus:DescribeChangeSetResponse' :: Maybe ExecutionStatus
executionStatus = Maybe ExecutionStatus
a} :: DescribeChangeSetResponse)

-- | The ARN of the change set.
describeChangeSetResponse_changeSetId :: Lens.Lens' DescribeChangeSetResponse (Prelude.Maybe Prelude.Text)
describeChangeSetResponse_changeSetId :: (Maybe Text -> f (Maybe Text))
-> DescribeChangeSetResponse -> f DescribeChangeSetResponse
describeChangeSetResponse_changeSetId = (DescribeChangeSetResponse -> Maybe Text)
-> (DescribeChangeSetResponse
    -> Maybe Text -> DescribeChangeSetResponse)
-> Lens' DescribeChangeSetResponse (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeChangeSetResponse' {Maybe Text
changeSetId :: Maybe Text
$sel:changeSetId:DescribeChangeSetResponse' :: DescribeChangeSetResponse -> Maybe Text
changeSetId} -> Maybe Text
changeSetId) (\s :: DescribeChangeSetResponse
s@DescribeChangeSetResponse' {} Maybe Text
a -> DescribeChangeSetResponse
s {$sel:changeSetId:DescribeChangeSetResponse' :: Maybe Text
changeSetId = Maybe Text
a} :: DescribeChangeSetResponse)

-- | Verifies if @IncludeNestedStacks@ is set to @True@.
describeChangeSetResponse_includeNestedStacks :: Lens.Lens' DescribeChangeSetResponse (Prelude.Maybe Prelude.Bool)
describeChangeSetResponse_includeNestedStacks :: (Maybe Bool -> f (Maybe Bool))
-> DescribeChangeSetResponse -> f DescribeChangeSetResponse
describeChangeSetResponse_includeNestedStacks = (DescribeChangeSetResponse -> Maybe Bool)
-> (DescribeChangeSetResponse
    -> Maybe Bool -> DescribeChangeSetResponse)
-> Lens
     DescribeChangeSetResponse
     DescribeChangeSetResponse
     (Maybe Bool)
     (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeChangeSetResponse' {Maybe Bool
includeNestedStacks :: Maybe Bool
$sel:includeNestedStacks:DescribeChangeSetResponse' :: DescribeChangeSetResponse -> Maybe Bool
includeNestedStacks} -> Maybe Bool
includeNestedStacks) (\s :: DescribeChangeSetResponse
s@DescribeChangeSetResponse' {} Maybe Bool
a -> DescribeChangeSetResponse
s {$sel:includeNestedStacks:DescribeChangeSetResponse' :: Maybe Bool
includeNestedStacks = Maybe Bool
a} :: DescribeChangeSetResponse)

-- | If the output exceeds 1 MB, a string that identifies the next page of
-- changes. If there is no additional page, this value is null.
describeChangeSetResponse_nextToken :: Lens.Lens' DescribeChangeSetResponse (Prelude.Maybe Prelude.Text)
describeChangeSetResponse_nextToken :: (Maybe Text -> f (Maybe Text))
-> DescribeChangeSetResponse -> f DescribeChangeSetResponse
describeChangeSetResponse_nextToken = (DescribeChangeSetResponse -> Maybe Text)
-> (DescribeChangeSetResponse
    -> Maybe Text -> DescribeChangeSetResponse)
-> Lens' DescribeChangeSetResponse (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeChangeSetResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeChangeSetResponse' :: DescribeChangeSetResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeChangeSetResponse
s@DescribeChangeSetResponse' {} Maybe Text
a -> DescribeChangeSetResponse
s {$sel:nextToken:DescribeChangeSetResponse' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeChangeSetResponse)

-- | Specifies the change set ID of the root change set in the current nested
-- change set hierarchy.
describeChangeSetResponse_rootChangeSetId :: Lens.Lens' DescribeChangeSetResponse (Prelude.Maybe Prelude.Text)
describeChangeSetResponse_rootChangeSetId :: (Maybe Text -> f (Maybe Text))
-> DescribeChangeSetResponse -> f DescribeChangeSetResponse
describeChangeSetResponse_rootChangeSetId = (DescribeChangeSetResponse -> Maybe Text)
-> (DescribeChangeSetResponse
    -> Maybe Text -> DescribeChangeSetResponse)
-> Lens' DescribeChangeSetResponse (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeChangeSetResponse' {Maybe Text
rootChangeSetId :: Maybe Text
$sel:rootChangeSetId:DescribeChangeSetResponse' :: DescribeChangeSetResponse -> Maybe Text
rootChangeSetId} -> Maybe Text
rootChangeSetId) (\s :: DescribeChangeSetResponse
s@DescribeChangeSetResponse' {} Maybe Text
a -> DescribeChangeSetResponse
s {$sel:rootChangeSetId:DescribeChangeSetResponse' :: Maybe Text
rootChangeSetId = Maybe Text
a} :: DescribeChangeSetResponse)

-- | A list of @Parameter@ structures that describes the input parameters and
-- their values used to create the change set. For more information, see
-- the
-- <https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_Parameter.html Parameter>
-- data type.
describeChangeSetResponse_parameters :: Lens.Lens' DescribeChangeSetResponse (Prelude.Maybe [Parameter])
describeChangeSetResponse_parameters :: (Maybe [Parameter] -> f (Maybe [Parameter]))
-> DescribeChangeSetResponse -> f DescribeChangeSetResponse
describeChangeSetResponse_parameters = (DescribeChangeSetResponse -> Maybe [Parameter])
-> (DescribeChangeSetResponse
    -> Maybe [Parameter] -> DescribeChangeSetResponse)
-> Lens
     DescribeChangeSetResponse
     DescribeChangeSetResponse
     (Maybe [Parameter])
     (Maybe [Parameter])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeChangeSetResponse' {Maybe [Parameter]
parameters :: Maybe [Parameter]
$sel:parameters:DescribeChangeSetResponse' :: DescribeChangeSetResponse -> Maybe [Parameter]
parameters} -> Maybe [Parameter]
parameters) (\s :: DescribeChangeSetResponse
s@DescribeChangeSetResponse' {} Maybe [Parameter]
a -> DescribeChangeSetResponse
s {$sel:parameters:DescribeChangeSetResponse' :: Maybe [Parameter]
parameters = Maybe [Parameter]
a} :: DescribeChangeSetResponse) ((Maybe [Parameter] -> f (Maybe [Parameter]))
 -> DescribeChangeSetResponse -> f DescribeChangeSetResponse)
-> ((Maybe [Parameter] -> f (Maybe [Parameter]))
    -> Maybe [Parameter] -> f (Maybe [Parameter]))
-> (Maybe [Parameter] -> f (Maybe [Parameter]))
-> DescribeChangeSetResponse
-> f DescribeChangeSetResponse
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Parameter] [Parameter] [Parameter] [Parameter]
-> Iso
     (Maybe [Parameter])
     (Maybe [Parameter])
     (Maybe [Parameter])
     (Maybe [Parameter])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso [Parameter] [Parameter] [Parameter] [Parameter]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | A description of the change set\'s status. For example, if your attempt
-- to create a change set failed, CloudFormation shows the error message.
describeChangeSetResponse_statusReason :: Lens.Lens' DescribeChangeSetResponse (Prelude.Maybe Prelude.Text)
describeChangeSetResponse_statusReason :: (Maybe Text -> f (Maybe Text))
-> DescribeChangeSetResponse -> f DescribeChangeSetResponse
describeChangeSetResponse_statusReason = (DescribeChangeSetResponse -> Maybe Text)
-> (DescribeChangeSetResponse
    -> Maybe Text -> DescribeChangeSetResponse)
-> Lens' DescribeChangeSetResponse (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeChangeSetResponse' {Maybe Text
statusReason :: Maybe Text
$sel:statusReason:DescribeChangeSetResponse' :: DescribeChangeSetResponse -> Maybe Text
statusReason} -> Maybe Text
statusReason) (\s :: DescribeChangeSetResponse
s@DescribeChangeSetResponse' {} Maybe Text
a -> DescribeChangeSetResponse
s {$sel:statusReason:DescribeChangeSetResponse' :: Maybe Text
statusReason = Maybe Text
a} :: DescribeChangeSetResponse)

-- | The ARN of the stack that is associated with the change set.
describeChangeSetResponse_stackId :: Lens.Lens' DescribeChangeSetResponse (Prelude.Maybe Prelude.Text)
describeChangeSetResponse_stackId :: (Maybe Text -> f (Maybe Text))
-> DescribeChangeSetResponse -> f DescribeChangeSetResponse
describeChangeSetResponse_stackId = (DescribeChangeSetResponse -> Maybe Text)
-> (DescribeChangeSetResponse
    -> Maybe Text -> DescribeChangeSetResponse)
-> Lens' DescribeChangeSetResponse (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeChangeSetResponse' {Maybe Text
stackId :: Maybe Text
$sel:stackId:DescribeChangeSetResponse' :: DescribeChangeSetResponse -> Maybe Text
stackId} -> Maybe Text
stackId) (\s :: DescribeChangeSetResponse
s@DescribeChangeSetResponse' {} Maybe Text
a -> DescribeChangeSetResponse
s {$sel:stackId:DescribeChangeSetResponse' :: Maybe Text
stackId = Maybe Text
a} :: DescribeChangeSetResponse)

-- | Information about the change set.
describeChangeSetResponse_description :: Lens.Lens' DescribeChangeSetResponse (Prelude.Maybe Prelude.Text)
describeChangeSetResponse_description :: (Maybe Text -> f (Maybe Text))
-> DescribeChangeSetResponse -> f DescribeChangeSetResponse
describeChangeSetResponse_description = (DescribeChangeSetResponse -> Maybe Text)
-> (DescribeChangeSetResponse
    -> Maybe Text -> DescribeChangeSetResponse)
-> Lens' DescribeChangeSetResponse (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeChangeSetResponse' {Maybe Text
description :: Maybe Text
$sel:description:DescribeChangeSetResponse' :: DescribeChangeSetResponse -> Maybe Text
description} -> Maybe Text
description) (\s :: DescribeChangeSetResponse
s@DescribeChangeSetResponse' {} Maybe Text
a -> DescribeChangeSetResponse
s {$sel:description:DescribeChangeSetResponse' :: Maybe Text
description = Maybe Text
a} :: DescribeChangeSetResponse)

-- | If you execute the change set, the list of capabilities that were
-- explicitly acknowledged when the change set was created.
describeChangeSetResponse_capabilities :: Lens.Lens' DescribeChangeSetResponse (Prelude.Maybe [Capability])
describeChangeSetResponse_capabilities :: (Maybe [Capability] -> f (Maybe [Capability]))
-> DescribeChangeSetResponse -> f DescribeChangeSetResponse
describeChangeSetResponse_capabilities = (DescribeChangeSetResponse -> Maybe [Capability])
-> (DescribeChangeSetResponse
    -> Maybe [Capability] -> DescribeChangeSetResponse)
-> Lens
     DescribeChangeSetResponse
     DescribeChangeSetResponse
     (Maybe [Capability])
     (Maybe [Capability])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeChangeSetResponse' {Maybe [Capability]
capabilities :: Maybe [Capability]
$sel:capabilities:DescribeChangeSetResponse' :: DescribeChangeSetResponse -> Maybe [Capability]
capabilities} -> Maybe [Capability]
capabilities) (\s :: DescribeChangeSetResponse
s@DescribeChangeSetResponse' {} Maybe [Capability]
a -> DescribeChangeSetResponse
s {$sel:capabilities:DescribeChangeSetResponse' :: Maybe [Capability]
capabilities = Maybe [Capability]
a} :: DescribeChangeSetResponse) ((Maybe [Capability] -> f (Maybe [Capability]))
 -> DescribeChangeSetResponse -> f DescribeChangeSetResponse)
-> ((Maybe [Capability] -> f (Maybe [Capability]))
    -> Maybe [Capability] -> f (Maybe [Capability]))
-> (Maybe [Capability] -> f (Maybe [Capability]))
-> DescribeChangeSetResponse
-> f DescribeChangeSetResponse
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Capability] [Capability] [Capability] [Capability]
-> Iso
     (Maybe [Capability])
     (Maybe [Capability])
     (Maybe [Capability])
     (Maybe [Capability])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso [Capability] [Capability] [Capability] [Capability]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The rollback triggers for CloudFormation to monitor during stack
-- creation and updating operations, and for the specified monitoring
-- period afterwards.
describeChangeSetResponse_rollbackConfiguration :: Lens.Lens' DescribeChangeSetResponse (Prelude.Maybe RollbackConfiguration)
describeChangeSetResponse_rollbackConfiguration :: (Maybe RollbackConfiguration -> f (Maybe RollbackConfiguration))
-> DescribeChangeSetResponse -> f DescribeChangeSetResponse
describeChangeSetResponse_rollbackConfiguration = (DescribeChangeSetResponse -> Maybe RollbackConfiguration)
-> (DescribeChangeSetResponse
    -> Maybe RollbackConfiguration -> DescribeChangeSetResponse)
-> Lens
     DescribeChangeSetResponse
     DescribeChangeSetResponse
     (Maybe RollbackConfiguration)
     (Maybe RollbackConfiguration)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeChangeSetResponse' {Maybe RollbackConfiguration
rollbackConfiguration :: Maybe RollbackConfiguration
$sel:rollbackConfiguration:DescribeChangeSetResponse' :: DescribeChangeSetResponse -> Maybe RollbackConfiguration
rollbackConfiguration} -> Maybe RollbackConfiguration
rollbackConfiguration) (\s :: DescribeChangeSetResponse
s@DescribeChangeSetResponse' {} Maybe RollbackConfiguration
a -> DescribeChangeSetResponse
s {$sel:rollbackConfiguration:DescribeChangeSetResponse' :: Maybe RollbackConfiguration
rollbackConfiguration = Maybe RollbackConfiguration
a} :: DescribeChangeSetResponse)

-- | If you execute the change set, the tags that will be associated with the
-- stack.
describeChangeSetResponse_tags :: Lens.Lens' DescribeChangeSetResponse (Prelude.Maybe [Tag])
describeChangeSetResponse_tags :: (Maybe [Tag] -> f (Maybe [Tag]))
-> DescribeChangeSetResponse -> f DescribeChangeSetResponse
describeChangeSetResponse_tags = (DescribeChangeSetResponse -> Maybe [Tag])
-> (DescribeChangeSetResponse
    -> Maybe [Tag] -> DescribeChangeSetResponse)
-> Lens
     DescribeChangeSetResponse
     DescribeChangeSetResponse
     (Maybe [Tag])
     (Maybe [Tag])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeChangeSetResponse' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:DescribeChangeSetResponse' :: DescribeChangeSetResponse -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: DescribeChangeSetResponse
s@DescribeChangeSetResponse' {} Maybe [Tag]
a -> DescribeChangeSetResponse
s {$sel:tags:DescribeChangeSetResponse' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: DescribeChangeSetResponse) ((Maybe [Tag] -> f (Maybe [Tag]))
 -> DescribeChangeSetResponse -> f DescribeChangeSetResponse)
-> ((Maybe [Tag] -> f (Maybe [Tag]))
    -> Maybe [Tag] -> f (Maybe [Tag]))
-> (Maybe [Tag] -> f (Maybe [Tag]))
-> DescribeChangeSetResponse
-> f DescribeChangeSetResponse
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Tag] [Tag] [Tag] [Tag]
-> Iso (Maybe [Tag]) (Maybe [Tag]) (Maybe [Tag]) (Maybe [Tag])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso [Tag] [Tag] [Tag] [Tag]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The name of the stack that is associated with the change set.
describeChangeSetResponse_stackName :: Lens.Lens' DescribeChangeSetResponse (Prelude.Maybe Prelude.Text)
describeChangeSetResponse_stackName :: (Maybe Text -> f (Maybe Text))
-> DescribeChangeSetResponse -> f DescribeChangeSetResponse
describeChangeSetResponse_stackName = (DescribeChangeSetResponse -> Maybe Text)
-> (DescribeChangeSetResponse
    -> Maybe Text -> DescribeChangeSetResponse)
-> Lens' DescribeChangeSetResponse (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeChangeSetResponse' {Maybe Text
stackName :: Maybe Text
$sel:stackName:DescribeChangeSetResponse' :: DescribeChangeSetResponse -> Maybe Text
stackName} -> Maybe Text
stackName) (\s :: DescribeChangeSetResponse
s@DescribeChangeSetResponse' {} Maybe Text
a -> DescribeChangeSetResponse
s {$sel:stackName:DescribeChangeSetResponse' :: Maybe Text
stackName = Maybe Text
a} :: DescribeChangeSetResponse)

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

-- | The current status of the change set, such as @CREATE_IN_PROGRESS@,
-- @CREATE_COMPLETE@, or @FAILED@.
describeChangeSetResponse_status :: Lens.Lens' DescribeChangeSetResponse ChangeSetStatus
describeChangeSetResponse_status :: (ChangeSetStatus -> f ChangeSetStatus)
-> DescribeChangeSetResponse -> f DescribeChangeSetResponse
describeChangeSetResponse_status = (DescribeChangeSetResponse -> ChangeSetStatus)
-> (DescribeChangeSetResponse
    -> ChangeSetStatus -> DescribeChangeSetResponse)
-> Lens
     DescribeChangeSetResponse
     DescribeChangeSetResponse
     ChangeSetStatus
     ChangeSetStatus
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeChangeSetResponse' {ChangeSetStatus
status :: ChangeSetStatus
$sel:status:DescribeChangeSetResponse' :: DescribeChangeSetResponse -> ChangeSetStatus
status} -> ChangeSetStatus
status) (\s :: DescribeChangeSetResponse
s@DescribeChangeSetResponse' {} ChangeSetStatus
a -> DescribeChangeSetResponse
s {$sel:status:DescribeChangeSetResponse' :: ChangeSetStatus
status = ChangeSetStatus
a} :: DescribeChangeSetResponse)

instance Prelude.NFData DescribeChangeSetResponse