{-# 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.EKS.Types.Cluster
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.EKS.Types.Cluster where

import qualified Amazonka.Core as Core
import Amazonka.EKS.Types.Certificate
import Amazonka.EKS.Types.ClusterStatus
import Amazonka.EKS.Types.ConnectorConfigResponse
import Amazonka.EKS.Types.EncryptionConfig
import Amazonka.EKS.Types.Identity
import Amazonka.EKS.Types.KubernetesNetworkConfigResponse
import Amazonka.EKS.Types.Logging
import Amazonka.EKS.Types.VpcConfigResponse
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | An object representing an Amazon EKS cluster.
--
-- /See:/ 'newCluster' smart constructor.
data Cluster = Cluster'
  { -- | The current status of the cluster.
    Cluster -> Maybe ClusterStatus
status :: Prelude.Maybe ClusterStatus,
    -- | The Amazon Resource Name (ARN) of the cluster.
    Cluster -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | The Unix epoch timestamp in seconds for when the cluster was created.
    Cluster -> Maybe POSIX
createdAt :: Prelude.Maybe Core.POSIX,
    -- | The platform version of your Amazon EKS cluster. For more information,
    -- see
    -- <https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html Platform Versions>
    -- in the //Amazon EKS User Guide// .
    Cluster -> Maybe Text
platformVersion :: Prelude.Maybe Prelude.Text,
    -- | The Kubernetes network configuration for the cluster.
    Cluster -> Maybe KubernetesNetworkConfigResponse
kubernetesNetworkConfig :: Prelude.Maybe KubernetesNetworkConfigResponse,
    -- | The configuration used to connect to a cluster for registration.
    Cluster -> Maybe ConnectorConfigResponse
connectorConfig :: Prelude.Maybe ConnectorConfigResponse,
    -- | The @certificate-authority-data@ for your cluster.
    Cluster -> Maybe Certificate
certificateAuthority :: Prelude.Maybe Certificate,
    -- | The name of the cluster.
    Cluster -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | The Kubernetes server version for the cluster.
    Cluster -> Maybe Text
version :: Prelude.Maybe Prelude.Text,
    -- | The encryption configuration for the cluster.
    Cluster -> Maybe [EncryptionConfig]
encryptionConfig :: Prelude.Maybe [EncryptionConfig],
    -- | The endpoint for your Kubernetes API server.
    Cluster -> Maybe Text
endpoint :: Prelude.Maybe Prelude.Text,
    -- | Unique, case-sensitive identifier that you provide to ensure the
    -- idempotency of the request.
    Cluster -> Maybe Text
clientRequestToken :: Prelude.Maybe Prelude.Text,
    -- | The logging configuration for your cluster.
    Cluster -> Maybe Logging
logging :: Prelude.Maybe Logging,
    -- | The identity provider information for the cluster.
    Cluster -> Maybe Identity
identity :: Prelude.Maybe Identity,
    -- | The VPC configuration used by the cluster control plane. Amazon EKS VPC
    -- resources have specific requirements to work properly with Kubernetes.
    -- For more information, see
    -- <https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html Cluster VPC Considerations>
    -- and
    -- <https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html Cluster Security Group Considerations>
    -- in the /Amazon EKS User Guide/.
    Cluster -> Maybe VpcConfigResponse
resourcesVpcConfig :: Prelude.Maybe VpcConfigResponse,
    -- | The metadata that you apply to the cluster to assist with categorization
    -- and organization. Each tag consists of a key and an optional value, both
    -- of which you define. Cluster tags do not propagate to any other
    -- resources associated with the cluster.
    Cluster -> Maybe (HashMap Text Text)
tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | The Amazon Resource Name (ARN) of the IAM role that provides permissions
    -- for the Kubernetes control plane to make calls to Amazon Web Services
    -- API operations on your behalf.
    Cluster -> Maybe Text
roleArn :: Prelude.Maybe Prelude.Text
  }
  deriving (Cluster -> Cluster -> Bool
(Cluster -> Cluster -> Bool)
-> (Cluster -> Cluster -> Bool) -> Eq Cluster
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]
(Int -> ReadS Cluster)
-> ReadS [Cluster]
-> ReadPrec Cluster
-> ReadPrec [Cluster]
-> Read 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
(Int -> Cluster -> ShowS)
-> (Cluster -> String) -> ([Cluster] -> ShowS) -> Show Cluster
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. Cluster -> Rep Cluster x)
-> (forall x. Rep Cluster x -> Cluster) -> Generic Cluster
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:
--
-- 'status', 'cluster_status' - The current status of the cluster.
--
-- 'arn', 'cluster_arn' - The Amazon Resource Name (ARN) of the cluster.
--
-- 'createdAt', 'cluster_createdAt' - The Unix epoch timestamp in seconds for when the cluster was created.
--
-- 'platformVersion', 'cluster_platformVersion' - The platform version of your Amazon EKS cluster. For more information,
-- see
-- <https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html Platform Versions>
-- in the //Amazon EKS User Guide// .
--
-- 'kubernetesNetworkConfig', 'cluster_kubernetesNetworkConfig' - The Kubernetes network configuration for the cluster.
--
-- 'connectorConfig', 'cluster_connectorConfig' - The configuration used to connect to a cluster for registration.
--
-- 'certificateAuthority', 'cluster_certificateAuthority' - The @certificate-authority-data@ for your cluster.
--
-- 'name', 'cluster_name' - The name of the cluster.
--
-- 'version', 'cluster_version' - The Kubernetes server version for the cluster.
--
-- 'encryptionConfig', 'cluster_encryptionConfig' - The encryption configuration for the cluster.
--
-- 'endpoint', 'cluster_endpoint' - The endpoint for your Kubernetes API server.
--
-- 'clientRequestToken', 'cluster_clientRequestToken' - Unique, case-sensitive identifier that you provide to ensure the
-- idempotency of the request.
--
-- 'logging', 'cluster_logging' - The logging configuration for your cluster.
--
-- 'identity', 'cluster_identity' - The identity provider information for the cluster.
--
-- 'resourcesVpcConfig', 'cluster_resourcesVpcConfig' - The VPC configuration used by the cluster control plane. Amazon EKS VPC
-- resources have specific requirements to work properly with Kubernetes.
-- For more information, see
-- <https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html Cluster VPC Considerations>
-- and
-- <https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html Cluster Security Group Considerations>
-- in the /Amazon EKS User Guide/.
--
-- 'tags', 'cluster_tags' - The metadata that you apply to the cluster to assist with categorization
-- and organization. Each tag consists of a key and an optional value, both
-- of which you define. Cluster tags do not propagate to any other
-- resources associated with the cluster.
--
-- 'roleArn', 'cluster_roleArn' - The Amazon Resource Name (ARN) of the IAM role that provides permissions
-- for the Kubernetes control plane to make calls to Amazon Web Services
-- API operations on your behalf.
newCluster ::
  Cluster
newCluster :: Cluster
newCluster =
  Cluster' :: Maybe ClusterStatus
-> Maybe Text
-> Maybe POSIX
-> Maybe Text
-> Maybe KubernetesNetworkConfigResponse
-> Maybe ConnectorConfigResponse
-> Maybe Certificate
-> Maybe Text
-> Maybe Text
-> Maybe [EncryptionConfig]
-> Maybe Text
-> Maybe Text
-> Maybe Logging
-> Maybe Identity
-> Maybe VpcConfigResponse
-> Maybe (HashMap Text Text)
-> Maybe Text
-> Cluster
Cluster'
    { $sel:status:Cluster' :: Maybe ClusterStatus
status = Maybe ClusterStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:arn:Cluster' :: Maybe Text
arn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:createdAt:Cluster' :: Maybe POSIX
createdAt = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:platformVersion:Cluster' :: Maybe Text
platformVersion = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:kubernetesNetworkConfig:Cluster' :: Maybe KubernetesNetworkConfigResponse
kubernetesNetworkConfig = Maybe KubernetesNetworkConfigResponse
forall a. Maybe a
Prelude.Nothing,
      $sel:connectorConfig:Cluster' :: Maybe ConnectorConfigResponse
connectorConfig = Maybe ConnectorConfigResponse
forall a. Maybe a
Prelude.Nothing,
      $sel:certificateAuthority:Cluster' :: Maybe Certificate
certificateAuthority = Maybe Certificate
forall a. Maybe a
Prelude.Nothing,
      $sel:name:Cluster' :: Maybe Text
name = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:version:Cluster' :: Maybe Text
version = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:encryptionConfig:Cluster' :: Maybe [EncryptionConfig]
encryptionConfig = Maybe [EncryptionConfig]
forall a. Maybe a
Prelude.Nothing,
      $sel:endpoint:Cluster' :: Maybe Text
endpoint = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:clientRequestToken:Cluster' :: Maybe Text
clientRequestToken = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:logging:Cluster' :: Maybe Logging
logging = Maybe Logging
forall a. Maybe a
Prelude.Nothing,
      $sel:identity:Cluster' :: Maybe Identity
identity = Maybe Identity
forall a. Maybe a
Prelude.Nothing,
      $sel:resourcesVpcConfig:Cluster' :: Maybe VpcConfigResponse
resourcesVpcConfig = Maybe VpcConfigResponse
forall a. Maybe a
Prelude.Nothing,
      $sel:tags:Cluster' :: Maybe (HashMap Text Text)
tags = Maybe (HashMap Text Text)
forall a. Maybe a
Prelude.Nothing,
      $sel:roleArn:Cluster' :: Maybe Text
roleArn = Maybe Text
forall a. Maybe a
Prelude.Nothing
    }

-- | The current status of the cluster.
cluster_status :: Lens.Lens' Cluster (Prelude.Maybe ClusterStatus)
cluster_status :: (Maybe ClusterStatus -> f (Maybe ClusterStatus))
-> Cluster -> f Cluster
cluster_status = (Cluster -> Maybe ClusterStatus)
-> (Cluster -> Maybe ClusterStatus -> Cluster)
-> Lens Cluster Cluster (Maybe ClusterStatus) (Maybe ClusterStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe ClusterStatus
status :: Maybe ClusterStatus
$sel:status:Cluster' :: Cluster -> Maybe ClusterStatus
status} -> Maybe ClusterStatus
status) (\s :: Cluster
s@Cluster' {} Maybe ClusterStatus
a -> Cluster
s {$sel:status:Cluster' :: Maybe ClusterStatus
status = Maybe ClusterStatus
a} :: Cluster)

-- | The Amazon Resource Name (ARN) of the cluster.
cluster_arn :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)
cluster_arn :: (Maybe Text -> f (Maybe Text)) -> Cluster -> f Cluster
cluster_arn = (Cluster -> Maybe Text)
-> (Cluster -> Maybe Text -> Cluster)
-> Lens Cluster Cluster (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe Text
arn :: Maybe Text
$sel:arn:Cluster' :: Cluster -> Maybe Text
arn} -> Maybe Text
arn) (\s :: Cluster
s@Cluster' {} Maybe Text
a -> Cluster
s {$sel:arn:Cluster' :: Maybe Text
arn = Maybe Text
a} :: Cluster)

-- | The Unix epoch timestamp in seconds for when the cluster was created.
cluster_createdAt :: Lens.Lens' Cluster (Prelude.Maybe Prelude.UTCTime)
cluster_createdAt :: (Maybe UTCTime -> f (Maybe UTCTime)) -> Cluster -> f Cluster
cluster_createdAt = (Cluster -> Maybe POSIX)
-> (Cluster -> Maybe POSIX -> Cluster)
-> Lens Cluster Cluster (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe POSIX
createdAt :: Maybe POSIX
$sel:createdAt:Cluster' :: Cluster -> Maybe POSIX
createdAt} -> Maybe POSIX
createdAt) (\s :: Cluster
s@Cluster' {} Maybe POSIX
a -> Cluster
s {$sel:createdAt:Cluster' :: Maybe POSIX
createdAt = Maybe POSIX
a} :: Cluster) ((Maybe POSIX -> f (Maybe POSIX)) -> Cluster -> f Cluster)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> Cluster
-> f Cluster
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The platform version of your Amazon EKS cluster. For more information,
-- see
-- <https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html Platform Versions>
-- in the //Amazon EKS User Guide// .
cluster_platformVersion :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)
cluster_platformVersion :: (Maybe Text -> f (Maybe Text)) -> Cluster -> f Cluster
cluster_platformVersion = (Cluster -> Maybe Text)
-> (Cluster -> Maybe Text -> Cluster)
-> Lens Cluster Cluster (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe Text
platformVersion :: Maybe Text
$sel:platformVersion:Cluster' :: Cluster -> Maybe Text
platformVersion} -> Maybe Text
platformVersion) (\s :: Cluster
s@Cluster' {} Maybe Text
a -> Cluster
s {$sel:platformVersion:Cluster' :: Maybe Text
platformVersion = Maybe Text
a} :: Cluster)

-- | The Kubernetes network configuration for the cluster.
cluster_kubernetesNetworkConfig :: Lens.Lens' Cluster (Prelude.Maybe KubernetesNetworkConfigResponse)
cluster_kubernetesNetworkConfig :: (Maybe KubernetesNetworkConfigResponse
 -> f (Maybe KubernetesNetworkConfigResponse))
-> Cluster -> f Cluster
cluster_kubernetesNetworkConfig = (Cluster -> Maybe KubernetesNetworkConfigResponse)
-> (Cluster -> Maybe KubernetesNetworkConfigResponse -> Cluster)
-> Lens
     Cluster
     Cluster
     (Maybe KubernetesNetworkConfigResponse)
     (Maybe KubernetesNetworkConfigResponse)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe KubernetesNetworkConfigResponse
kubernetesNetworkConfig :: Maybe KubernetesNetworkConfigResponse
$sel:kubernetesNetworkConfig:Cluster' :: Cluster -> Maybe KubernetesNetworkConfigResponse
kubernetesNetworkConfig} -> Maybe KubernetesNetworkConfigResponse
kubernetesNetworkConfig) (\s :: Cluster
s@Cluster' {} Maybe KubernetesNetworkConfigResponse
a -> Cluster
s {$sel:kubernetesNetworkConfig:Cluster' :: Maybe KubernetesNetworkConfigResponse
kubernetesNetworkConfig = Maybe KubernetesNetworkConfigResponse
a} :: Cluster)

-- | The configuration used to connect to a cluster for registration.
cluster_connectorConfig :: Lens.Lens' Cluster (Prelude.Maybe ConnectorConfigResponse)
cluster_connectorConfig :: (Maybe ConnectorConfigResponse
 -> f (Maybe ConnectorConfigResponse))
-> Cluster -> f Cluster
cluster_connectorConfig = (Cluster -> Maybe ConnectorConfigResponse)
-> (Cluster -> Maybe ConnectorConfigResponse -> Cluster)
-> Lens
     Cluster
     Cluster
     (Maybe ConnectorConfigResponse)
     (Maybe ConnectorConfigResponse)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe ConnectorConfigResponse
connectorConfig :: Maybe ConnectorConfigResponse
$sel:connectorConfig:Cluster' :: Cluster -> Maybe ConnectorConfigResponse
connectorConfig} -> Maybe ConnectorConfigResponse
connectorConfig) (\s :: Cluster
s@Cluster' {} Maybe ConnectorConfigResponse
a -> Cluster
s {$sel:connectorConfig:Cluster' :: Maybe ConnectorConfigResponse
connectorConfig = Maybe ConnectorConfigResponse
a} :: Cluster)

-- | The @certificate-authority-data@ for your cluster.
cluster_certificateAuthority :: Lens.Lens' Cluster (Prelude.Maybe Certificate)
cluster_certificateAuthority :: (Maybe Certificate -> f (Maybe Certificate))
-> Cluster -> f Cluster
cluster_certificateAuthority = (Cluster -> Maybe Certificate)
-> (Cluster -> Maybe Certificate -> Cluster)
-> Lens Cluster Cluster (Maybe Certificate) (Maybe Certificate)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe Certificate
certificateAuthority :: Maybe Certificate
$sel:certificateAuthority:Cluster' :: Cluster -> Maybe Certificate
certificateAuthority} -> Maybe Certificate
certificateAuthority) (\s :: Cluster
s@Cluster' {} Maybe Certificate
a -> Cluster
s {$sel:certificateAuthority:Cluster' :: Maybe Certificate
certificateAuthority = Maybe Certificate
a} :: Cluster)

-- | The name of the cluster.
cluster_name :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)
cluster_name :: (Maybe Text -> f (Maybe Text)) -> Cluster -> f Cluster
cluster_name = (Cluster -> Maybe Text)
-> (Cluster -> Maybe Text -> Cluster)
-> Lens Cluster Cluster (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe Text
name :: Maybe Text
$sel:name:Cluster' :: Cluster -> Maybe Text
name} -> Maybe Text
name) (\s :: Cluster
s@Cluster' {} Maybe Text
a -> Cluster
s {$sel:name:Cluster' :: Maybe Text
name = Maybe Text
a} :: Cluster)

-- | The Kubernetes server version for the cluster.
cluster_version :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)
cluster_version :: (Maybe Text -> f (Maybe Text)) -> Cluster -> f Cluster
cluster_version = (Cluster -> Maybe Text)
-> (Cluster -> Maybe Text -> Cluster)
-> Lens Cluster Cluster (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe Text
version :: Maybe Text
$sel:version:Cluster' :: Cluster -> Maybe Text
version} -> Maybe Text
version) (\s :: Cluster
s@Cluster' {} Maybe Text
a -> Cluster
s {$sel:version:Cluster' :: Maybe Text
version = Maybe Text
a} :: Cluster)

-- | The encryption configuration for the cluster.
cluster_encryptionConfig :: Lens.Lens' Cluster (Prelude.Maybe [EncryptionConfig])
cluster_encryptionConfig :: (Maybe [EncryptionConfig] -> f (Maybe [EncryptionConfig]))
-> Cluster -> f Cluster
cluster_encryptionConfig = (Cluster -> Maybe [EncryptionConfig])
-> (Cluster -> Maybe [EncryptionConfig] -> Cluster)
-> Lens
     Cluster
     Cluster
     (Maybe [EncryptionConfig])
     (Maybe [EncryptionConfig])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe [EncryptionConfig]
encryptionConfig :: Maybe [EncryptionConfig]
$sel:encryptionConfig:Cluster' :: Cluster -> Maybe [EncryptionConfig]
encryptionConfig} -> Maybe [EncryptionConfig]
encryptionConfig) (\s :: Cluster
s@Cluster' {} Maybe [EncryptionConfig]
a -> Cluster
s {$sel:encryptionConfig:Cluster' :: Maybe [EncryptionConfig]
encryptionConfig = Maybe [EncryptionConfig]
a} :: Cluster) ((Maybe [EncryptionConfig] -> f (Maybe [EncryptionConfig]))
 -> Cluster -> f Cluster)
-> ((Maybe [EncryptionConfig] -> f (Maybe [EncryptionConfig]))
    -> Maybe [EncryptionConfig] -> f (Maybe [EncryptionConfig]))
-> (Maybe [EncryptionConfig] -> f (Maybe [EncryptionConfig]))
-> Cluster
-> f Cluster
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [EncryptionConfig]
  [EncryptionConfig]
  [EncryptionConfig]
  [EncryptionConfig]
-> Iso
     (Maybe [EncryptionConfig])
     (Maybe [EncryptionConfig])
     (Maybe [EncryptionConfig])
     (Maybe [EncryptionConfig])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso
  [EncryptionConfig]
  [EncryptionConfig]
  [EncryptionConfig]
  [EncryptionConfig]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The endpoint for your Kubernetes API server.
cluster_endpoint :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)
cluster_endpoint :: (Maybe Text -> f (Maybe Text)) -> Cluster -> f Cluster
cluster_endpoint = (Cluster -> Maybe Text)
-> (Cluster -> Maybe Text -> Cluster)
-> Lens Cluster Cluster (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe Text
endpoint :: Maybe Text
$sel:endpoint:Cluster' :: Cluster -> Maybe Text
endpoint} -> Maybe Text
endpoint) (\s :: Cluster
s@Cluster' {} Maybe Text
a -> Cluster
s {$sel:endpoint:Cluster' :: Maybe Text
endpoint = Maybe Text
a} :: Cluster)

-- | Unique, case-sensitive identifier that you provide to ensure the
-- idempotency of the request.
cluster_clientRequestToken :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)
cluster_clientRequestToken :: (Maybe Text -> f (Maybe Text)) -> Cluster -> f Cluster
cluster_clientRequestToken = (Cluster -> Maybe Text)
-> (Cluster -> Maybe Text -> Cluster)
-> Lens Cluster Cluster (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe Text
clientRequestToken :: Maybe Text
$sel:clientRequestToken:Cluster' :: Cluster -> Maybe Text
clientRequestToken} -> Maybe Text
clientRequestToken) (\s :: Cluster
s@Cluster' {} Maybe Text
a -> Cluster
s {$sel:clientRequestToken:Cluster' :: Maybe Text
clientRequestToken = Maybe Text
a} :: Cluster)

-- | The logging configuration for your cluster.
cluster_logging :: Lens.Lens' Cluster (Prelude.Maybe Logging)
cluster_logging :: (Maybe Logging -> f (Maybe Logging)) -> Cluster -> f Cluster
cluster_logging = (Cluster -> Maybe Logging)
-> (Cluster -> Maybe Logging -> Cluster)
-> Lens Cluster Cluster (Maybe Logging) (Maybe Logging)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe Logging
logging :: Maybe Logging
$sel:logging:Cluster' :: Cluster -> Maybe Logging
logging} -> Maybe Logging
logging) (\s :: Cluster
s@Cluster' {} Maybe Logging
a -> Cluster
s {$sel:logging:Cluster' :: Maybe Logging
logging = Maybe Logging
a} :: Cluster)

-- | The identity provider information for the cluster.
cluster_identity :: Lens.Lens' Cluster (Prelude.Maybe Identity)
cluster_identity :: (Maybe Identity -> f (Maybe Identity)) -> Cluster -> f Cluster
cluster_identity = (Cluster -> Maybe Identity)
-> (Cluster -> Maybe Identity -> Cluster)
-> Lens Cluster Cluster (Maybe Identity) (Maybe Identity)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe Identity
identity :: Maybe Identity
$sel:identity:Cluster' :: Cluster -> Maybe Identity
identity} -> Maybe Identity
identity) (\s :: Cluster
s@Cluster' {} Maybe Identity
a -> Cluster
s {$sel:identity:Cluster' :: Maybe Identity
identity = Maybe Identity
a} :: Cluster)

-- | The VPC configuration used by the cluster control plane. Amazon EKS VPC
-- resources have specific requirements to work properly with Kubernetes.
-- For more information, see
-- <https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html Cluster VPC Considerations>
-- and
-- <https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html Cluster Security Group Considerations>
-- in the /Amazon EKS User Guide/.
cluster_resourcesVpcConfig :: Lens.Lens' Cluster (Prelude.Maybe VpcConfigResponse)
cluster_resourcesVpcConfig :: (Maybe VpcConfigResponse -> f (Maybe VpcConfigResponse))
-> Cluster -> f Cluster
cluster_resourcesVpcConfig = (Cluster -> Maybe VpcConfigResponse)
-> (Cluster -> Maybe VpcConfigResponse -> Cluster)
-> Lens
     Cluster Cluster (Maybe VpcConfigResponse) (Maybe VpcConfigResponse)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe VpcConfigResponse
resourcesVpcConfig :: Maybe VpcConfigResponse
$sel:resourcesVpcConfig:Cluster' :: Cluster -> Maybe VpcConfigResponse
resourcesVpcConfig} -> Maybe VpcConfigResponse
resourcesVpcConfig) (\s :: Cluster
s@Cluster' {} Maybe VpcConfigResponse
a -> Cluster
s {$sel:resourcesVpcConfig:Cluster' :: Maybe VpcConfigResponse
resourcesVpcConfig = Maybe VpcConfigResponse
a} :: Cluster)

-- | The metadata that you apply to the cluster to assist with categorization
-- and organization. Each tag consists of a key and an optional value, both
-- of which you define. Cluster tags do not propagate to any other
-- resources associated with the cluster.
cluster_tags :: Lens.Lens' Cluster (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
cluster_tags :: (Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> Cluster -> f Cluster
cluster_tags = (Cluster -> Maybe (HashMap Text Text))
-> (Cluster -> Maybe (HashMap Text Text) -> Cluster)
-> Lens
     Cluster
     Cluster
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe (HashMap Text Text)
tags :: Maybe (HashMap Text Text)
$sel:tags:Cluster' :: Cluster -> Maybe (HashMap Text Text)
tags} -> Maybe (HashMap Text Text)
tags) (\s :: Cluster
s@Cluster' {} Maybe (HashMap Text Text)
a -> Cluster
s {$sel:tags:Cluster' :: Maybe (HashMap Text Text)
tags = Maybe (HashMap Text Text)
a} :: Cluster) ((Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
 -> Cluster -> f Cluster)
-> ((Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
    -> Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> (Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> Cluster
-> f Cluster
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
-> Iso
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The Amazon Resource Name (ARN) of the IAM role that provides permissions
-- for the Kubernetes control plane to make calls to Amazon Web Services
-- API operations on your behalf.
cluster_roleArn :: Lens.Lens' Cluster (Prelude.Maybe Prelude.Text)
cluster_roleArn :: (Maybe Text -> f (Maybe Text)) -> Cluster -> f Cluster
cluster_roleArn = (Cluster -> Maybe Text)
-> (Cluster -> Maybe Text -> Cluster)
-> Lens Cluster Cluster (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Cluster' {Maybe Text
roleArn :: Maybe Text
$sel:roleArn:Cluster' :: Cluster -> Maybe Text
roleArn} -> Maybe Text
roleArn) (\s :: Cluster
s@Cluster' {} Maybe Text
a -> Cluster
s {$sel:roleArn:Cluster' :: Maybe Text
roleArn = Maybe Text
a} :: Cluster)

instance Core.FromJSON Cluster where
  parseJSON :: Value -> Parser Cluster
parseJSON =
    String -> (Object -> Parser Cluster) -> Value -> Parser Cluster
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"Cluster"
      ( \Object
x ->
          Maybe ClusterStatus
-> Maybe Text
-> Maybe POSIX
-> Maybe Text
-> Maybe KubernetesNetworkConfigResponse
-> Maybe ConnectorConfigResponse
-> Maybe Certificate
-> Maybe Text
-> Maybe Text
-> Maybe [EncryptionConfig]
-> Maybe Text
-> Maybe Text
-> Maybe Logging
-> Maybe Identity
-> Maybe VpcConfigResponse
-> Maybe (HashMap Text Text)
-> Maybe Text
-> Cluster
Cluster'
            (Maybe ClusterStatus
 -> Maybe Text
 -> Maybe POSIX
 -> Maybe Text
 -> Maybe KubernetesNetworkConfigResponse
 -> Maybe ConnectorConfigResponse
 -> Maybe Certificate
 -> Maybe Text
 -> Maybe Text
 -> Maybe [EncryptionConfig]
 -> Maybe Text
 -> Maybe Text
 -> Maybe Logging
 -> Maybe Identity
 -> Maybe VpcConfigResponse
 -> Maybe (HashMap Text Text)
 -> Maybe Text
 -> Cluster)
-> Parser (Maybe ClusterStatus)
-> Parser
     (Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe KubernetesNetworkConfigResponse
      -> Maybe ConnectorConfigResponse
      -> Maybe Certificate
      -> Maybe Text
      -> Maybe Text
      -> Maybe [EncryptionConfig]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Logging
      -> Maybe Identity
      -> Maybe VpcConfigResponse
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Cluster)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe ClusterStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"status")
            Parser
  (Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe KubernetesNetworkConfigResponse
   -> Maybe ConnectorConfigResponse
   -> Maybe Certificate
   -> Maybe Text
   -> Maybe Text
   -> Maybe [EncryptionConfig]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Logging
   -> Maybe Identity
   -> Maybe VpcConfigResponse
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Cluster)
-> Parser (Maybe Text)
-> Parser
     (Maybe POSIX
      -> Maybe Text
      -> Maybe KubernetesNetworkConfigResponse
      -> Maybe ConnectorConfigResponse
      -> Maybe Certificate
      -> Maybe Text
      -> Maybe Text
      -> Maybe [EncryptionConfig]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Logging
      -> Maybe Identity
      -> Maybe VpcConfigResponse
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Cluster)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"arn")
            Parser
  (Maybe POSIX
   -> Maybe Text
   -> Maybe KubernetesNetworkConfigResponse
   -> Maybe ConnectorConfigResponse
   -> Maybe Certificate
   -> Maybe Text
   -> Maybe Text
   -> Maybe [EncryptionConfig]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Logging
   -> Maybe Identity
   -> Maybe VpcConfigResponse
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Cluster)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe Text
      -> Maybe KubernetesNetworkConfigResponse
      -> Maybe ConnectorConfigResponse
      -> Maybe Certificate
      -> Maybe Text
      -> Maybe Text
      -> Maybe [EncryptionConfig]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Logging
      -> Maybe Identity
      -> Maybe VpcConfigResponse
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Cluster)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"createdAt")
            Parser
  (Maybe Text
   -> Maybe KubernetesNetworkConfigResponse
   -> Maybe ConnectorConfigResponse
   -> Maybe Certificate
   -> Maybe Text
   -> Maybe Text
   -> Maybe [EncryptionConfig]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Logging
   -> Maybe Identity
   -> Maybe VpcConfigResponse
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Cluster)
-> Parser (Maybe Text)
-> Parser
     (Maybe KubernetesNetworkConfigResponse
      -> Maybe ConnectorConfigResponse
      -> Maybe Certificate
      -> Maybe Text
      -> Maybe Text
      -> Maybe [EncryptionConfig]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Logging
      -> Maybe Identity
      -> Maybe VpcConfigResponse
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Cluster)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"platformVersion")
            Parser
  (Maybe KubernetesNetworkConfigResponse
   -> Maybe ConnectorConfigResponse
   -> Maybe Certificate
   -> Maybe Text
   -> Maybe Text
   -> Maybe [EncryptionConfig]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Logging
   -> Maybe Identity
   -> Maybe VpcConfigResponse
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Cluster)
-> Parser (Maybe KubernetesNetworkConfigResponse)
-> Parser
     (Maybe ConnectorConfigResponse
      -> Maybe Certificate
      -> Maybe Text
      -> Maybe Text
      -> Maybe [EncryptionConfig]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Logging
      -> Maybe Identity
      -> Maybe VpcConfigResponse
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Cluster)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe KubernetesNetworkConfigResponse)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"kubernetesNetworkConfig")
            Parser
  (Maybe ConnectorConfigResponse
   -> Maybe Certificate
   -> Maybe Text
   -> Maybe Text
   -> Maybe [EncryptionConfig]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Logging
   -> Maybe Identity
   -> Maybe VpcConfigResponse
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Cluster)
-> Parser (Maybe ConnectorConfigResponse)
-> Parser
     (Maybe Certificate
      -> Maybe Text
      -> Maybe Text
      -> Maybe [EncryptionConfig]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Logging
      -> Maybe Identity
      -> Maybe VpcConfigResponse
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Cluster)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ConnectorConfigResponse)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"connectorConfig")
            Parser
  (Maybe Certificate
   -> Maybe Text
   -> Maybe Text
   -> Maybe [EncryptionConfig]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Logging
   -> Maybe Identity
   -> Maybe VpcConfigResponse
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Cluster)
-> Parser (Maybe Certificate)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe [EncryptionConfig]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Logging
      -> Maybe Identity
      -> Maybe VpcConfigResponse
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Cluster)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Certificate)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"certificateAuthority")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe [EncryptionConfig]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Logging
   -> Maybe Identity
   -> Maybe VpcConfigResponse
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Cluster)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe [EncryptionConfig]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Logging
      -> Maybe Identity
      -> Maybe VpcConfigResponse
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Cluster)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"name")
            Parser
  (Maybe Text
   -> Maybe [EncryptionConfig]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Logging
   -> Maybe Identity
   -> Maybe VpcConfigResponse
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Cluster)
-> Parser (Maybe Text)
-> Parser
     (Maybe [EncryptionConfig]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Logging
      -> Maybe Identity
      -> Maybe VpcConfigResponse
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Cluster)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"version")
            Parser
  (Maybe [EncryptionConfig]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Logging
   -> Maybe Identity
   -> Maybe VpcConfigResponse
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Cluster)
-> Parser (Maybe [EncryptionConfig])
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Logging
      -> Maybe Identity
      -> Maybe VpcConfigResponse
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Cluster)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object -> Text -> Parser (Maybe (Maybe [EncryptionConfig]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"encryptionConfig"
                            Parser (Maybe (Maybe [EncryptionConfig]))
-> Maybe [EncryptionConfig] -> Parser (Maybe [EncryptionConfig])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [EncryptionConfig]
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Logging
   -> Maybe Identity
   -> Maybe VpcConfigResponse
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Cluster)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Logging
      -> Maybe Identity
      -> Maybe VpcConfigResponse
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Cluster)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"endpoint")
            Parser
  (Maybe Text
   -> Maybe Logging
   -> Maybe Identity
   -> Maybe VpcConfigResponse
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Cluster)
-> Parser (Maybe Text)
-> Parser
     (Maybe Logging
      -> Maybe Identity
      -> Maybe VpcConfigResponse
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Cluster)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"clientRequestToken")
            Parser
  (Maybe Logging
   -> Maybe Identity
   -> Maybe VpcConfigResponse
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Cluster)
-> Parser (Maybe Logging)
-> Parser
     (Maybe Identity
      -> Maybe VpcConfigResponse
      -> Maybe (HashMap Text Text)
      -> Maybe Text
      -> Cluster)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Logging)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"logging")
            Parser
  (Maybe Identity
   -> Maybe VpcConfigResponse
   -> Maybe (HashMap Text Text)
   -> Maybe Text
   -> Cluster)
-> Parser (Maybe Identity)
-> Parser
     (Maybe VpcConfigResponse
      -> Maybe (HashMap Text Text) -> Maybe Text -> Cluster)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Identity)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"identity")
            Parser
  (Maybe VpcConfigResponse
   -> Maybe (HashMap Text Text) -> Maybe Text -> Cluster)
-> Parser (Maybe VpcConfigResponse)
-> Parser (Maybe (HashMap Text Text) -> Maybe Text -> Cluster)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe VpcConfigResponse)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"resourcesVpcConfig")
            Parser (Maybe (HashMap Text Text) -> Maybe Text -> Cluster)
-> Parser (Maybe (HashMap Text Text))
-> Parser (Maybe Text -> Cluster)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe (HashMap Text Text)))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"tags" Parser (Maybe (Maybe (HashMap Text Text)))
-> Maybe (HashMap Text Text) -> Parser (Maybe (HashMap Text Text))
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe (HashMap Text Text)
forall a. Monoid a => a
Prelude.mempty)
            Parser (Maybe Text -> Cluster)
-> Parser (Maybe Text) -> Parser Cluster
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"roleArn")
      )

instance Prelude.Hashable Cluster

instance Prelude.NFData Cluster