{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.CloudFormation.Types.Stack
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.CloudFormation.Types.Stack where

import Amazonka.CloudFormation.Types.Capability
import Amazonka.CloudFormation.Types.Output
import Amazonka.CloudFormation.Types.Parameter
import Amazonka.CloudFormation.Types.RollbackConfiguration
import Amazonka.CloudFormation.Types.StackDriftInformation
import Amazonka.CloudFormation.Types.StackStatus
import Amazonka.CloudFormation.Types.Tag
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude

-- | The Stack data type.
--
-- /See:/ 'newStack' smart constructor.
data Stack = Stack'
  { -- | The capabilities allowed in the stack.
    Stack -> Maybe [Capability]
capabilities :: Prelude.Maybe [Capability],
    -- | The unique ID of the change set.
    Stack -> Maybe Text
changeSetId :: Prelude.Maybe Prelude.Text,
    -- | The time the stack was deleted.
    Stack -> Maybe ISO8601
deletionTime :: Prelude.Maybe Data.ISO8601,
    -- | A user-defined description associated with the stack.
    Stack -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | Boolean to enable or disable rollback on stack creation failures:
    --
    -- -   @true@: disable rollback.
    --
    -- -   @false@: enable rollback.
    Stack -> Maybe Bool
disableRollback :: Prelude.Maybe Prelude.Bool,
    -- | Information about whether a stack\'s actual configuration differs, or
    -- has /drifted/, from it\'s expected configuration, as defined in the
    -- stack template and any values specified as template parameters. For more
    -- information, see
    -- <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-stack-drift.html Detecting Unregulated Configuration Changes to Stacks and Resources>.
    Stack -> Maybe StackDriftInformation
driftInformation :: Prelude.Maybe StackDriftInformation,
    -- | Whether termination protection is enabled for the stack.
    --
    -- For
    -- <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-nested-stacks.html nested stacks>,
    -- termination protection is set on the root stack and can\'t be changed
    -- directly on the nested stack. For more information, see
    -- <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-protect-stacks.html Protecting a Stack From Being Deleted>
    -- in the /CloudFormation User Guide/.
    Stack -> Maybe Bool
enableTerminationProtection :: Prelude.Maybe Prelude.Bool,
    -- | The time the stack was last updated. This field will only be returned if
    -- the stack has been updated at least once.
    Stack -> Maybe ISO8601
lastUpdatedTime :: Prelude.Maybe Data.ISO8601,
    -- | Amazon SNS topic Amazon Resource Names (ARNs) to which stack related
    -- events are published.
    Stack -> Maybe [Text]
notificationARNs :: Prelude.Maybe [Prelude.Text],
    -- | A list of output structures.
    Stack -> Maybe [Output]
outputs :: Prelude.Maybe [Output],
    -- | A list of @Parameter@ structures.
    Stack -> Maybe [Parameter]
parameters :: Prelude.Maybe [Parameter],
    -- | For nested stacks--stacks created as resources for another stack--the
    -- stack ID of the direct parent of this stack. For the first level of
    -- nested stacks, the root stack is also the parent stack.
    --
    -- For more information, see
    -- <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-nested-stacks.html Working with Nested Stacks>
    -- in the /CloudFormation User Guide/.
    Stack -> Maybe Text
parentId :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Resource Name (ARN) of an Identity and Access Management
    -- (IAM) role that\'s associated with the stack. During a stack operation,
    -- CloudFormation uses this role\'s credentials to make calls on your
    -- behalf.
    Stack -> Maybe Text
roleARN :: Prelude.Maybe Prelude.Text,
    -- | The rollback triggers for CloudFormation to monitor during stack
    -- creation and updating operations, and for the specified monitoring
    -- period afterwards.
    Stack -> Maybe RollbackConfiguration
rollbackConfiguration :: Prelude.Maybe RollbackConfiguration,
    -- | For nested stacks--stacks created as resources for another stack--the
    -- stack ID of the top-level stack to which the nested stack ultimately
    -- belongs.
    --
    -- For more information, see
    -- <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-nested-stacks.html Working with Nested Stacks>
    -- in the /CloudFormation User Guide/.
    Stack -> Maybe Text
rootId :: Prelude.Maybe Prelude.Text,
    -- | Unique identifier of the stack.
    Stack -> Maybe Text
stackId :: Prelude.Maybe Prelude.Text,
    -- | Success\/failure message associated with the stack status.
    Stack -> Maybe Text
stackStatusReason :: Prelude.Maybe Prelude.Text,
    -- | A list of @Tag@s that specify information about the stack.
    Stack -> Maybe [Tag]
tags :: Prelude.Maybe [Tag],
    -- | The amount of time within which stack creation should complete.
    Stack -> Maybe Natural
timeoutInMinutes :: Prelude.Maybe Prelude.Natural,
    -- | The name associated with the stack.
    Stack -> Text
stackName :: Prelude.Text,
    -- | The time at which the stack was created.
    Stack -> ISO8601
creationTime :: Data.ISO8601,
    -- | Current status of the stack.
    Stack -> StackStatus
stackStatus :: StackStatus
  }
  deriving (Stack -> Stack -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Stack -> Stack -> Bool
$c/= :: Stack -> Stack -> Bool
== :: Stack -> Stack -> Bool
$c== :: Stack -> Stack -> Bool
Prelude.Eq, ReadPrec [Stack]
ReadPrec Stack
Int -> ReadS Stack
ReadS [Stack]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Stack]
$creadListPrec :: ReadPrec [Stack]
readPrec :: ReadPrec Stack
$creadPrec :: ReadPrec Stack
readList :: ReadS [Stack]
$creadList :: ReadS [Stack]
readsPrec :: Int -> ReadS Stack
$creadsPrec :: Int -> ReadS Stack
Prelude.Read, Int -> Stack -> ShowS
[Stack] -> ShowS
Stack -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Stack] -> ShowS
$cshowList :: [Stack] -> ShowS
show :: Stack -> String
$cshow :: Stack -> String
showsPrec :: Int -> Stack -> ShowS
$cshowsPrec :: Int -> Stack -> ShowS
Prelude.Show, forall x. Rep Stack x -> Stack
forall x. Stack -> Rep Stack x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Stack x -> Stack
$cfrom :: forall x. Stack -> Rep Stack x
Prelude.Generic)

-- |
-- Create a value of 'Stack' 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:
--
-- 'capabilities', 'stack_capabilities' - The capabilities allowed in the stack.
--
-- 'changeSetId', 'stack_changeSetId' - The unique ID of the change set.
--
-- 'deletionTime', 'stack_deletionTime' - The time the stack was deleted.
--
-- 'description', 'stack_description' - A user-defined description associated with the stack.
--
-- 'disableRollback', 'stack_disableRollback' - Boolean to enable or disable rollback on stack creation failures:
--
-- -   @true@: disable rollback.
--
-- -   @false@: enable rollback.
--
-- 'driftInformation', 'stack_driftInformation' - Information about whether a stack\'s actual configuration differs, or
-- has /drifted/, from it\'s expected configuration, as defined in the
-- stack template and any values specified as template parameters. For more
-- information, see
-- <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-stack-drift.html Detecting Unregulated Configuration Changes to Stacks and Resources>.
--
-- 'enableTerminationProtection', 'stack_enableTerminationProtection' - Whether termination protection is enabled for the stack.
--
-- For
-- <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-nested-stacks.html nested stacks>,
-- termination protection is set on the root stack and can\'t be changed
-- directly on the nested stack. For more information, see
-- <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-protect-stacks.html Protecting a Stack From Being Deleted>
-- in the /CloudFormation User Guide/.
--
-- 'lastUpdatedTime', 'stack_lastUpdatedTime' - The time the stack was last updated. This field will only be returned if
-- the stack has been updated at least once.
--
-- 'notificationARNs', 'stack_notificationARNs' - Amazon SNS topic Amazon Resource Names (ARNs) to which stack related
-- events are published.
--
-- 'outputs', 'stack_outputs' - A list of output structures.
--
-- 'parameters', 'stack_parameters' - A list of @Parameter@ structures.
--
-- 'parentId', 'stack_parentId' - For nested stacks--stacks created as resources for another stack--the
-- stack ID of the direct parent of this stack. For the first level of
-- nested stacks, the root stack is also the parent stack.
--
-- For more information, see
-- <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-nested-stacks.html Working with Nested Stacks>
-- in the /CloudFormation User Guide/.
--
-- 'roleARN', 'stack_roleARN' - The Amazon Resource Name (ARN) of an Identity and Access Management
-- (IAM) role that\'s associated with the stack. During a stack operation,
-- CloudFormation uses this role\'s credentials to make calls on your
-- behalf.
--
-- 'rollbackConfiguration', 'stack_rollbackConfiguration' - The rollback triggers for CloudFormation to monitor during stack
-- creation and updating operations, and for the specified monitoring
-- period afterwards.
--
-- 'rootId', 'stack_rootId' - For nested stacks--stacks created as resources for another stack--the
-- stack ID of the top-level stack to which the nested stack ultimately
-- belongs.
--
-- For more information, see
-- <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-nested-stacks.html Working with Nested Stacks>
-- in the /CloudFormation User Guide/.
--
-- 'stackId', 'stack_stackId' - Unique identifier of the stack.
--
-- 'stackStatusReason', 'stack_stackStatusReason' - Success\/failure message associated with the stack status.
--
-- 'tags', 'stack_tags' - A list of @Tag@s that specify information about the stack.
--
-- 'timeoutInMinutes', 'stack_timeoutInMinutes' - The amount of time within which stack creation should complete.
--
-- 'stackName', 'stack_stackName' - The name associated with the stack.
--
-- 'creationTime', 'stack_creationTime' - The time at which the stack was created.
--
-- 'stackStatus', 'stack_stackStatus' - Current status of the stack.
newStack ::
  -- | 'stackName'
  Prelude.Text ->
  -- | 'creationTime'
  Prelude.UTCTime ->
  -- | 'stackStatus'
  StackStatus ->
  Stack
newStack :: Text -> UTCTime -> StackStatus -> Stack
newStack Text
pStackName_ UTCTime
pCreationTime_ StackStatus
pStackStatus_ =
  Stack'
    { $sel:capabilities:Stack' :: Maybe [Capability]
capabilities = forall a. Maybe a
Prelude.Nothing,
      $sel:changeSetId:Stack' :: Maybe Text
changeSetId = forall a. Maybe a
Prelude.Nothing,
      $sel:deletionTime:Stack' :: Maybe ISO8601
deletionTime = forall a. Maybe a
Prelude.Nothing,
      $sel:description:Stack' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:disableRollback:Stack' :: Maybe Bool
disableRollback = forall a. Maybe a
Prelude.Nothing,
      $sel:driftInformation:Stack' :: Maybe StackDriftInformation
driftInformation = forall a. Maybe a
Prelude.Nothing,
      $sel:enableTerminationProtection:Stack' :: Maybe Bool
enableTerminationProtection = forall a. Maybe a
Prelude.Nothing,
      $sel:lastUpdatedTime:Stack' :: Maybe ISO8601
lastUpdatedTime = forall a. Maybe a
Prelude.Nothing,
      $sel:notificationARNs:Stack' :: Maybe [Text]
notificationARNs = forall a. Maybe a
Prelude.Nothing,
      $sel:outputs:Stack' :: Maybe [Output]
outputs = forall a. Maybe a
Prelude.Nothing,
      $sel:parameters:Stack' :: Maybe [Parameter]
parameters = forall a. Maybe a
Prelude.Nothing,
      $sel:parentId:Stack' :: Maybe Text
parentId = forall a. Maybe a
Prelude.Nothing,
      $sel:roleARN:Stack' :: Maybe Text
roleARN = forall a. Maybe a
Prelude.Nothing,
      $sel:rollbackConfiguration:Stack' :: Maybe RollbackConfiguration
rollbackConfiguration = forall a. Maybe a
Prelude.Nothing,
      $sel:rootId:Stack' :: Maybe Text
rootId = forall a. Maybe a
Prelude.Nothing,
      $sel:stackId:Stack' :: Maybe Text
stackId = forall a. Maybe a
Prelude.Nothing,
      $sel:stackStatusReason:Stack' :: Maybe Text
stackStatusReason = forall a. Maybe a
Prelude.Nothing,
      $sel:tags:Stack' :: Maybe [Tag]
tags = forall a. Maybe a
Prelude.Nothing,
      $sel:timeoutInMinutes:Stack' :: Maybe Natural
timeoutInMinutes = forall a. Maybe a
Prelude.Nothing,
      $sel:stackName:Stack' :: Text
stackName = Text
pStackName_,
      $sel:creationTime:Stack' :: ISO8601
creationTime = forall (a :: Format). Iso' (Time a) UTCTime
Data._Time forall t b. AReview t b -> b -> t
Lens.# UTCTime
pCreationTime_,
      $sel:stackStatus:Stack' :: StackStatus
stackStatus = StackStatus
pStackStatus_
    }

-- | The capabilities allowed in the stack.
stack_capabilities :: Lens.Lens' Stack (Prelude.Maybe [Capability])
stack_capabilities :: Lens' Stack (Maybe [Capability])
stack_capabilities = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe [Capability]
capabilities :: Maybe [Capability]
$sel:capabilities:Stack' :: Stack -> Maybe [Capability]
capabilities} -> Maybe [Capability]
capabilities) (\s :: Stack
s@Stack' {} Maybe [Capability]
a -> Stack
s {$sel:capabilities:Stack' :: Maybe [Capability]
capabilities = Maybe [Capability]
a} :: Stack) 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 unique ID of the change set.
stack_changeSetId :: Lens.Lens' Stack (Prelude.Maybe Prelude.Text)
stack_changeSetId :: Lens' Stack (Maybe Text)
stack_changeSetId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe Text
changeSetId :: Maybe Text
$sel:changeSetId:Stack' :: Stack -> Maybe Text
changeSetId} -> Maybe Text
changeSetId) (\s :: Stack
s@Stack' {} Maybe Text
a -> Stack
s {$sel:changeSetId:Stack' :: Maybe Text
changeSetId = Maybe Text
a} :: Stack)

-- | The time the stack was deleted.
stack_deletionTime :: Lens.Lens' Stack (Prelude.Maybe Prelude.UTCTime)
stack_deletionTime :: Lens' Stack (Maybe UTCTime)
stack_deletionTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe ISO8601
deletionTime :: Maybe ISO8601
$sel:deletionTime:Stack' :: Stack -> Maybe ISO8601
deletionTime} -> Maybe ISO8601
deletionTime) (\s :: Stack
s@Stack' {} Maybe ISO8601
a -> Stack
s {$sel:deletionTime:Stack' :: Maybe ISO8601
deletionTime = Maybe ISO8601
a} :: Stack) 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 (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | A user-defined description associated with the stack.
stack_description :: Lens.Lens' Stack (Prelude.Maybe Prelude.Text)
stack_description :: Lens' Stack (Maybe Text)
stack_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe Text
description :: Maybe Text
$sel:description:Stack' :: Stack -> Maybe Text
description} -> Maybe Text
description) (\s :: Stack
s@Stack' {} Maybe Text
a -> Stack
s {$sel:description:Stack' :: Maybe Text
description = Maybe Text
a} :: Stack)

-- | Boolean to enable or disable rollback on stack creation failures:
--
-- -   @true@: disable rollback.
--
-- -   @false@: enable rollback.
stack_disableRollback :: Lens.Lens' Stack (Prelude.Maybe Prelude.Bool)
stack_disableRollback :: Lens' Stack (Maybe Bool)
stack_disableRollback = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe Bool
disableRollback :: Maybe Bool
$sel:disableRollback:Stack' :: Stack -> Maybe Bool
disableRollback} -> Maybe Bool
disableRollback) (\s :: Stack
s@Stack' {} Maybe Bool
a -> Stack
s {$sel:disableRollback:Stack' :: Maybe Bool
disableRollback = Maybe Bool
a} :: Stack)

-- | Information about whether a stack\'s actual configuration differs, or
-- has /drifted/, from it\'s expected configuration, as defined in the
-- stack template and any values specified as template parameters. For more
-- information, see
-- <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-stack-drift.html Detecting Unregulated Configuration Changes to Stacks and Resources>.
stack_driftInformation :: Lens.Lens' Stack (Prelude.Maybe StackDriftInformation)
stack_driftInformation :: Lens' Stack (Maybe StackDriftInformation)
stack_driftInformation = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe StackDriftInformation
driftInformation :: Maybe StackDriftInformation
$sel:driftInformation:Stack' :: Stack -> Maybe StackDriftInformation
driftInformation} -> Maybe StackDriftInformation
driftInformation) (\s :: Stack
s@Stack' {} Maybe StackDriftInformation
a -> Stack
s {$sel:driftInformation:Stack' :: Maybe StackDriftInformation
driftInformation = Maybe StackDriftInformation
a} :: Stack)

-- | Whether termination protection is enabled for the stack.
--
-- For
-- <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-nested-stacks.html nested stacks>,
-- termination protection is set on the root stack and can\'t be changed
-- directly on the nested stack. For more information, see
-- <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-protect-stacks.html Protecting a Stack From Being Deleted>
-- in the /CloudFormation User Guide/.
stack_enableTerminationProtection :: Lens.Lens' Stack (Prelude.Maybe Prelude.Bool)
stack_enableTerminationProtection :: Lens' Stack (Maybe Bool)
stack_enableTerminationProtection = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe Bool
enableTerminationProtection :: Maybe Bool
$sel:enableTerminationProtection:Stack' :: Stack -> Maybe Bool
enableTerminationProtection} -> Maybe Bool
enableTerminationProtection) (\s :: Stack
s@Stack' {} Maybe Bool
a -> Stack
s {$sel:enableTerminationProtection:Stack' :: Maybe Bool
enableTerminationProtection = Maybe Bool
a} :: Stack)

-- | The time the stack was last updated. This field will only be returned if
-- the stack has been updated at least once.
stack_lastUpdatedTime :: Lens.Lens' Stack (Prelude.Maybe Prelude.UTCTime)
stack_lastUpdatedTime :: Lens' Stack (Maybe UTCTime)
stack_lastUpdatedTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe ISO8601
lastUpdatedTime :: Maybe ISO8601
$sel:lastUpdatedTime:Stack' :: Stack -> Maybe ISO8601
lastUpdatedTime} -> Maybe ISO8601
lastUpdatedTime) (\s :: Stack
s@Stack' {} Maybe ISO8601
a -> Stack
s {$sel:lastUpdatedTime:Stack' :: Maybe ISO8601
lastUpdatedTime = Maybe ISO8601
a} :: Stack) 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 (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | Amazon SNS topic Amazon Resource Names (ARNs) to which stack related
-- events are published.
stack_notificationARNs :: Lens.Lens' Stack (Prelude.Maybe [Prelude.Text])
stack_notificationARNs :: Lens' Stack (Maybe [Text])
stack_notificationARNs = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe [Text]
notificationARNs :: Maybe [Text]
$sel:notificationARNs:Stack' :: Stack -> Maybe [Text]
notificationARNs} -> Maybe [Text]
notificationARNs) (\s :: Stack
s@Stack' {} Maybe [Text]
a -> Stack
s {$sel:notificationARNs:Stack' :: Maybe [Text]
notificationARNs = Maybe [Text]
a} :: Stack) 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

-- | A list of output structures.
stack_outputs :: Lens.Lens' Stack (Prelude.Maybe [Output])
stack_outputs :: Lens' Stack (Maybe [Output])
stack_outputs = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe [Output]
outputs :: Maybe [Output]
$sel:outputs:Stack' :: Stack -> Maybe [Output]
outputs} -> Maybe [Output]
outputs) (\s :: Stack
s@Stack' {} Maybe [Output]
a -> Stack
s {$sel:outputs:Stack' :: Maybe [Output]
outputs = Maybe [Output]
a} :: Stack) 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

-- | A list of @Parameter@ structures.
stack_parameters :: Lens.Lens' Stack (Prelude.Maybe [Parameter])
stack_parameters :: Lens' Stack (Maybe [Parameter])
stack_parameters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe [Parameter]
parameters :: Maybe [Parameter]
$sel:parameters:Stack' :: Stack -> Maybe [Parameter]
parameters} -> Maybe [Parameter]
parameters) (\s :: Stack
s@Stack' {} Maybe [Parameter]
a -> Stack
s {$sel:parameters:Stack' :: Maybe [Parameter]
parameters = Maybe [Parameter]
a} :: Stack) 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

-- | For nested stacks--stacks created as resources for another stack--the
-- stack ID of the direct parent of this stack. For the first level of
-- nested stacks, the root stack is also the parent stack.
--
-- For more information, see
-- <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-nested-stacks.html Working with Nested Stacks>
-- in the /CloudFormation User Guide/.
stack_parentId :: Lens.Lens' Stack (Prelude.Maybe Prelude.Text)
stack_parentId :: Lens' Stack (Maybe Text)
stack_parentId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe Text
parentId :: Maybe Text
$sel:parentId:Stack' :: Stack -> Maybe Text
parentId} -> Maybe Text
parentId) (\s :: Stack
s@Stack' {} Maybe Text
a -> Stack
s {$sel:parentId:Stack' :: Maybe Text
parentId = Maybe Text
a} :: Stack)

-- | The Amazon Resource Name (ARN) of an Identity and Access Management
-- (IAM) role that\'s associated with the stack. During a stack operation,
-- CloudFormation uses this role\'s credentials to make calls on your
-- behalf.
stack_roleARN :: Lens.Lens' Stack (Prelude.Maybe Prelude.Text)
stack_roleARN :: Lens' Stack (Maybe Text)
stack_roleARN = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe Text
roleARN :: Maybe Text
$sel:roleARN:Stack' :: Stack -> Maybe Text
roleARN} -> Maybe Text
roleARN) (\s :: Stack
s@Stack' {} Maybe Text
a -> Stack
s {$sel:roleARN:Stack' :: Maybe Text
roleARN = Maybe Text
a} :: Stack)

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

-- | For nested stacks--stacks created as resources for another stack--the
-- stack ID of the top-level stack to which the nested stack ultimately
-- belongs.
--
-- For more information, see
-- <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-nested-stacks.html Working with Nested Stacks>
-- in the /CloudFormation User Guide/.
stack_rootId :: Lens.Lens' Stack (Prelude.Maybe Prelude.Text)
stack_rootId :: Lens' Stack (Maybe Text)
stack_rootId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe Text
rootId :: Maybe Text
$sel:rootId:Stack' :: Stack -> Maybe Text
rootId} -> Maybe Text
rootId) (\s :: Stack
s@Stack' {} Maybe Text
a -> Stack
s {$sel:rootId:Stack' :: Maybe Text
rootId = Maybe Text
a} :: Stack)

-- | Unique identifier of the stack.
stack_stackId :: Lens.Lens' Stack (Prelude.Maybe Prelude.Text)
stack_stackId :: Lens' Stack (Maybe Text)
stack_stackId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe Text
stackId :: Maybe Text
$sel:stackId:Stack' :: Stack -> Maybe Text
stackId} -> Maybe Text
stackId) (\s :: Stack
s@Stack' {} Maybe Text
a -> Stack
s {$sel:stackId:Stack' :: Maybe Text
stackId = Maybe Text
a} :: Stack)

-- | Success\/failure message associated with the stack status.
stack_stackStatusReason :: Lens.Lens' Stack (Prelude.Maybe Prelude.Text)
stack_stackStatusReason :: Lens' Stack (Maybe Text)
stack_stackStatusReason = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe Text
stackStatusReason :: Maybe Text
$sel:stackStatusReason:Stack' :: Stack -> Maybe Text
stackStatusReason} -> Maybe Text
stackStatusReason) (\s :: Stack
s@Stack' {} Maybe Text
a -> Stack
s {$sel:stackStatusReason:Stack' :: Maybe Text
stackStatusReason = Maybe Text
a} :: Stack)

-- | A list of @Tag@s that specify information about the stack.
stack_tags :: Lens.Lens' Stack (Prelude.Maybe [Tag])
stack_tags :: Lens' Stack (Maybe [Tag])
stack_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:Stack' :: Stack -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: Stack
s@Stack' {} Maybe [Tag]
a -> Stack
s {$sel:tags:Stack' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: Stack) 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 amount of time within which stack creation should complete.
stack_timeoutInMinutes :: Lens.Lens' Stack (Prelude.Maybe Prelude.Natural)
stack_timeoutInMinutes :: Lens' Stack (Maybe Natural)
stack_timeoutInMinutes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe Natural
timeoutInMinutes :: Maybe Natural
$sel:timeoutInMinutes:Stack' :: Stack -> Maybe Natural
timeoutInMinutes} -> Maybe Natural
timeoutInMinutes) (\s :: Stack
s@Stack' {} Maybe Natural
a -> Stack
s {$sel:timeoutInMinutes:Stack' :: Maybe Natural
timeoutInMinutes = Maybe Natural
a} :: Stack)

-- | The name associated with the stack.
stack_stackName :: Lens.Lens' Stack Prelude.Text
stack_stackName :: Lens' Stack Text
stack_stackName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Text
stackName :: Text
$sel:stackName:Stack' :: Stack -> Text
stackName} -> Text
stackName) (\s :: Stack
s@Stack' {} Text
a -> Stack
s {$sel:stackName:Stack' :: Text
stackName = Text
a} :: Stack)

-- | The time at which the stack was created.
stack_creationTime :: Lens.Lens' Stack Prelude.UTCTime
stack_creationTime :: Lens' Stack UTCTime
stack_creationTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {ISO8601
creationTime :: ISO8601
$sel:creationTime:Stack' :: Stack -> ISO8601
creationTime} -> ISO8601
creationTime) (\s :: Stack
s@Stack' {} ISO8601
a -> Stack
s {$sel:creationTime:Stack' :: ISO8601
creationTime = ISO8601
a} :: Stack) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | Current status of the stack.
stack_stackStatus :: Lens.Lens' Stack StackStatus
stack_stackStatus :: Lens' Stack StackStatus
stack_stackStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {StackStatus
stackStatus :: StackStatus
$sel:stackStatus:Stack' :: Stack -> StackStatus
stackStatus} -> StackStatus
stackStatus) (\s :: Stack
s@Stack' {} StackStatus
a -> Stack
s {$sel:stackStatus:Stack' :: StackStatus
stackStatus = StackStatus
a} :: Stack)

instance Data.FromXML Stack where
  parseXML :: [Node] -> Either String Stack
parseXML [Node]
x =
    Maybe [Capability]
-> Maybe Text
-> Maybe ISO8601
-> Maybe Text
-> Maybe Bool
-> Maybe StackDriftInformation
-> Maybe Bool
-> Maybe ISO8601
-> Maybe [Text]
-> Maybe [Output]
-> Maybe [Parameter]
-> Maybe Text
-> Maybe Text
-> Maybe RollbackConfiguration
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe [Tag]
-> Maybe Natural
-> Text
-> ISO8601
-> StackStatus
-> Stack
Stack'
      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
"Capabilities"
                      forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                      forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"member")
                  )
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ChangeSetId")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"DeletionTime")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"Description")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"DisableRollback")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"DriftInformation")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"EnableTerminationProtection")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"LastUpdatedTime")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                      forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"NotificationARNs"
                      forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                      forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"member")
                  )
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                      forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"Outputs"
                      forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                      forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"member")
                  )
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                      forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"Parameters"
                      forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                      forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"member")
                  )
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ParentId")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"RoleARN")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"RollbackConfiguration")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"RootId")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"StackId")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"StackStatusReason")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                      forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"Tags"
                      forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                      forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"member")
                  )
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"TimeoutInMinutes")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String a
Data..@ Text
"StackName")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String a
Data..@ Text
"CreationTime")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String a
Data..@ Text
"StackStatus")

instance Prelude.Hashable Stack where
  hashWithSalt :: Int -> Stack -> Int
hashWithSalt Int
_salt Stack' {Maybe Bool
Maybe Natural
Maybe [Text]
Maybe [Capability]
Maybe [Output]
Maybe [Parameter]
Maybe [Tag]
Maybe Text
Maybe ISO8601
Maybe RollbackConfiguration
Maybe StackDriftInformation
Text
ISO8601
StackStatus
stackStatus :: StackStatus
creationTime :: ISO8601
stackName :: Text
timeoutInMinutes :: Maybe Natural
tags :: Maybe [Tag]
stackStatusReason :: Maybe Text
stackId :: Maybe Text
rootId :: Maybe Text
rollbackConfiguration :: Maybe RollbackConfiguration
roleARN :: Maybe Text
parentId :: Maybe Text
parameters :: Maybe [Parameter]
outputs :: Maybe [Output]
notificationARNs :: Maybe [Text]
lastUpdatedTime :: Maybe ISO8601
enableTerminationProtection :: Maybe Bool
driftInformation :: Maybe StackDriftInformation
disableRollback :: Maybe Bool
description :: Maybe Text
deletionTime :: Maybe ISO8601
changeSetId :: Maybe Text
capabilities :: Maybe [Capability]
$sel:stackStatus:Stack' :: Stack -> StackStatus
$sel:creationTime:Stack' :: Stack -> ISO8601
$sel:stackName:Stack' :: Stack -> Text
$sel:timeoutInMinutes:Stack' :: Stack -> Maybe Natural
$sel:tags:Stack' :: Stack -> Maybe [Tag]
$sel:stackStatusReason:Stack' :: Stack -> Maybe Text
$sel:stackId:Stack' :: Stack -> Maybe Text
$sel:rootId:Stack' :: Stack -> Maybe Text
$sel:rollbackConfiguration:Stack' :: Stack -> Maybe RollbackConfiguration
$sel:roleARN:Stack' :: Stack -> Maybe Text
$sel:parentId:Stack' :: Stack -> Maybe Text
$sel:parameters:Stack' :: Stack -> Maybe [Parameter]
$sel:outputs:Stack' :: Stack -> Maybe [Output]
$sel:notificationARNs:Stack' :: Stack -> Maybe [Text]
$sel:lastUpdatedTime:Stack' :: Stack -> Maybe ISO8601
$sel:enableTerminationProtection:Stack' :: Stack -> Maybe Bool
$sel:driftInformation:Stack' :: Stack -> Maybe StackDriftInformation
$sel:disableRollback:Stack' :: Stack -> Maybe Bool
$sel:description:Stack' :: Stack -> Maybe Text
$sel:deletionTime:Stack' :: Stack -> Maybe ISO8601
$sel:changeSetId:Stack' :: Stack -> Maybe Text
$sel:capabilities:Stack' :: Stack -> Maybe [Capability]
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Capability]
capabilities
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
changeSetId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ISO8601
deletionTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
disableRollback
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe StackDriftInformation
driftInformation
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
enableTerminationProtection
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ISO8601
lastUpdatedTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
notificationARNs
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Output]
outputs
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Parameter]
parameters
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
parentId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
roleARN
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RollbackConfiguration
rollbackConfiguration
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
rootId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
stackId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
stackStatusReason
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Tag]
tags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
timeoutInMinutes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
stackName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` ISO8601
creationTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` StackStatus
stackStatus

instance Prelude.NFData Stack where
  rnf :: Stack -> ()
rnf Stack' {Maybe Bool
Maybe Natural
Maybe [Text]
Maybe [Capability]
Maybe [Output]
Maybe [Parameter]
Maybe [Tag]
Maybe Text
Maybe ISO8601
Maybe RollbackConfiguration
Maybe StackDriftInformation
Text
ISO8601
StackStatus
stackStatus :: StackStatus
creationTime :: ISO8601
stackName :: Text
timeoutInMinutes :: Maybe Natural
tags :: Maybe [Tag]
stackStatusReason :: Maybe Text
stackId :: Maybe Text
rootId :: Maybe Text
rollbackConfiguration :: Maybe RollbackConfiguration
roleARN :: Maybe Text
parentId :: Maybe Text
parameters :: Maybe [Parameter]
outputs :: Maybe [Output]
notificationARNs :: Maybe [Text]
lastUpdatedTime :: Maybe ISO8601
enableTerminationProtection :: Maybe Bool
driftInformation :: Maybe StackDriftInformation
disableRollback :: Maybe Bool
description :: Maybe Text
deletionTime :: Maybe ISO8601
changeSetId :: Maybe Text
capabilities :: Maybe [Capability]
$sel:stackStatus:Stack' :: Stack -> StackStatus
$sel:creationTime:Stack' :: Stack -> ISO8601
$sel:stackName:Stack' :: Stack -> Text
$sel:timeoutInMinutes:Stack' :: Stack -> Maybe Natural
$sel:tags:Stack' :: Stack -> Maybe [Tag]
$sel:stackStatusReason:Stack' :: Stack -> Maybe Text
$sel:stackId:Stack' :: Stack -> Maybe Text
$sel:rootId:Stack' :: Stack -> Maybe Text
$sel:rollbackConfiguration:Stack' :: Stack -> Maybe RollbackConfiguration
$sel:roleARN:Stack' :: Stack -> Maybe Text
$sel:parentId:Stack' :: Stack -> Maybe Text
$sel:parameters:Stack' :: Stack -> Maybe [Parameter]
$sel:outputs:Stack' :: Stack -> Maybe [Output]
$sel:notificationARNs:Stack' :: Stack -> Maybe [Text]
$sel:lastUpdatedTime:Stack' :: Stack -> Maybe ISO8601
$sel:enableTerminationProtection:Stack' :: Stack -> Maybe Bool
$sel:driftInformation:Stack' :: Stack -> Maybe StackDriftInformation
$sel:disableRollback:Stack' :: Stack -> Maybe Bool
$sel:description:Stack' :: Stack -> Maybe Text
$sel:deletionTime:Stack' :: Stack -> Maybe ISO8601
$sel:changeSetId:Stack' :: Stack -> Maybe Text
$sel:capabilities:Stack' :: Stack -> Maybe [Capability]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [Capability]
capabilities
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
changeSetId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
deletionTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
disableRollback
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe StackDriftInformation
driftInformation
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
enableTerminationProtection
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
lastUpdatedTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
notificationARNs
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Output]
outputs
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Parameter]
parameters
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
parentId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
roleARN
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RollbackConfiguration
rollbackConfiguration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
rootId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
stackId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
stackStatusReason
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Tag]
tags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
timeoutInMinutes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
stackName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf ISO8601
creationTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf StackStatus
stackStatus