{-# 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.OpsWorks.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.OpsWorks.Types.Stack where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.OpsWorks.Types.ChefConfiguration
import Amazonka.OpsWorks.Types.RootDeviceType
import Amazonka.OpsWorks.Types.Source
import Amazonka.OpsWorks.Types.StackAttributesKeys
import Amazonka.OpsWorks.Types.StackConfigurationManager
import qualified Amazonka.Prelude as Prelude

-- | Describes a stack.
--
-- /See:/ 'newStack' smart constructor.
data Stack = Stack'
  { -- | The agent version. This parameter is set to @LATEST@ for auto-update. or
    -- a version number for a fixed agent version.
    Stack -> Maybe Text
agentVersion :: Prelude.Maybe Prelude.Text,
    -- | The stack\'s ARN.
    Stack -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | The stack\'s attributes.
    Stack -> Maybe (HashMap StackAttributesKeys (Maybe Text))
attributes :: Prelude.Maybe (Prelude.HashMap StackAttributesKeys (Prelude.Maybe Prelude.Text)),
    -- | A @ChefConfiguration@ object that specifies whether to enable Berkshelf
    -- and the Berkshelf version. For more information, see
    -- <https://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html Create a New Stack>.
    Stack -> Maybe ChefConfiguration
chefConfiguration :: Prelude.Maybe ChefConfiguration,
    -- | The configuration manager.
    Stack -> Maybe StackConfigurationManager
configurationManager :: Prelude.Maybe StackConfigurationManager,
    -- | The date when the stack was created.
    Stack -> Maybe Text
createdAt :: Prelude.Maybe Prelude.Text,
    -- | Contains the information required to retrieve an app or cookbook from a
    -- repository. For more information, see
    -- <https://docs.aws.amazon.com/opsworks/latest/userguide/workingapps-creating.html Adding Apps>
    -- or
    -- <https://docs.aws.amazon.com/opsworks/latest/userguide/workingcookbook.html Cookbooks and Recipes>.
    Stack -> Maybe Source
customCookbooksSource :: Prelude.Maybe Source,
    -- | A JSON object that contains user-defined attributes to be added to the
    -- stack configuration and deployment attributes. You can use custom JSON
    -- to override the corresponding default stack configuration attribute
    -- values or to pass data to recipes. The string should be in the following
    -- format:
    --
    -- @\"{\\\"key1\\\": \\\"value1\\\", \\\"key2\\\": \\\"value2\\\",...}\"@
    --
    -- For more information on custom JSON, see
    -- <https://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-json.html Use Custom JSON to Modify the Stack Configuration Attributes>.
    Stack -> Maybe Text
customJson :: Prelude.Maybe Prelude.Text,
    -- | The stack\'s default Availability Zone. For more information, see
    -- <https://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints>.
    Stack -> Maybe Text
defaultAvailabilityZone :: Prelude.Maybe Prelude.Text,
    -- | The ARN of an IAM profile that is the default profile for all of the
    -- stack\'s EC2 instances. For more information about IAM ARNs, see
    -- <https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers>.
    Stack -> Maybe Text
defaultInstanceProfileArn :: Prelude.Maybe Prelude.Text,
    -- | The stack\'s default operating system.
    Stack -> Maybe Text
defaultOs :: Prelude.Maybe Prelude.Text,
    -- | The default root device type. This value is used by default for all
    -- instances in the stack, but you can override it when you create an
    -- instance. For more information, see
    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device Storage for the Root Device>.
    Stack -> Maybe RootDeviceType
defaultRootDeviceType :: Prelude.Maybe RootDeviceType,
    -- | A default Amazon EC2 key pair for the stack\'s instances. You can
    -- override this value when you create or update an instance.
    Stack -> Maybe Text
defaultSshKeyName :: Prelude.Maybe Prelude.Text,
    -- | The default subnet ID; applicable only if the stack is running in a VPC.
    Stack -> Maybe Text
defaultSubnetId :: Prelude.Maybe Prelude.Text,
    -- | The stack host name theme, with spaces replaced by underscores.
    Stack -> Maybe Text
hostnameTheme :: Prelude.Maybe Prelude.Text,
    -- | The stack name.
    Stack -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | The stack AWS region, such as \"ap-northeast-2\". For more information
    -- about AWS regions, see
    -- <https://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints>.
    Stack -> Maybe Text
region :: Prelude.Maybe Prelude.Text,
    -- | The stack AWS Identity and Access Management (IAM) role.
    Stack -> Maybe Text
serviceRoleArn :: Prelude.Maybe Prelude.Text,
    -- | The stack ID.
    Stack -> Maybe Text
stackId :: Prelude.Maybe Prelude.Text,
    -- | Whether the stack uses custom cookbooks.
    Stack -> Maybe Bool
useCustomCookbooks :: Prelude.Maybe Prelude.Bool,
    -- | Whether the stack automatically associates the AWS OpsWorks Stacks
    -- built-in security groups with the stack\'s layers.
    Stack -> Maybe Bool
useOpsworksSecurityGroups :: Prelude.Maybe Prelude.Bool,
    -- | The VPC ID; applicable only if the stack is running in a VPC.
    Stack -> Maybe Text
vpcId :: Prelude.Maybe Prelude.Text
  }
  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:
--
-- 'agentVersion', 'stack_agentVersion' - The agent version. This parameter is set to @LATEST@ for auto-update. or
-- a version number for a fixed agent version.
--
-- 'arn', 'stack_arn' - The stack\'s ARN.
--
-- 'attributes', 'stack_attributes' - The stack\'s attributes.
--
-- 'chefConfiguration', 'stack_chefConfiguration' - A @ChefConfiguration@ object that specifies whether to enable Berkshelf
-- and the Berkshelf version. For more information, see
-- <https://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html Create a New Stack>.
--
-- 'configurationManager', 'stack_configurationManager' - The configuration manager.
--
-- 'createdAt', 'stack_createdAt' - The date when the stack was created.
--
-- 'customCookbooksSource', 'stack_customCookbooksSource' - Contains the information required to retrieve an app or cookbook from a
-- repository. For more information, see
-- <https://docs.aws.amazon.com/opsworks/latest/userguide/workingapps-creating.html Adding Apps>
-- or
-- <https://docs.aws.amazon.com/opsworks/latest/userguide/workingcookbook.html Cookbooks and Recipes>.
--
-- 'customJson', 'stack_customJson' - A JSON object that contains user-defined attributes to be added to the
-- stack configuration and deployment attributes. You can use custom JSON
-- to override the corresponding default stack configuration attribute
-- values or to pass data to recipes. The string should be in the following
-- format:
--
-- @\"{\\\"key1\\\": \\\"value1\\\", \\\"key2\\\": \\\"value2\\\",...}\"@
--
-- For more information on custom JSON, see
-- <https://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-json.html Use Custom JSON to Modify the Stack Configuration Attributes>.
--
-- 'defaultAvailabilityZone', 'stack_defaultAvailabilityZone' - The stack\'s default Availability Zone. For more information, see
-- <https://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints>.
--
-- 'defaultInstanceProfileArn', 'stack_defaultInstanceProfileArn' - The ARN of an IAM profile that is the default profile for all of the
-- stack\'s EC2 instances. For more information about IAM ARNs, see
-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers>.
--
-- 'defaultOs', 'stack_defaultOs' - The stack\'s default operating system.
--
-- 'defaultRootDeviceType', 'stack_defaultRootDeviceType' - The default root device type. This value is used by default for all
-- instances in the stack, but you can override it when you create an
-- instance. For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device Storage for the Root Device>.
--
-- 'defaultSshKeyName', 'stack_defaultSshKeyName' - A default Amazon EC2 key pair for the stack\'s instances. You can
-- override this value when you create or update an instance.
--
-- 'defaultSubnetId', 'stack_defaultSubnetId' - The default subnet ID; applicable only if the stack is running in a VPC.
--
-- 'hostnameTheme', 'stack_hostnameTheme' - The stack host name theme, with spaces replaced by underscores.
--
-- 'name', 'stack_name' - The stack name.
--
-- 'region', 'stack_region' - The stack AWS region, such as \"ap-northeast-2\". For more information
-- about AWS regions, see
-- <https://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints>.
--
-- 'serviceRoleArn', 'stack_serviceRoleArn' - The stack AWS Identity and Access Management (IAM) role.
--
-- 'stackId', 'stack_stackId' - The stack ID.
--
-- 'useCustomCookbooks', 'stack_useCustomCookbooks' - Whether the stack uses custom cookbooks.
--
-- 'useOpsworksSecurityGroups', 'stack_useOpsworksSecurityGroups' - Whether the stack automatically associates the AWS OpsWorks Stacks
-- built-in security groups with the stack\'s layers.
--
-- 'vpcId', 'stack_vpcId' - The VPC ID; applicable only if the stack is running in a VPC.
newStack ::
  Stack
newStack :: Stack
newStack =
  Stack'
    { $sel:agentVersion:Stack' :: Maybe Text
agentVersion = forall a. Maybe a
Prelude.Nothing,
      $sel:arn:Stack' :: Maybe Text
arn = forall a. Maybe a
Prelude.Nothing,
      $sel:attributes:Stack' :: Maybe (HashMap StackAttributesKeys (Maybe Text))
attributes = forall a. Maybe a
Prelude.Nothing,
      $sel:chefConfiguration:Stack' :: Maybe ChefConfiguration
chefConfiguration = forall a. Maybe a
Prelude.Nothing,
      $sel:configurationManager:Stack' :: Maybe StackConfigurationManager
configurationManager = forall a. Maybe a
Prelude.Nothing,
      $sel:createdAt:Stack' :: Maybe Text
createdAt = forall a. Maybe a
Prelude.Nothing,
      $sel:customCookbooksSource:Stack' :: Maybe Source
customCookbooksSource = forall a. Maybe a
Prelude.Nothing,
      $sel:customJson:Stack' :: Maybe Text
customJson = forall a. Maybe a
Prelude.Nothing,
      $sel:defaultAvailabilityZone:Stack' :: Maybe Text
defaultAvailabilityZone = forall a. Maybe a
Prelude.Nothing,
      $sel:defaultInstanceProfileArn:Stack' :: Maybe Text
defaultInstanceProfileArn = forall a. Maybe a
Prelude.Nothing,
      $sel:defaultOs:Stack' :: Maybe Text
defaultOs = forall a. Maybe a
Prelude.Nothing,
      $sel:defaultRootDeviceType:Stack' :: Maybe RootDeviceType
defaultRootDeviceType = forall a. Maybe a
Prelude.Nothing,
      $sel:defaultSshKeyName:Stack' :: Maybe Text
defaultSshKeyName = forall a. Maybe a
Prelude.Nothing,
      $sel:defaultSubnetId:Stack' :: Maybe Text
defaultSubnetId = forall a. Maybe a
Prelude.Nothing,
      $sel:hostnameTheme:Stack' :: Maybe Text
hostnameTheme = forall a. Maybe a
Prelude.Nothing,
      $sel:name:Stack' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:region:Stack' :: Maybe Text
region = forall a. Maybe a
Prelude.Nothing,
      $sel:serviceRoleArn:Stack' :: Maybe Text
serviceRoleArn = forall a. Maybe a
Prelude.Nothing,
      $sel:stackId:Stack' :: Maybe Text
stackId = forall a. Maybe a
Prelude.Nothing,
      $sel:useCustomCookbooks:Stack' :: Maybe Bool
useCustomCookbooks = forall a. Maybe a
Prelude.Nothing,
      $sel:useOpsworksSecurityGroups:Stack' :: Maybe Bool
useOpsworksSecurityGroups = forall a. Maybe a
Prelude.Nothing,
      $sel:vpcId:Stack' :: Maybe Text
vpcId = forall a. Maybe a
Prelude.Nothing
    }

-- | The agent version. This parameter is set to @LATEST@ for auto-update. or
-- a version number for a fixed agent version.
stack_agentVersion :: Lens.Lens' Stack (Prelude.Maybe Prelude.Text)
stack_agentVersion :: Lens' Stack (Maybe Text)
stack_agentVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe Text
agentVersion :: Maybe Text
$sel:agentVersion:Stack' :: Stack -> Maybe Text
agentVersion} -> Maybe Text
agentVersion) (\s :: Stack
s@Stack' {} Maybe Text
a -> Stack
s {$sel:agentVersion:Stack' :: Maybe Text
agentVersion = Maybe Text
a} :: Stack)

-- | The stack\'s ARN.
stack_arn :: Lens.Lens' Stack (Prelude.Maybe Prelude.Text)
stack_arn :: Lens' Stack (Maybe Text)
stack_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe Text
arn :: Maybe Text
$sel:arn:Stack' :: Stack -> Maybe Text
arn} -> Maybe Text
arn) (\s :: Stack
s@Stack' {} Maybe Text
a -> Stack
s {$sel:arn:Stack' :: Maybe Text
arn = Maybe Text
a} :: Stack)

-- | The stack\'s attributes.
stack_attributes :: Lens.Lens' Stack (Prelude.Maybe (Prelude.HashMap StackAttributesKeys (Prelude.Maybe Prelude.Text)))
stack_attributes :: Lens' Stack (Maybe (HashMap StackAttributesKeys (Maybe Text)))
stack_attributes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe (HashMap StackAttributesKeys (Maybe Text))
attributes :: Maybe (HashMap StackAttributesKeys (Maybe Text))
$sel:attributes:Stack' :: Stack -> Maybe (HashMap StackAttributesKeys (Maybe Text))
attributes} -> Maybe (HashMap StackAttributesKeys (Maybe Text))
attributes) (\s :: Stack
s@Stack' {} Maybe (HashMap StackAttributesKeys (Maybe Text))
a -> Stack
s {$sel:attributes:Stack' :: Maybe (HashMap StackAttributesKeys (Maybe Text))
attributes = Maybe (HashMap StackAttributesKeys (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 @ChefConfiguration@ object that specifies whether to enable Berkshelf
-- and the Berkshelf version. For more information, see
-- <https://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html Create a New Stack>.
stack_chefConfiguration :: Lens.Lens' Stack (Prelude.Maybe ChefConfiguration)
stack_chefConfiguration :: Lens' Stack (Maybe ChefConfiguration)
stack_chefConfiguration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe ChefConfiguration
chefConfiguration :: Maybe ChefConfiguration
$sel:chefConfiguration:Stack' :: Stack -> Maybe ChefConfiguration
chefConfiguration} -> Maybe ChefConfiguration
chefConfiguration) (\s :: Stack
s@Stack' {} Maybe ChefConfiguration
a -> Stack
s {$sel:chefConfiguration:Stack' :: Maybe ChefConfiguration
chefConfiguration = Maybe ChefConfiguration
a} :: Stack)

-- | The configuration manager.
stack_configurationManager :: Lens.Lens' Stack (Prelude.Maybe StackConfigurationManager)
stack_configurationManager :: Lens' Stack (Maybe StackConfigurationManager)
stack_configurationManager = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe StackConfigurationManager
configurationManager :: Maybe StackConfigurationManager
$sel:configurationManager:Stack' :: Stack -> Maybe StackConfigurationManager
configurationManager} -> Maybe StackConfigurationManager
configurationManager) (\s :: Stack
s@Stack' {} Maybe StackConfigurationManager
a -> Stack
s {$sel:configurationManager:Stack' :: Maybe StackConfigurationManager
configurationManager = Maybe StackConfigurationManager
a} :: Stack)

-- | The date when the stack was created.
stack_createdAt :: Lens.Lens' Stack (Prelude.Maybe Prelude.Text)
stack_createdAt :: Lens' Stack (Maybe Text)
stack_createdAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe Text
createdAt :: Maybe Text
$sel:createdAt:Stack' :: Stack -> Maybe Text
createdAt} -> Maybe Text
createdAt) (\s :: Stack
s@Stack' {} Maybe Text
a -> Stack
s {$sel:createdAt:Stack' :: Maybe Text
createdAt = Maybe Text
a} :: Stack)

-- | Contains the information required to retrieve an app or cookbook from a
-- repository. For more information, see
-- <https://docs.aws.amazon.com/opsworks/latest/userguide/workingapps-creating.html Adding Apps>
-- or
-- <https://docs.aws.amazon.com/opsworks/latest/userguide/workingcookbook.html Cookbooks and Recipes>.
stack_customCookbooksSource :: Lens.Lens' Stack (Prelude.Maybe Source)
stack_customCookbooksSource :: Lens' Stack (Maybe Source)
stack_customCookbooksSource = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe Source
customCookbooksSource :: Maybe Source
$sel:customCookbooksSource:Stack' :: Stack -> Maybe Source
customCookbooksSource} -> Maybe Source
customCookbooksSource) (\s :: Stack
s@Stack' {} Maybe Source
a -> Stack
s {$sel:customCookbooksSource:Stack' :: Maybe Source
customCookbooksSource = Maybe Source
a} :: Stack)

-- | A JSON object that contains user-defined attributes to be added to the
-- stack configuration and deployment attributes. You can use custom JSON
-- to override the corresponding default stack configuration attribute
-- values or to pass data to recipes. The string should be in the following
-- format:
--
-- @\"{\\\"key1\\\": \\\"value1\\\", \\\"key2\\\": \\\"value2\\\",...}\"@
--
-- For more information on custom JSON, see
-- <https://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-json.html Use Custom JSON to Modify the Stack Configuration Attributes>.
stack_customJson :: Lens.Lens' Stack (Prelude.Maybe Prelude.Text)
stack_customJson :: Lens' Stack (Maybe Text)
stack_customJson = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe Text
customJson :: Maybe Text
$sel:customJson:Stack' :: Stack -> Maybe Text
customJson} -> Maybe Text
customJson) (\s :: Stack
s@Stack' {} Maybe Text
a -> Stack
s {$sel:customJson:Stack' :: Maybe Text
customJson = Maybe Text
a} :: Stack)

-- | The stack\'s default Availability Zone. For more information, see
-- <https://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints>.
stack_defaultAvailabilityZone :: Lens.Lens' Stack (Prelude.Maybe Prelude.Text)
stack_defaultAvailabilityZone :: Lens' Stack (Maybe Text)
stack_defaultAvailabilityZone = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe Text
defaultAvailabilityZone :: Maybe Text
$sel:defaultAvailabilityZone:Stack' :: Stack -> Maybe Text
defaultAvailabilityZone} -> Maybe Text
defaultAvailabilityZone) (\s :: Stack
s@Stack' {} Maybe Text
a -> Stack
s {$sel:defaultAvailabilityZone:Stack' :: Maybe Text
defaultAvailabilityZone = Maybe Text
a} :: Stack)

-- | The ARN of an IAM profile that is the default profile for all of the
-- stack\'s EC2 instances. For more information about IAM ARNs, see
-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers>.
stack_defaultInstanceProfileArn :: Lens.Lens' Stack (Prelude.Maybe Prelude.Text)
stack_defaultInstanceProfileArn :: Lens' Stack (Maybe Text)
stack_defaultInstanceProfileArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe Text
defaultInstanceProfileArn :: Maybe Text
$sel:defaultInstanceProfileArn:Stack' :: Stack -> Maybe Text
defaultInstanceProfileArn} -> Maybe Text
defaultInstanceProfileArn) (\s :: Stack
s@Stack' {} Maybe Text
a -> Stack
s {$sel:defaultInstanceProfileArn:Stack' :: Maybe Text
defaultInstanceProfileArn = Maybe Text
a} :: Stack)

-- | The stack\'s default operating system.
stack_defaultOs :: Lens.Lens' Stack (Prelude.Maybe Prelude.Text)
stack_defaultOs :: Lens' Stack (Maybe Text)
stack_defaultOs = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe Text
defaultOs :: Maybe Text
$sel:defaultOs:Stack' :: Stack -> Maybe Text
defaultOs} -> Maybe Text
defaultOs) (\s :: Stack
s@Stack' {} Maybe Text
a -> Stack
s {$sel:defaultOs:Stack' :: Maybe Text
defaultOs = Maybe Text
a} :: Stack)

-- | The default root device type. This value is used by default for all
-- instances in the stack, but you can override it when you create an
-- instance. For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device Storage for the Root Device>.
stack_defaultRootDeviceType :: Lens.Lens' Stack (Prelude.Maybe RootDeviceType)
stack_defaultRootDeviceType :: Lens' Stack (Maybe RootDeviceType)
stack_defaultRootDeviceType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe RootDeviceType
defaultRootDeviceType :: Maybe RootDeviceType
$sel:defaultRootDeviceType:Stack' :: Stack -> Maybe RootDeviceType
defaultRootDeviceType} -> Maybe RootDeviceType
defaultRootDeviceType) (\s :: Stack
s@Stack' {} Maybe RootDeviceType
a -> Stack
s {$sel:defaultRootDeviceType:Stack' :: Maybe RootDeviceType
defaultRootDeviceType = Maybe RootDeviceType
a} :: Stack)

-- | A default Amazon EC2 key pair for the stack\'s instances. You can
-- override this value when you create or update an instance.
stack_defaultSshKeyName :: Lens.Lens' Stack (Prelude.Maybe Prelude.Text)
stack_defaultSshKeyName :: Lens' Stack (Maybe Text)
stack_defaultSshKeyName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe Text
defaultSshKeyName :: Maybe Text
$sel:defaultSshKeyName:Stack' :: Stack -> Maybe Text
defaultSshKeyName} -> Maybe Text
defaultSshKeyName) (\s :: Stack
s@Stack' {} Maybe Text
a -> Stack
s {$sel:defaultSshKeyName:Stack' :: Maybe Text
defaultSshKeyName = Maybe Text
a} :: Stack)

-- | The default subnet ID; applicable only if the stack is running in a VPC.
stack_defaultSubnetId :: Lens.Lens' Stack (Prelude.Maybe Prelude.Text)
stack_defaultSubnetId :: Lens' Stack (Maybe Text)
stack_defaultSubnetId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe Text
defaultSubnetId :: Maybe Text
$sel:defaultSubnetId:Stack' :: Stack -> Maybe Text
defaultSubnetId} -> Maybe Text
defaultSubnetId) (\s :: Stack
s@Stack' {} Maybe Text
a -> Stack
s {$sel:defaultSubnetId:Stack' :: Maybe Text
defaultSubnetId = Maybe Text
a} :: Stack)

-- | The stack host name theme, with spaces replaced by underscores.
stack_hostnameTheme :: Lens.Lens' Stack (Prelude.Maybe Prelude.Text)
stack_hostnameTheme :: Lens' Stack (Maybe Text)
stack_hostnameTheme = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe Text
hostnameTheme :: Maybe Text
$sel:hostnameTheme:Stack' :: Stack -> Maybe Text
hostnameTheme} -> Maybe Text
hostnameTheme) (\s :: Stack
s@Stack' {} Maybe Text
a -> Stack
s {$sel:hostnameTheme:Stack' :: Maybe Text
hostnameTheme = Maybe Text
a} :: Stack)

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

-- | The stack AWS region, such as \"ap-northeast-2\". For more information
-- about AWS regions, see
-- <https://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints>.
stack_region :: Lens.Lens' Stack (Prelude.Maybe Prelude.Text)
stack_region :: Lens' Stack (Maybe Text)
stack_region = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe Text
region :: Maybe Text
$sel:region:Stack' :: Stack -> Maybe Text
region} -> Maybe Text
region) (\s :: Stack
s@Stack' {} Maybe Text
a -> Stack
s {$sel:region:Stack' :: Maybe Text
region = Maybe Text
a} :: Stack)

-- | The stack AWS Identity and Access Management (IAM) role.
stack_serviceRoleArn :: Lens.Lens' Stack (Prelude.Maybe Prelude.Text)
stack_serviceRoleArn :: Lens' Stack (Maybe Text)
stack_serviceRoleArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe Text
serviceRoleArn :: Maybe Text
$sel:serviceRoleArn:Stack' :: Stack -> Maybe Text
serviceRoleArn} -> Maybe Text
serviceRoleArn) (\s :: Stack
s@Stack' {} Maybe Text
a -> Stack
s {$sel:serviceRoleArn:Stack' :: Maybe Text
serviceRoleArn = Maybe Text
a} :: Stack)

-- | The stack ID.
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)

-- | Whether the stack uses custom cookbooks.
stack_useCustomCookbooks :: Lens.Lens' Stack (Prelude.Maybe Prelude.Bool)
stack_useCustomCookbooks :: Lens' Stack (Maybe Bool)
stack_useCustomCookbooks = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe Bool
useCustomCookbooks :: Maybe Bool
$sel:useCustomCookbooks:Stack' :: Stack -> Maybe Bool
useCustomCookbooks} -> Maybe Bool
useCustomCookbooks) (\s :: Stack
s@Stack' {} Maybe Bool
a -> Stack
s {$sel:useCustomCookbooks:Stack' :: Maybe Bool
useCustomCookbooks = Maybe Bool
a} :: Stack)

-- | Whether the stack automatically associates the AWS OpsWorks Stacks
-- built-in security groups with the stack\'s layers.
stack_useOpsworksSecurityGroups :: Lens.Lens' Stack (Prelude.Maybe Prelude.Bool)
stack_useOpsworksSecurityGroups :: Lens' Stack (Maybe Bool)
stack_useOpsworksSecurityGroups = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe Bool
useOpsworksSecurityGroups :: Maybe Bool
$sel:useOpsworksSecurityGroups:Stack' :: Stack -> Maybe Bool
useOpsworksSecurityGroups} -> Maybe Bool
useOpsworksSecurityGroups) (\s :: Stack
s@Stack' {} Maybe Bool
a -> Stack
s {$sel:useOpsworksSecurityGroups:Stack' :: Maybe Bool
useOpsworksSecurityGroups = Maybe Bool
a} :: Stack)

-- | The VPC ID; applicable only if the stack is running in a VPC.
stack_vpcId :: Lens.Lens' Stack (Prelude.Maybe Prelude.Text)
stack_vpcId :: Lens' Stack (Maybe Text)
stack_vpcId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Stack' {Maybe Text
vpcId :: Maybe Text
$sel:vpcId:Stack' :: Stack -> Maybe Text
vpcId} -> Maybe Text
vpcId) (\s :: Stack
s@Stack' {} Maybe Text
a -> Stack
s {$sel:vpcId:Stack' :: Maybe Text
vpcId = Maybe Text
a} :: Stack)

instance Data.FromJSON Stack where
  parseJSON :: Value -> Parser Stack
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"Stack"
      ( \Object
x ->
          Maybe Text
-> Maybe Text
-> Maybe (HashMap StackAttributesKeys (Maybe Text))
-> Maybe ChefConfiguration
-> Maybe StackConfigurationManager
-> Maybe Text
-> Maybe Source
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe RootDeviceType
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Bool
-> Maybe Text
-> Stack
Stack'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"AgentVersion")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Arn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Attributes" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ChefConfiguration")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ConfigurationManager")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"CreatedAt")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"CustomCookbooksSource")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"CustomJson")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"DefaultAvailabilityZone")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"DefaultInstanceProfileArn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"DefaultOs")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"DefaultRootDeviceType")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"DefaultSshKeyName")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"DefaultSubnetId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"HostnameTheme")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Name")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Region")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ServiceRoleArn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"StackId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"UseCustomCookbooks")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"UseOpsworksSecurityGroups")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"VpcId")
      )

instance Prelude.Hashable Stack where
  hashWithSalt :: Int -> Stack -> Int
hashWithSalt Int
_salt Stack' {Maybe Bool
Maybe Text
Maybe (HashMap StackAttributesKeys (Maybe Text))
Maybe ChefConfiguration
Maybe RootDeviceType
Maybe Source
Maybe StackConfigurationManager
vpcId :: Maybe Text
useOpsworksSecurityGroups :: Maybe Bool
useCustomCookbooks :: Maybe Bool
stackId :: Maybe Text
serviceRoleArn :: Maybe Text
region :: Maybe Text
name :: Maybe Text
hostnameTheme :: Maybe Text
defaultSubnetId :: Maybe Text
defaultSshKeyName :: Maybe Text
defaultRootDeviceType :: Maybe RootDeviceType
defaultOs :: Maybe Text
defaultInstanceProfileArn :: Maybe Text
defaultAvailabilityZone :: Maybe Text
customJson :: Maybe Text
customCookbooksSource :: Maybe Source
createdAt :: Maybe Text
configurationManager :: Maybe StackConfigurationManager
chefConfiguration :: Maybe ChefConfiguration
attributes :: Maybe (HashMap StackAttributesKeys (Maybe Text))
arn :: Maybe Text
agentVersion :: Maybe Text
$sel:vpcId:Stack' :: Stack -> Maybe Text
$sel:useOpsworksSecurityGroups:Stack' :: Stack -> Maybe Bool
$sel:useCustomCookbooks:Stack' :: Stack -> Maybe Bool
$sel:stackId:Stack' :: Stack -> Maybe Text
$sel:serviceRoleArn:Stack' :: Stack -> Maybe Text
$sel:region:Stack' :: Stack -> Maybe Text
$sel:name:Stack' :: Stack -> Maybe Text
$sel:hostnameTheme:Stack' :: Stack -> Maybe Text
$sel:defaultSubnetId:Stack' :: Stack -> Maybe Text
$sel:defaultSshKeyName:Stack' :: Stack -> Maybe Text
$sel:defaultRootDeviceType:Stack' :: Stack -> Maybe RootDeviceType
$sel:defaultOs:Stack' :: Stack -> Maybe Text
$sel:defaultInstanceProfileArn:Stack' :: Stack -> Maybe Text
$sel:defaultAvailabilityZone:Stack' :: Stack -> Maybe Text
$sel:customJson:Stack' :: Stack -> Maybe Text
$sel:customCookbooksSource:Stack' :: Stack -> Maybe Source
$sel:createdAt:Stack' :: Stack -> Maybe Text
$sel:configurationManager:Stack' :: Stack -> Maybe StackConfigurationManager
$sel:chefConfiguration:Stack' :: Stack -> Maybe ChefConfiguration
$sel:attributes:Stack' :: Stack -> Maybe (HashMap StackAttributesKeys (Maybe Text))
$sel:arn:Stack' :: Stack -> Maybe Text
$sel:agentVersion:Stack' :: Stack -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
agentVersion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
arn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap StackAttributesKeys (Maybe Text))
attributes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ChefConfiguration
chefConfiguration
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe StackConfigurationManager
configurationManager
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
createdAt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Source
customCookbooksSource
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
customJson
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
defaultAvailabilityZone
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
defaultInstanceProfileArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
defaultOs
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RootDeviceType
defaultRootDeviceType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
defaultSshKeyName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
defaultSubnetId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
hostnameTheme
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
region
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
serviceRoleArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
stackId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
useCustomCookbooks
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
useOpsworksSecurityGroups
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
vpcId

instance Prelude.NFData Stack where
  rnf :: Stack -> ()
rnf Stack' {Maybe Bool
Maybe Text
Maybe (HashMap StackAttributesKeys (Maybe Text))
Maybe ChefConfiguration
Maybe RootDeviceType
Maybe Source
Maybe StackConfigurationManager
vpcId :: Maybe Text
useOpsworksSecurityGroups :: Maybe Bool
useCustomCookbooks :: Maybe Bool
stackId :: Maybe Text
serviceRoleArn :: Maybe Text
region :: Maybe Text
name :: Maybe Text
hostnameTheme :: Maybe Text
defaultSubnetId :: Maybe Text
defaultSshKeyName :: Maybe Text
defaultRootDeviceType :: Maybe RootDeviceType
defaultOs :: Maybe Text
defaultInstanceProfileArn :: Maybe Text
defaultAvailabilityZone :: Maybe Text
customJson :: Maybe Text
customCookbooksSource :: Maybe Source
createdAt :: Maybe Text
configurationManager :: Maybe StackConfigurationManager
chefConfiguration :: Maybe ChefConfiguration
attributes :: Maybe (HashMap StackAttributesKeys (Maybe Text))
arn :: Maybe Text
agentVersion :: Maybe Text
$sel:vpcId:Stack' :: Stack -> Maybe Text
$sel:useOpsworksSecurityGroups:Stack' :: Stack -> Maybe Bool
$sel:useCustomCookbooks:Stack' :: Stack -> Maybe Bool
$sel:stackId:Stack' :: Stack -> Maybe Text
$sel:serviceRoleArn:Stack' :: Stack -> Maybe Text
$sel:region:Stack' :: Stack -> Maybe Text
$sel:name:Stack' :: Stack -> Maybe Text
$sel:hostnameTheme:Stack' :: Stack -> Maybe Text
$sel:defaultSubnetId:Stack' :: Stack -> Maybe Text
$sel:defaultSshKeyName:Stack' :: Stack -> Maybe Text
$sel:defaultRootDeviceType:Stack' :: Stack -> Maybe RootDeviceType
$sel:defaultOs:Stack' :: Stack -> Maybe Text
$sel:defaultInstanceProfileArn:Stack' :: Stack -> Maybe Text
$sel:defaultAvailabilityZone:Stack' :: Stack -> Maybe Text
$sel:customJson:Stack' :: Stack -> Maybe Text
$sel:customCookbooksSource:Stack' :: Stack -> Maybe Source
$sel:createdAt:Stack' :: Stack -> Maybe Text
$sel:configurationManager:Stack' :: Stack -> Maybe StackConfigurationManager
$sel:chefConfiguration:Stack' :: Stack -> Maybe ChefConfiguration
$sel:attributes:Stack' :: Stack -> Maybe (HashMap StackAttributesKeys (Maybe Text))
$sel:arn:Stack' :: Stack -> Maybe Text
$sel:agentVersion:Stack' :: Stack -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
agentVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
arn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap StackAttributesKeys (Maybe Text))
attributes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ChefConfiguration
chefConfiguration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe StackConfigurationManager
configurationManager
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
createdAt
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Source
customCookbooksSource
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
customJson
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
defaultAvailabilityZone
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
defaultInstanceProfileArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
defaultOs
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RootDeviceType
defaultRootDeviceType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
defaultSshKeyName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
defaultSubnetId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
hostnameTheme
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
region
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
serviceRoleArn
      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 Bool
useCustomCookbooks
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Bool
useOpsworksSecurityGroups
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
vpcId