{-# 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.ECS.Types.Cluster
-- 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.ECS.Types.Cluster where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.ECS.Types.Attachment
import Amazonka.ECS.Types.CapacityProviderStrategyItem
import Amazonka.ECS.Types.ClusterConfiguration
import Amazonka.ECS.Types.ClusterServiceConnectDefaults
import Amazonka.ECS.Types.ClusterSetting
import Amazonka.ECS.Types.KeyValuePair
import Amazonka.ECS.Types.Tag
import qualified Amazonka.Prelude as Prelude

-- | A regional grouping of one or more container instances where you can run
-- task requests. Each account receives a default cluster the first time
-- you use the Amazon ECS service, but you may also create other clusters.
-- Clusters may contain more than one instance type simultaneously.
--
-- /See:/ 'newCluster' smart constructor.
data Cluster = Cluster'
  { -- | The number of services that are running on the cluster in an @ACTIVE@
    -- state. You can view these services with ListServices.
    Cluster -> Maybe Int
activeServicesCount :: Prelude.Maybe Prelude.Int,
    -- | The resources attached to a cluster. When using a capacity provider with
    -- a cluster, the capacity provider and associated resources are returned
    -- as cluster attachments.
    Cluster -> Maybe [Attachment]
attachments :: Prelude.Maybe [Attachment],
    -- | The status of the capacity providers associated with the cluster. The
    -- following are the states that are returned.
    --
    -- [UPDATE_IN_PROGRESS]
    --     The available capacity providers for the cluster are updating.
    --
    -- [UPDATE_COMPLETE]
    --     The capacity providers have successfully updated.
    --
    -- [UPDATE_FAILED]
    --     The capacity provider updates failed.
    Cluster -> Maybe Text
attachmentsStatus :: Prelude.Maybe Prelude.Text,
    -- | The capacity providers associated with the cluster.
    Cluster -> Maybe [Text]
capacityProviders :: Prelude.Maybe [Prelude.Text],
    -- | The Amazon Resource Name (ARN) that identifies the cluster. For more
    -- information about the ARN format, see
    -- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids Amazon Resource Name (ARN)>
    -- in the /Amazon ECS Developer Guide/.
    Cluster -> Maybe Text
clusterArn :: Prelude.Maybe Prelude.Text,
    -- | A user-generated string that you use to identify your cluster.
    Cluster -> Maybe Text
clusterName :: Prelude.Maybe Prelude.Text,
    -- | The execute command configuration for the cluster.
    Cluster -> Maybe ClusterConfiguration
configuration :: Prelude.Maybe ClusterConfiguration,
    -- | The default capacity provider strategy for the cluster. When services or
    -- tasks are run in the cluster with no launch type or capacity provider
    -- strategy specified, the default capacity provider strategy is used.
    Cluster -> Maybe [CapacityProviderStrategyItem]
defaultCapacityProviderStrategy :: Prelude.Maybe [CapacityProviderStrategyItem],
    -- | The number of tasks in the cluster that are in the @PENDING@ state.
    Cluster -> Maybe Int
pendingTasksCount :: Prelude.Maybe Prelude.Int,
    -- | The number of container instances registered into the cluster. This
    -- includes container instances in both @ACTIVE@ and @DRAINING@ status.
    Cluster -> Maybe Int
registeredContainerInstancesCount :: Prelude.Maybe Prelude.Int,
    -- | The number of tasks in the cluster that are in the @RUNNING@ state.
    Cluster -> Maybe Int
runningTasksCount :: Prelude.Maybe Prelude.Int,
    -- | Use this parameter to set a default Service Connect namespace. After you
    -- set a default Service Connect namespace, any new services with Service
    -- Connect turned on that are created in the cluster are added as client
    -- services in the namespace. This setting only applies to new services
    -- that set the @enabled@ parameter to @true@ in the
    -- @ServiceConnectConfiguration@. You can set the namespace of each service
    -- individually in the @ServiceConnectConfiguration@ to override this
    -- default parameter.
    --
    -- Tasks that run in a namespace can use short names to connect to services
    -- in the namespace. Tasks can connect to services across all of the
    -- clusters in the namespace. Tasks connect through a managed proxy
    -- container that collects logs and metrics for increased visibility. Only
    -- the tasks that Amazon ECS services create are supported with Service
    -- Connect. For more information, see
    -- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html Service Connect>
    -- in the /Amazon Elastic Container Service Developer Guide/.
    Cluster -> Maybe ClusterServiceConnectDefaults
serviceConnectDefaults :: Prelude.Maybe ClusterServiceConnectDefaults,
    -- | The settings for the cluster. This parameter indicates whether
    -- CloudWatch Container Insights is enabled or disabled for a cluster.
    Cluster -> Maybe [ClusterSetting]
settings :: Prelude.Maybe [ClusterSetting],
    -- | Additional information about your clusters that are separated by launch
    -- type. They include the following:
    --
    -- -   runningEC2TasksCount
    --
    -- -   RunningFargateTasksCount
    --
    -- -   pendingEC2TasksCount
    --
    -- -   pendingFargateTasksCount
    --
    -- -   activeEC2ServiceCount
    --
    -- -   activeFargateServiceCount
    --
    -- -   drainingEC2ServiceCount
    --
    -- -   drainingFargateServiceCount
    Cluster -> Maybe [KeyValuePair]
statistics :: Prelude.Maybe [KeyValuePair],
    -- | The status of the cluster. The following are the possible states that
    -- are returned.
    --
    -- [ACTIVE]
    --     The cluster is ready to accept tasks and if applicable you can
    --     register container instances with the cluster.
    --
    -- [PROVISIONING]
    --     The cluster has capacity providers that are associated with it and
    --     the resources needed for the capacity provider are being created.
    --
    -- [DEPROVISIONING]
    --     The cluster has capacity providers that are associated with it and
    --     the resources needed for the capacity provider are being deleted.
    --
    -- [FAILED]
    --     The cluster has capacity providers that are associated with it and
    --     the resources needed for the capacity provider have failed to
    --     create.
    --
    -- [INACTIVE]
    --     The cluster has been deleted. Clusters with an @INACTIVE@ status may
    --     remain discoverable in your account for a period of time. However,
    --     this behavior is subject to change in the future. We don\'t
    --     recommend that you rely on @INACTIVE@ clusters persisting.
    Cluster -> Maybe Text
status :: Prelude.Maybe Prelude.Text,
    -- | The metadata that you apply to the cluster to help you categorize and
    -- organize them. Each tag consists of a key and an optional value. You
    -- define both.
    --
    -- The following basic restrictions apply to tags:
    --
    -- -   Maximum number of tags per resource - 50
    --
    -- -   For each resource, each tag key must be unique, and each tag key can
    --     have only one value.
    --
    -- -   Maximum key length - 128 Unicode characters in UTF-8
    --
    -- -   Maximum value length - 256 Unicode characters in UTF-8
    --
    -- -   If your tagging schema is used across multiple services and
    --     resources, remember that other services may have restrictions on
    --     allowed characters. Generally allowed characters are: letters,
    --     numbers, and spaces representable in UTF-8, and the following
    --     characters: + - = . _ : \/ \@.
    --
    -- -   Tag keys and values are case-sensitive.
    --
    -- -   Do not use @aws:@, @AWS:@, or any upper or lowercase combination of
    --     such as a prefix for either keys or values as it is reserved for
    --     Amazon Web Services use. You cannot edit or delete tag keys or
    --     values with this prefix. Tags with this prefix do not count against
    --     your tags per resource limit.
    Cluster -> Maybe [Tag]
tags :: Prelude.Maybe [Tag]
  }
  deriving (Cluster -> Cluster -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Cluster -> Cluster -> Bool
$c/= :: Cluster -> Cluster -> Bool
== :: Cluster -> Cluster -> Bool
$c== :: Cluster -> Cluster -> Bool
Prelude.Eq, ReadPrec [Cluster]
ReadPrec Cluster
Int -> ReadS Cluster
ReadS [Cluster]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Cluster]
$creadListPrec :: ReadPrec [Cluster]
readPrec :: ReadPrec Cluster
$creadPrec :: ReadPrec Cluster
readList :: ReadS [Cluster]
$creadList :: ReadS [Cluster]
readsPrec :: Int -> ReadS Cluster
$creadsPrec :: Int -> ReadS Cluster
Prelude.Read, Int -> Cluster -> ShowS
[Cluster] -> ShowS
Cluster -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Cluster] -> ShowS
$cshowList :: [Cluster] -> ShowS
show :: Cluster -> String
$cshow :: Cluster -> String
showsPrec :: Int -> Cluster -> ShowS
$cshowsPrec :: Int -> Cluster -> ShowS
Prelude.Show, forall x. Rep Cluster x -> Cluster
forall x. Cluster -> Rep Cluster x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Cluster x -> Cluster
$cfrom :: forall x. Cluster -> Rep Cluster x
Prelude.Generic)

-- |
-- Create a value of 'Cluster' 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:
--
-- 'activeServicesCount', 'cluster_activeServicesCount' - The number of services that are running on the cluster in an @ACTIVE@
-- state. You can view these services with ListServices.
--
-- 'attachments', 'cluster_attachments' - The resources attached to a cluster. When using a capacity provider with
-- a cluster, the capacity provider and associated resources are returned
-- as cluster attachments.
--
-- 'attachmentsStatus', 'cluster_attachmentsStatus' - The status of the capacity providers associated with the cluster. The
-- following are the states that are returned.
--
-- [UPDATE_IN_PROGRESS]
--     The available capacity providers for the cluster are updating.
--
-- [UPDATE_COMPLETE]
--     The capacity providers have successfully updated.
--
-- [UPDATE_FAILED]
--     The capacity provider updates failed.
--
-- 'capacityProviders', 'cluster_capacityProviders' - The capacity providers associated with the cluster.
--
-- 'clusterArn', 'cluster_clusterArn' - The Amazon Resource Name (ARN) that identifies the cluster. For more
-- information about the ARN format, see
-- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids Amazon Resource Name (ARN)>
-- in the /Amazon ECS Developer Guide/.
--
-- 'clusterName', 'cluster_clusterName' - A user-generated string that you use to identify your cluster.
--
-- 'configuration', 'cluster_configuration' - The execute command configuration for the cluster.
--
-- 'defaultCapacityProviderStrategy', 'cluster_defaultCapacityProviderStrategy' - The default capacity provider strategy for the cluster. When services or
-- tasks are run in the cluster with no launch type or capacity provider
-- strategy specified, the default capacity provider strategy is used.
--
-- 'pendingTasksCount', 'cluster_pendingTasksCount' - The number of tasks in the cluster that are in the @PENDING@ state.
--
-- 'registeredContainerInstancesCount', 'cluster_registeredContainerInstancesCount' - The number of container instances registered into the cluster. This
-- includes container instances in both @ACTIVE@ and @DRAINING@ status.
--
-- 'runningTasksCount', 'cluster_runningTasksCount' - The number of tasks in the cluster that are in the @RUNNING@ state.
--
-- 'serviceConnectDefaults', 'cluster_serviceConnectDefaults' - Use this parameter to set a default Service Connect namespace. After you
-- set a default Service Connect namespace, any new services with Service
-- Connect turned on that are created in the cluster are added as client
-- services in the namespace. This setting only applies to new services
-- that set the @enabled@ parameter to @true@ in the
-- @ServiceConnectConfiguration@. You can set the namespace of each service
-- individually in the @ServiceConnectConfiguration@ to override this
-- default parameter.
--
-- Tasks that run in a namespace can use short names to connect to services
-- in the namespace. Tasks can connect to services across all of the
-- clusters in the namespace. Tasks connect through a managed proxy
-- container that collects logs and metrics for increased visibility. Only
-- the tasks that Amazon ECS services create are supported with Service
-- Connect. For more information, see
-- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html Service Connect>
-- in the /Amazon Elastic Container Service Developer Guide/.
--
-- 'settings', 'cluster_settings' - The settings for the cluster. This parameter indicates whether
-- CloudWatch Container Insights is enabled or disabled for a cluster.
--
-- 'statistics', 'cluster_statistics' - Additional information about your clusters that are separated by launch
-- type. They include the following:
--
-- -   runningEC2TasksCount
--
-- -   RunningFargateTasksCount
--
-- -   pendingEC2TasksCount
--
-- -   pendingFargateTasksCount
--
-- -   activeEC2ServiceCount
--
-- -   activeFargateServiceCount
--
-- -   drainingEC2ServiceCount
--
-- -   drainingFargateServiceCount
--
-- 'status', 'cluster_status' - The status of the cluster. The following are the possible states that
-- are returned.
--
-- [ACTIVE]
--     The cluster is ready to accept tasks and if applicable you can
--     register container instances with the cluster.
--
-- [PROVISIONING]
--     The cluster has capacity providers that are associated with it and
--     the resources needed for the capacity provider are being created.
--
-- [DEPROVISIONING]
--     The cluster has capacity providers that are associated with it and
--     the resources needed for the capacity provider are being deleted.
--
-- [FAILED]
--     The cluster has capacity providers that are associated with it and
--     the resources needed for the capacity provider have failed to
--     create.
--
-- [INACTIVE]
--     The cluster has been deleted. Clusters with an @INACTIVE@ status may
--     remain discoverable in your account for a period of time. However,
--     this behavior is subject to change in the future. We don\'t
--     recommend that you rely on @INACTIVE@ clusters persisting.
--
-- 'tags', 'cluster_tags' - The metadata that you apply to the cluster to help you categorize and
-- organize them. Each tag consists of a key and an optional value. You
-- define both.
--
-- The following basic restrictions apply to tags:
--
-- -   Maximum number of tags per resource - 50
--
-- -   For each resource, each tag key must be unique, and each tag key can
--     have only one value.
--
-- -   Maximum key length - 128 Unicode characters in UTF-8
--
-- -   Maximum value length - 256 Unicode characters in UTF-8
--
-- -   If your tagging schema is used across multiple services and
--     resources, remember that other services may have restrictions on
--     allowed characters. Generally allowed characters are: letters,
--     numbers, and spaces representable in UTF-8, and the following
--     characters: + - = . _ : \/ \@.
--
-- -   Tag keys and values are case-sensitive.
--
-- -   Do not use @aws:@, @AWS:@, or any upper or lowercase combination of
--     such as a prefix for either keys or values as it is reserved for
--     Amazon Web Services use. You cannot edit or delete tag keys or
--     values with this prefix. Tags with this prefix do not count against
--     your tags per resource limit.
newCluster ::
  Cluster
newCluster :: Cluster
newCluster =
  Cluster'
    { $sel:activeServicesCount:Cluster' :: Maybe Int
activeServicesCount = forall a. Maybe a
Prelude.Nothing,
      $sel:attachments:Cluster' :: Maybe [Attachment]
attachments = forall a. Maybe a
Prelude.Nothing,
      $sel:attachmentsStatus:Cluster' :: Maybe Text
attachmentsStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:capacityProviders:Cluster' :: Maybe [Text]
capacityProviders = forall a. Maybe a
Prelude.Nothing,
      $sel:clusterArn:Cluster' :: Maybe Text
clusterArn = forall a. Maybe a
Prelude.Nothing,
      $sel:clusterName:Cluster' :: Maybe Text
clusterName = forall a. Maybe a
Prelude.Nothing,
      $sel:configuration:Cluster' :: Maybe ClusterConfiguration
configuration = forall a. Maybe a
Prelude.Nothing,
      $sel:defaultCapacityProviderStrategy:Cluster' :: Maybe [CapacityProviderStrategyItem]
defaultCapacityProviderStrategy = forall a. Maybe a
Prelude.Nothing,
      $sel:pendingTasksCount:Cluster' :: Maybe Int
pendingTasksCount = forall a. Maybe a
Prelude.Nothing,
      $sel:registeredContainerInstancesCount:Cluster' :: Maybe Int
registeredContainerInstancesCount = forall a. Maybe a
Prelude.Nothing,
      $sel:runningTasksCount:Cluster' :: Maybe Int
runningTasksCount = forall a. Maybe a
Prelude.Nothing,
      $sel:serviceConnectDefaults:Cluster' :: Maybe ClusterServiceConnectDefaults
serviceConnectDefaults = forall a. Maybe a
Prelude.Nothing,
      $sel:settings:Cluster' :: Maybe [ClusterSetting]
settings = forall a. Maybe a
Prelude.Nothing,
      $sel:statistics:Cluster' :: Maybe [KeyValuePair]
statistics = forall a. Maybe a
Prelude.Nothing,
      $sel:status:Cluster' :: Maybe Text
status = forall a. Maybe a
Prelude.Nothing,
      $sel:tags:Cluster' :: Maybe [Tag]
tags = forall a. Maybe a
Prelude.Nothing
    }

-- | The number of services that are running on the cluster in an @ACTIVE@
-- state. You can view these services with ListServices.
cluster_activeServicesCount :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Int)
cluster_activeServicesCount :: Lens' Cluster (Maybe Int)
cluster_activeServicesCount = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe Int
activeServicesCount :: Maybe Int
$sel:activeServicesCount:Cluster' :: Cluster -> Maybe Int
activeServicesCount} -> Maybe Int
activeServicesCount) (\s :: Cluster
s@Cluster' {} Maybe Int
a -> Cluster
s {$sel:activeServicesCount:Cluster' :: Maybe Int
activeServicesCount = Maybe Int
a} :: Cluster)

-- | The resources attached to a cluster. When using a capacity provider with
-- a cluster, the capacity provider and associated resources are returned
-- as cluster attachments.
cluster_attachments :: Lens.Lens' Cluster (Prelude.Maybe [Attachment])
cluster_attachments :: Lens' Cluster (Maybe [Attachment])
cluster_attachments = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe [Attachment]
attachments :: Maybe [Attachment]
$sel:attachments:Cluster' :: Cluster -> Maybe [Attachment]
attachments} -> Maybe [Attachment]
attachments) (\s :: Cluster
s@Cluster' {} Maybe [Attachment]
a -> Cluster
s {$sel:attachments:Cluster' :: Maybe [Attachment]
attachments = Maybe [Attachment]
a} :: Cluster) 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 status of the capacity providers associated with the cluster. The
-- following are the states that are returned.
--
-- [UPDATE_IN_PROGRESS]
--     The available capacity providers for the cluster are updating.
--
-- [UPDATE_COMPLETE]
--     The capacity providers have successfully updated.
--
-- [UPDATE_FAILED]
--     The capacity provider updates failed.
cluster_attachmentsStatus :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)
cluster_attachmentsStatus :: Lens' Cluster (Maybe Text)
cluster_attachmentsStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe Text
attachmentsStatus :: Maybe Text
$sel:attachmentsStatus:Cluster' :: Cluster -> Maybe Text
attachmentsStatus} -> Maybe Text
attachmentsStatus) (\s :: Cluster
s@Cluster' {} Maybe Text
a -> Cluster
s {$sel:attachmentsStatus:Cluster' :: Maybe Text
attachmentsStatus = Maybe Text
a} :: Cluster)

-- | The capacity providers associated with the cluster.
cluster_capacityProviders :: Lens.Lens' Cluster (Prelude.Maybe [Prelude.Text])
cluster_capacityProviders :: Lens' Cluster (Maybe [Text])
cluster_capacityProviders = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe [Text]
capacityProviders :: Maybe [Text]
$sel:capacityProviders:Cluster' :: Cluster -> Maybe [Text]
capacityProviders} -> Maybe [Text]
capacityProviders) (\s :: Cluster
s@Cluster' {} Maybe [Text]
a -> Cluster
s {$sel:capacityProviders:Cluster' :: Maybe [Text]
capacityProviders = Maybe [Text]
a} :: Cluster) 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 Amazon Resource Name (ARN) that identifies the cluster. For more
-- information about the ARN format, see
-- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids Amazon Resource Name (ARN)>
-- in the /Amazon ECS Developer Guide/.
cluster_clusterArn :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)
cluster_clusterArn :: Lens' Cluster (Maybe Text)
cluster_clusterArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe Text
clusterArn :: Maybe Text
$sel:clusterArn:Cluster' :: Cluster -> Maybe Text
clusterArn} -> Maybe Text
clusterArn) (\s :: Cluster
s@Cluster' {} Maybe Text
a -> Cluster
s {$sel:clusterArn:Cluster' :: Maybe Text
clusterArn = Maybe Text
a} :: Cluster)

-- | A user-generated string that you use to identify your cluster.
cluster_clusterName :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)
cluster_clusterName :: Lens' Cluster (Maybe Text)
cluster_clusterName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe Text
clusterName :: Maybe Text
$sel:clusterName:Cluster' :: Cluster -> Maybe Text
clusterName} -> Maybe Text
clusterName) (\s :: Cluster
s@Cluster' {} Maybe Text
a -> Cluster
s {$sel:clusterName:Cluster' :: Maybe Text
clusterName = Maybe Text
a} :: Cluster)

-- | The execute command configuration for the cluster.
cluster_configuration :: Lens.Lens' Cluster (Prelude.Maybe ClusterConfiguration)
cluster_configuration :: Lens' Cluster (Maybe ClusterConfiguration)
cluster_configuration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe ClusterConfiguration
configuration :: Maybe ClusterConfiguration
$sel:configuration:Cluster' :: Cluster -> Maybe ClusterConfiguration
configuration} -> Maybe ClusterConfiguration
configuration) (\s :: Cluster
s@Cluster' {} Maybe ClusterConfiguration
a -> Cluster
s {$sel:configuration:Cluster' :: Maybe ClusterConfiguration
configuration = Maybe ClusterConfiguration
a} :: Cluster)

-- | The default capacity provider strategy for the cluster. When services or
-- tasks are run in the cluster with no launch type or capacity provider
-- strategy specified, the default capacity provider strategy is used.
cluster_defaultCapacityProviderStrategy :: Lens.Lens' Cluster (Prelude.Maybe [CapacityProviderStrategyItem])
cluster_defaultCapacityProviderStrategy :: Lens' Cluster (Maybe [CapacityProviderStrategyItem])
cluster_defaultCapacityProviderStrategy = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe [CapacityProviderStrategyItem]
defaultCapacityProviderStrategy :: Maybe [CapacityProviderStrategyItem]
$sel:defaultCapacityProviderStrategy:Cluster' :: Cluster -> Maybe [CapacityProviderStrategyItem]
defaultCapacityProviderStrategy} -> Maybe [CapacityProviderStrategyItem]
defaultCapacityProviderStrategy) (\s :: Cluster
s@Cluster' {} Maybe [CapacityProviderStrategyItem]
a -> Cluster
s {$sel:defaultCapacityProviderStrategy:Cluster' :: Maybe [CapacityProviderStrategyItem]
defaultCapacityProviderStrategy = Maybe [CapacityProviderStrategyItem]
a} :: Cluster) 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 number of tasks in the cluster that are in the @PENDING@ state.
cluster_pendingTasksCount :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Int)
cluster_pendingTasksCount :: Lens' Cluster (Maybe Int)
cluster_pendingTasksCount = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe Int
pendingTasksCount :: Maybe Int
$sel:pendingTasksCount:Cluster' :: Cluster -> Maybe Int
pendingTasksCount} -> Maybe Int
pendingTasksCount) (\s :: Cluster
s@Cluster' {} Maybe Int
a -> Cluster
s {$sel:pendingTasksCount:Cluster' :: Maybe Int
pendingTasksCount = Maybe Int
a} :: Cluster)

-- | The number of container instances registered into the cluster. This
-- includes container instances in both @ACTIVE@ and @DRAINING@ status.
cluster_registeredContainerInstancesCount :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Int)
cluster_registeredContainerInstancesCount :: Lens' Cluster (Maybe Int)
cluster_registeredContainerInstancesCount = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe Int
registeredContainerInstancesCount :: Maybe Int
$sel:registeredContainerInstancesCount:Cluster' :: Cluster -> Maybe Int
registeredContainerInstancesCount} -> Maybe Int
registeredContainerInstancesCount) (\s :: Cluster
s@Cluster' {} Maybe Int
a -> Cluster
s {$sel:registeredContainerInstancesCount:Cluster' :: Maybe Int
registeredContainerInstancesCount = Maybe Int
a} :: Cluster)

-- | The number of tasks in the cluster that are in the @RUNNING@ state.
cluster_runningTasksCount :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Int)
cluster_runningTasksCount :: Lens' Cluster (Maybe Int)
cluster_runningTasksCount = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe Int
runningTasksCount :: Maybe Int
$sel:runningTasksCount:Cluster' :: Cluster -> Maybe Int
runningTasksCount} -> Maybe Int
runningTasksCount) (\s :: Cluster
s@Cluster' {} Maybe Int
a -> Cluster
s {$sel:runningTasksCount:Cluster' :: Maybe Int
runningTasksCount = Maybe Int
a} :: Cluster)

-- | Use this parameter to set a default Service Connect namespace. After you
-- set a default Service Connect namespace, any new services with Service
-- Connect turned on that are created in the cluster are added as client
-- services in the namespace. This setting only applies to new services
-- that set the @enabled@ parameter to @true@ in the
-- @ServiceConnectConfiguration@. You can set the namespace of each service
-- individually in the @ServiceConnectConfiguration@ to override this
-- default parameter.
--
-- Tasks that run in a namespace can use short names to connect to services
-- in the namespace. Tasks can connect to services across all of the
-- clusters in the namespace. Tasks connect through a managed proxy
-- container that collects logs and metrics for increased visibility. Only
-- the tasks that Amazon ECS services create are supported with Service
-- Connect. For more information, see
-- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html Service Connect>
-- in the /Amazon Elastic Container Service Developer Guide/.
cluster_serviceConnectDefaults :: Lens.Lens' Cluster (Prelude.Maybe ClusterServiceConnectDefaults)
cluster_serviceConnectDefaults :: Lens' Cluster (Maybe ClusterServiceConnectDefaults)
cluster_serviceConnectDefaults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe ClusterServiceConnectDefaults
serviceConnectDefaults :: Maybe ClusterServiceConnectDefaults
$sel:serviceConnectDefaults:Cluster' :: Cluster -> Maybe ClusterServiceConnectDefaults
serviceConnectDefaults} -> Maybe ClusterServiceConnectDefaults
serviceConnectDefaults) (\s :: Cluster
s@Cluster' {} Maybe ClusterServiceConnectDefaults
a -> Cluster
s {$sel:serviceConnectDefaults:Cluster' :: Maybe ClusterServiceConnectDefaults
serviceConnectDefaults = Maybe ClusterServiceConnectDefaults
a} :: Cluster)

-- | The settings for the cluster. This parameter indicates whether
-- CloudWatch Container Insights is enabled or disabled for a cluster.
cluster_settings :: Lens.Lens' Cluster (Prelude.Maybe [ClusterSetting])
cluster_settings :: Lens' Cluster (Maybe [ClusterSetting])
cluster_settings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe [ClusterSetting]
settings :: Maybe [ClusterSetting]
$sel:settings:Cluster' :: Cluster -> Maybe [ClusterSetting]
settings} -> Maybe [ClusterSetting]
settings) (\s :: Cluster
s@Cluster' {} Maybe [ClusterSetting]
a -> Cluster
s {$sel:settings:Cluster' :: Maybe [ClusterSetting]
settings = Maybe [ClusterSetting]
a} :: Cluster) 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

-- | Additional information about your clusters that are separated by launch
-- type. They include the following:
--
-- -   runningEC2TasksCount
--
-- -   RunningFargateTasksCount
--
-- -   pendingEC2TasksCount
--
-- -   pendingFargateTasksCount
--
-- -   activeEC2ServiceCount
--
-- -   activeFargateServiceCount
--
-- -   drainingEC2ServiceCount
--
-- -   drainingFargateServiceCount
cluster_statistics :: Lens.Lens' Cluster (Prelude.Maybe [KeyValuePair])
cluster_statistics :: Lens' Cluster (Maybe [KeyValuePair])
cluster_statistics = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe [KeyValuePair]
statistics :: Maybe [KeyValuePair]
$sel:statistics:Cluster' :: Cluster -> Maybe [KeyValuePair]
statistics} -> Maybe [KeyValuePair]
statistics) (\s :: Cluster
s@Cluster' {} Maybe [KeyValuePair]
a -> Cluster
s {$sel:statistics:Cluster' :: Maybe [KeyValuePair]
statistics = Maybe [KeyValuePair]
a} :: Cluster) 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 status of the cluster. The following are the possible states that
-- are returned.
--
-- [ACTIVE]
--     The cluster is ready to accept tasks and if applicable you can
--     register container instances with the cluster.
--
-- [PROVISIONING]
--     The cluster has capacity providers that are associated with it and
--     the resources needed for the capacity provider are being created.
--
-- [DEPROVISIONING]
--     The cluster has capacity providers that are associated with it and
--     the resources needed for the capacity provider are being deleted.
--
-- [FAILED]
--     The cluster has capacity providers that are associated with it and
--     the resources needed for the capacity provider have failed to
--     create.
--
-- [INACTIVE]
--     The cluster has been deleted. Clusters with an @INACTIVE@ status may
--     remain discoverable in your account for a period of time. However,
--     this behavior is subject to change in the future. We don\'t
--     recommend that you rely on @INACTIVE@ clusters persisting.
cluster_status :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)
cluster_status :: Lens' Cluster (Maybe Text)
cluster_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe Text
status :: Maybe Text
$sel:status:Cluster' :: Cluster -> Maybe Text
status} -> Maybe Text
status) (\s :: Cluster
s@Cluster' {} Maybe Text
a -> Cluster
s {$sel:status:Cluster' :: Maybe Text
status = Maybe Text
a} :: Cluster)

-- | The metadata that you apply to the cluster to help you categorize and
-- organize them. Each tag consists of a key and an optional value. You
-- define both.
--
-- The following basic restrictions apply to tags:
--
-- -   Maximum number of tags per resource - 50
--
-- -   For each resource, each tag key must be unique, and each tag key can
--     have only one value.
--
-- -   Maximum key length - 128 Unicode characters in UTF-8
--
-- -   Maximum value length - 256 Unicode characters in UTF-8
--
-- -   If your tagging schema is used across multiple services and
--     resources, remember that other services may have restrictions on
--     allowed characters. Generally allowed characters are: letters,
--     numbers, and spaces representable in UTF-8, and the following
--     characters: + - = . _ : \/ \@.
--
-- -   Tag keys and values are case-sensitive.
--
-- -   Do not use @aws:@, @AWS:@, or any upper or lowercase combination of
--     such as a prefix for either keys or values as it is reserved for
--     Amazon Web Services use. You cannot edit or delete tag keys or
--     values with this prefix. Tags with this prefix do not count against
--     your tags per resource limit.
cluster_tags :: Lens.Lens' Cluster (Prelude.Maybe [Tag])
cluster_tags :: Lens' Cluster (Maybe [Tag])
cluster_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:Cluster' :: Cluster -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: Cluster
s@Cluster' {} Maybe [Tag]
a -> Cluster
s {$sel:tags:Cluster' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: Cluster) 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

instance Data.FromJSON Cluster where
  parseJSON :: Value -> Parser Cluster
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"Cluster"
      ( \Object
x ->
          Maybe Int
-> Maybe [Attachment]
-> Maybe Text
-> Maybe [Text]
-> Maybe Text
-> Maybe Text
-> Maybe ClusterConfiguration
-> Maybe [CapacityProviderStrategyItem]
-> Maybe Int
-> Maybe Int
-> Maybe Int
-> Maybe ClusterServiceConnectDefaults
-> Maybe [ClusterSetting]
-> Maybe [KeyValuePair]
-> Maybe Text
-> Maybe [Tag]
-> Cluster
Cluster'
            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
"activeServicesCount")
            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
"attachments" 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
"attachmentsStatus")
            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
"capacityProviders"
                            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
"clusterArn")
            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
"clusterName")
            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
"configuration")
            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
"defaultCapacityProviderStrategy"
                            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
"pendingTasksCount")
            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
"registeredContainerInstancesCount")
            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
"runningTasksCount")
            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
"serviceConnectDefaults")
            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
"settings" 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
"statistics" 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
"status")
            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
"tags" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
      )

instance Prelude.Hashable Cluster where
  hashWithSalt :: Int -> Cluster -> Int
hashWithSalt Int
_salt Cluster' {Maybe Int
Maybe [Text]
Maybe [CapacityProviderStrategyItem]
Maybe [ClusterSetting]
Maybe [KeyValuePair]
Maybe [Attachment]
Maybe [Tag]
Maybe Text
Maybe ClusterServiceConnectDefaults
Maybe ClusterConfiguration
tags :: Maybe [Tag]
status :: Maybe Text
statistics :: Maybe [KeyValuePair]
settings :: Maybe [ClusterSetting]
serviceConnectDefaults :: Maybe ClusterServiceConnectDefaults
runningTasksCount :: Maybe Int
registeredContainerInstancesCount :: Maybe Int
pendingTasksCount :: Maybe Int
defaultCapacityProviderStrategy :: Maybe [CapacityProviderStrategyItem]
configuration :: Maybe ClusterConfiguration
clusterName :: Maybe Text
clusterArn :: Maybe Text
capacityProviders :: Maybe [Text]
attachmentsStatus :: Maybe Text
attachments :: Maybe [Attachment]
activeServicesCount :: Maybe Int
$sel:tags:Cluster' :: Cluster -> Maybe [Tag]
$sel:status:Cluster' :: Cluster -> Maybe Text
$sel:statistics:Cluster' :: Cluster -> Maybe [KeyValuePair]
$sel:settings:Cluster' :: Cluster -> Maybe [ClusterSetting]
$sel:serviceConnectDefaults:Cluster' :: Cluster -> Maybe ClusterServiceConnectDefaults
$sel:runningTasksCount:Cluster' :: Cluster -> Maybe Int
$sel:registeredContainerInstancesCount:Cluster' :: Cluster -> Maybe Int
$sel:pendingTasksCount:Cluster' :: Cluster -> Maybe Int
$sel:defaultCapacityProviderStrategy:Cluster' :: Cluster -> Maybe [CapacityProviderStrategyItem]
$sel:configuration:Cluster' :: Cluster -> Maybe ClusterConfiguration
$sel:clusterName:Cluster' :: Cluster -> Maybe Text
$sel:clusterArn:Cluster' :: Cluster -> Maybe Text
$sel:capacityProviders:Cluster' :: Cluster -> Maybe [Text]
$sel:attachmentsStatus:Cluster' :: Cluster -> Maybe Text
$sel:attachments:Cluster' :: Cluster -> Maybe [Attachment]
$sel:activeServicesCount:Cluster' :: Cluster -> Maybe Int
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
activeServicesCount
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Attachment]
attachments
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
attachmentsStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
capacityProviders
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
clusterArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
clusterName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ClusterConfiguration
configuration
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [CapacityProviderStrategyItem]
defaultCapacityProviderStrategy
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
pendingTasksCount
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
registeredContainerInstancesCount
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
runningTasksCount
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ClusterServiceConnectDefaults
serviceConnectDefaults
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [ClusterSetting]
settings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [KeyValuePair]
statistics
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
status
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Tag]
tags

instance Prelude.NFData Cluster where
  rnf :: Cluster -> ()
rnf Cluster' {Maybe Int
Maybe [Text]
Maybe [CapacityProviderStrategyItem]
Maybe [ClusterSetting]
Maybe [KeyValuePair]
Maybe [Attachment]
Maybe [Tag]
Maybe Text
Maybe ClusterServiceConnectDefaults
Maybe ClusterConfiguration
tags :: Maybe [Tag]
status :: Maybe Text
statistics :: Maybe [KeyValuePair]
settings :: Maybe [ClusterSetting]
serviceConnectDefaults :: Maybe ClusterServiceConnectDefaults
runningTasksCount :: Maybe Int
registeredContainerInstancesCount :: Maybe Int
pendingTasksCount :: Maybe Int
defaultCapacityProviderStrategy :: Maybe [CapacityProviderStrategyItem]
configuration :: Maybe ClusterConfiguration
clusterName :: Maybe Text
clusterArn :: Maybe Text
capacityProviders :: Maybe [Text]
attachmentsStatus :: Maybe Text
attachments :: Maybe [Attachment]
activeServicesCount :: Maybe Int
$sel:tags:Cluster' :: Cluster -> Maybe [Tag]
$sel:status:Cluster' :: Cluster -> Maybe Text
$sel:statistics:Cluster' :: Cluster -> Maybe [KeyValuePair]
$sel:settings:Cluster' :: Cluster -> Maybe [ClusterSetting]
$sel:serviceConnectDefaults:Cluster' :: Cluster -> Maybe ClusterServiceConnectDefaults
$sel:runningTasksCount:Cluster' :: Cluster -> Maybe Int
$sel:registeredContainerInstancesCount:Cluster' :: Cluster -> Maybe Int
$sel:pendingTasksCount:Cluster' :: Cluster -> Maybe Int
$sel:defaultCapacityProviderStrategy:Cluster' :: Cluster -> Maybe [CapacityProviderStrategyItem]
$sel:configuration:Cluster' :: Cluster -> Maybe ClusterConfiguration
$sel:clusterName:Cluster' :: Cluster -> Maybe Text
$sel:clusterArn:Cluster' :: Cluster -> Maybe Text
$sel:capacityProviders:Cluster' :: Cluster -> Maybe [Text]
$sel:attachmentsStatus:Cluster' :: Cluster -> Maybe Text
$sel:attachments:Cluster' :: Cluster -> Maybe [Attachment]
$sel:activeServicesCount:Cluster' :: Cluster -> Maybe Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
activeServicesCount
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Attachment]
attachments
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
attachmentsStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
capacityProviders
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
clusterArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
clusterName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ClusterConfiguration
configuration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [CapacityProviderStrategyItem]
defaultCapacityProviderStrategy
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
pendingTasksCount
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
registeredContainerInstancesCount
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
runningTasksCount
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ClusterServiceConnectDefaults
serviceConnectDefaults
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [ClusterSetting]
settings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [KeyValuePair]
statistics
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
status
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Tag]
tags