{-# 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.ElasticSearch.Types.ElasticsearchDomainConfig
-- 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.ElasticSearch.Types.ElasticsearchDomainConfig where

import qualified Amazonka.Core as Core
import Amazonka.ElasticSearch.Types.AccessPoliciesStatus
import Amazonka.ElasticSearch.Types.AdvancedOptionsStatus
import Amazonka.ElasticSearch.Types.AdvancedSecurityOptionsStatus
import Amazonka.ElasticSearch.Types.AutoTuneOptionsStatus
import Amazonka.ElasticSearch.Types.CognitoOptionsStatus
import Amazonka.ElasticSearch.Types.DomainEndpointOptionsStatus
import Amazonka.ElasticSearch.Types.EBSOptionsStatus
import Amazonka.ElasticSearch.Types.ElasticsearchClusterConfigStatus
import Amazonka.ElasticSearch.Types.ElasticsearchVersionStatus
import Amazonka.ElasticSearch.Types.EncryptionAtRestOptionsStatus
import Amazonka.ElasticSearch.Types.LogPublishingOptionsStatus
import Amazonka.ElasticSearch.Types.NodeToNodeEncryptionOptionsStatus
import Amazonka.ElasticSearch.Types.SnapshotOptionsStatus
import Amazonka.ElasticSearch.Types.VPCDerivedInfoStatus
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | The configuration of an Elasticsearch domain.
--
-- /See:/ 'newElasticsearchDomainConfig' smart constructor.
data ElasticsearchDomainConfig = ElasticsearchDomainConfig'
  { -- | Specifies the @EBSOptions@ for the Elasticsearch domain.
    ElasticsearchDomainConfig -> Maybe EBSOptionsStatus
eBSOptions :: Prelude.Maybe EBSOptionsStatus,
    -- | Specifies the @NodeToNodeEncryptionOptions@ for the Elasticsearch
    -- domain.
    ElasticsearchDomainConfig
-> Maybe NodeToNodeEncryptionOptionsStatus
nodeToNodeEncryptionOptions :: Prelude.Maybe NodeToNodeEncryptionOptionsStatus,
    -- | IAM access policy as a JSON-formatted string.
    ElasticsearchDomainConfig -> Maybe AccessPoliciesStatus
accessPolicies :: Prelude.Maybe AccessPoliciesStatus,
    -- | Specifies @AutoTuneOptions@ for the domain.
    ElasticsearchDomainConfig -> Maybe AutoTuneOptionsStatus
autoTuneOptions :: Prelude.Maybe AutoTuneOptionsStatus,
    -- | Log publishing options for the given domain.
    ElasticsearchDomainConfig -> Maybe LogPublishingOptionsStatus
logPublishingOptions :: Prelude.Maybe LogPublishingOptionsStatus,
    -- | Specifies @AdvancedSecurityOptions@ for the domain.
    ElasticsearchDomainConfig -> Maybe AdvancedSecurityOptionsStatus
advancedSecurityOptions :: Prelude.Maybe AdvancedSecurityOptionsStatus,
    -- | Specifies the @ElasticsearchClusterConfig@ for the Elasticsearch domain.
    ElasticsearchDomainConfig -> Maybe ElasticsearchClusterConfigStatus
elasticsearchClusterConfig :: Prelude.Maybe ElasticsearchClusterConfigStatus,
    -- | Specifies the @SnapshotOptions@ for the Elasticsearch domain.
    ElasticsearchDomainConfig -> Maybe SnapshotOptionsStatus
snapshotOptions :: Prelude.Maybe SnapshotOptionsStatus,
    -- | The @CognitoOptions@ for the specified domain. For more information, see
    -- <http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-cognito-auth.html Amazon Cognito Authentication for Kibana>.
    ElasticsearchDomainConfig -> Maybe CognitoOptionsStatus
cognitoOptions :: Prelude.Maybe CognitoOptionsStatus,
    -- | Specifies the @EncryptionAtRestOptions@ for the Elasticsearch domain.
    ElasticsearchDomainConfig -> Maybe EncryptionAtRestOptionsStatus
encryptionAtRestOptions :: Prelude.Maybe EncryptionAtRestOptionsStatus,
    -- | The @VPCOptions@ for the specified domain. For more information, see
    -- <http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-vpc.html VPC Endpoints for Amazon Elasticsearch Service Domains>.
    ElasticsearchDomainConfig -> Maybe VPCDerivedInfoStatus
vPCOptions :: Prelude.Maybe VPCDerivedInfoStatus,
    -- | Specifies the @DomainEndpointOptions@ for the Elasticsearch domain.
    ElasticsearchDomainConfig -> Maybe DomainEndpointOptionsStatus
domainEndpointOptions :: Prelude.Maybe DomainEndpointOptionsStatus,
    -- | Specifies the @AdvancedOptions@ for the domain. See
    -- <http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-createupdatedomains.html#es-createdomain-configure-advanced-options Configuring Advanced Options>
    -- for more information.
    ElasticsearchDomainConfig -> Maybe AdvancedOptionsStatus
advancedOptions :: Prelude.Maybe AdvancedOptionsStatus,
    -- | String of format X.Y to specify version for the Elasticsearch domain.
    ElasticsearchDomainConfig -> Maybe ElasticsearchVersionStatus
elasticsearchVersion :: Prelude.Maybe ElasticsearchVersionStatus
  }
  deriving (ElasticsearchDomainConfig -> ElasticsearchDomainConfig -> Bool
(ElasticsearchDomainConfig -> ElasticsearchDomainConfig -> Bool)
-> (ElasticsearchDomainConfig -> ElasticsearchDomainConfig -> Bool)
-> Eq ElasticsearchDomainConfig
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ElasticsearchDomainConfig -> ElasticsearchDomainConfig -> Bool
$c/= :: ElasticsearchDomainConfig -> ElasticsearchDomainConfig -> Bool
== :: ElasticsearchDomainConfig -> ElasticsearchDomainConfig -> Bool
$c== :: ElasticsearchDomainConfig -> ElasticsearchDomainConfig -> Bool
Prelude.Eq, ReadPrec [ElasticsearchDomainConfig]
ReadPrec ElasticsearchDomainConfig
Int -> ReadS ElasticsearchDomainConfig
ReadS [ElasticsearchDomainConfig]
(Int -> ReadS ElasticsearchDomainConfig)
-> ReadS [ElasticsearchDomainConfig]
-> ReadPrec ElasticsearchDomainConfig
-> ReadPrec [ElasticsearchDomainConfig]
-> Read ElasticsearchDomainConfig
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ElasticsearchDomainConfig]
$creadListPrec :: ReadPrec [ElasticsearchDomainConfig]
readPrec :: ReadPrec ElasticsearchDomainConfig
$creadPrec :: ReadPrec ElasticsearchDomainConfig
readList :: ReadS [ElasticsearchDomainConfig]
$creadList :: ReadS [ElasticsearchDomainConfig]
readsPrec :: Int -> ReadS ElasticsearchDomainConfig
$creadsPrec :: Int -> ReadS ElasticsearchDomainConfig
Prelude.Read, Int -> ElasticsearchDomainConfig -> ShowS
[ElasticsearchDomainConfig] -> ShowS
ElasticsearchDomainConfig -> String
(Int -> ElasticsearchDomainConfig -> ShowS)
-> (ElasticsearchDomainConfig -> String)
-> ([ElasticsearchDomainConfig] -> ShowS)
-> Show ElasticsearchDomainConfig
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ElasticsearchDomainConfig] -> ShowS
$cshowList :: [ElasticsearchDomainConfig] -> ShowS
show :: ElasticsearchDomainConfig -> String
$cshow :: ElasticsearchDomainConfig -> String
showsPrec :: Int -> ElasticsearchDomainConfig -> ShowS
$cshowsPrec :: Int -> ElasticsearchDomainConfig -> ShowS
Prelude.Show, (forall x.
 ElasticsearchDomainConfig -> Rep ElasticsearchDomainConfig x)
-> (forall x.
    Rep ElasticsearchDomainConfig x -> ElasticsearchDomainConfig)
-> Generic ElasticsearchDomainConfig
forall x.
Rep ElasticsearchDomainConfig x -> ElasticsearchDomainConfig
forall x.
ElasticsearchDomainConfig -> Rep ElasticsearchDomainConfig x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ElasticsearchDomainConfig x -> ElasticsearchDomainConfig
$cfrom :: forall x.
ElasticsearchDomainConfig -> Rep ElasticsearchDomainConfig x
Prelude.Generic)

-- |
-- Create a value of 'ElasticsearchDomainConfig' 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:
--
-- 'eBSOptions', 'elasticsearchDomainConfig_eBSOptions' - Specifies the @EBSOptions@ for the Elasticsearch domain.
--
-- 'nodeToNodeEncryptionOptions', 'elasticsearchDomainConfig_nodeToNodeEncryptionOptions' - Specifies the @NodeToNodeEncryptionOptions@ for the Elasticsearch
-- domain.
--
-- 'accessPolicies', 'elasticsearchDomainConfig_accessPolicies' - IAM access policy as a JSON-formatted string.
--
-- 'autoTuneOptions', 'elasticsearchDomainConfig_autoTuneOptions' - Specifies @AutoTuneOptions@ for the domain.
--
-- 'logPublishingOptions', 'elasticsearchDomainConfig_logPublishingOptions' - Log publishing options for the given domain.
--
-- 'advancedSecurityOptions', 'elasticsearchDomainConfig_advancedSecurityOptions' - Specifies @AdvancedSecurityOptions@ for the domain.
--
-- 'elasticsearchClusterConfig', 'elasticsearchDomainConfig_elasticsearchClusterConfig' - Specifies the @ElasticsearchClusterConfig@ for the Elasticsearch domain.
--
-- 'snapshotOptions', 'elasticsearchDomainConfig_snapshotOptions' - Specifies the @SnapshotOptions@ for the Elasticsearch domain.
--
-- 'cognitoOptions', 'elasticsearchDomainConfig_cognitoOptions' - The @CognitoOptions@ for the specified domain. For more information, see
-- <http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-cognito-auth.html Amazon Cognito Authentication for Kibana>.
--
-- 'encryptionAtRestOptions', 'elasticsearchDomainConfig_encryptionAtRestOptions' - Specifies the @EncryptionAtRestOptions@ for the Elasticsearch domain.
--
-- 'vPCOptions', 'elasticsearchDomainConfig_vPCOptions' - The @VPCOptions@ for the specified domain. For more information, see
-- <http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-vpc.html VPC Endpoints for Amazon Elasticsearch Service Domains>.
--
-- 'domainEndpointOptions', 'elasticsearchDomainConfig_domainEndpointOptions' - Specifies the @DomainEndpointOptions@ for the Elasticsearch domain.
--
-- 'advancedOptions', 'elasticsearchDomainConfig_advancedOptions' - Specifies the @AdvancedOptions@ for the domain. See
-- <http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-createupdatedomains.html#es-createdomain-configure-advanced-options Configuring Advanced Options>
-- for more information.
--
-- 'elasticsearchVersion', 'elasticsearchDomainConfig_elasticsearchVersion' - String of format X.Y to specify version for the Elasticsearch domain.
newElasticsearchDomainConfig ::
  ElasticsearchDomainConfig
newElasticsearchDomainConfig :: ElasticsearchDomainConfig
newElasticsearchDomainConfig =
  ElasticsearchDomainConfig' :: Maybe EBSOptionsStatus
-> Maybe NodeToNodeEncryptionOptionsStatus
-> Maybe AccessPoliciesStatus
-> Maybe AutoTuneOptionsStatus
-> Maybe LogPublishingOptionsStatus
-> Maybe AdvancedSecurityOptionsStatus
-> Maybe ElasticsearchClusterConfigStatus
-> Maybe SnapshotOptionsStatus
-> Maybe CognitoOptionsStatus
-> Maybe EncryptionAtRestOptionsStatus
-> Maybe VPCDerivedInfoStatus
-> Maybe DomainEndpointOptionsStatus
-> Maybe AdvancedOptionsStatus
-> Maybe ElasticsearchVersionStatus
-> ElasticsearchDomainConfig
ElasticsearchDomainConfig'
    { $sel:eBSOptions:ElasticsearchDomainConfig' :: Maybe EBSOptionsStatus
eBSOptions =
        Maybe EBSOptionsStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:nodeToNodeEncryptionOptions:ElasticsearchDomainConfig' :: Maybe NodeToNodeEncryptionOptionsStatus
nodeToNodeEncryptionOptions = Maybe NodeToNodeEncryptionOptionsStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:accessPolicies:ElasticsearchDomainConfig' :: Maybe AccessPoliciesStatus
accessPolicies = Maybe AccessPoliciesStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:autoTuneOptions:ElasticsearchDomainConfig' :: Maybe AutoTuneOptionsStatus
autoTuneOptions = Maybe AutoTuneOptionsStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:logPublishingOptions:ElasticsearchDomainConfig' :: Maybe LogPublishingOptionsStatus
logPublishingOptions = Maybe LogPublishingOptionsStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:advancedSecurityOptions:ElasticsearchDomainConfig' :: Maybe AdvancedSecurityOptionsStatus
advancedSecurityOptions = Maybe AdvancedSecurityOptionsStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:elasticsearchClusterConfig:ElasticsearchDomainConfig' :: Maybe ElasticsearchClusterConfigStatus
elasticsearchClusterConfig = Maybe ElasticsearchClusterConfigStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:snapshotOptions:ElasticsearchDomainConfig' :: Maybe SnapshotOptionsStatus
snapshotOptions = Maybe SnapshotOptionsStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:cognitoOptions:ElasticsearchDomainConfig' :: Maybe CognitoOptionsStatus
cognitoOptions = Maybe CognitoOptionsStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:encryptionAtRestOptions:ElasticsearchDomainConfig' :: Maybe EncryptionAtRestOptionsStatus
encryptionAtRestOptions = Maybe EncryptionAtRestOptionsStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:vPCOptions:ElasticsearchDomainConfig' :: Maybe VPCDerivedInfoStatus
vPCOptions = Maybe VPCDerivedInfoStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:domainEndpointOptions:ElasticsearchDomainConfig' :: Maybe DomainEndpointOptionsStatus
domainEndpointOptions = Maybe DomainEndpointOptionsStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:advancedOptions:ElasticsearchDomainConfig' :: Maybe AdvancedOptionsStatus
advancedOptions = Maybe AdvancedOptionsStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:elasticsearchVersion:ElasticsearchDomainConfig' :: Maybe ElasticsearchVersionStatus
elasticsearchVersion = Maybe ElasticsearchVersionStatus
forall a. Maybe a
Prelude.Nothing
    }

-- | Specifies the @EBSOptions@ for the Elasticsearch domain.
elasticsearchDomainConfig_eBSOptions :: Lens.Lens' ElasticsearchDomainConfig (Prelude.Maybe EBSOptionsStatus)
elasticsearchDomainConfig_eBSOptions :: (Maybe EBSOptionsStatus -> f (Maybe EBSOptionsStatus))
-> ElasticsearchDomainConfig -> f ElasticsearchDomainConfig
elasticsearchDomainConfig_eBSOptions = (ElasticsearchDomainConfig -> Maybe EBSOptionsStatus)
-> (ElasticsearchDomainConfig
    -> Maybe EBSOptionsStatus -> ElasticsearchDomainConfig)
-> Lens
     ElasticsearchDomainConfig
     ElasticsearchDomainConfig
     (Maybe EBSOptionsStatus)
     (Maybe EBSOptionsStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ElasticsearchDomainConfig' {Maybe EBSOptionsStatus
eBSOptions :: Maybe EBSOptionsStatus
$sel:eBSOptions:ElasticsearchDomainConfig' :: ElasticsearchDomainConfig -> Maybe EBSOptionsStatus
eBSOptions} -> Maybe EBSOptionsStatus
eBSOptions) (\s :: ElasticsearchDomainConfig
s@ElasticsearchDomainConfig' {} Maybe EBSOptionsStatus
a -> ElasticsearchDomainConfig
s {$sel:eBSOptions:ElasticsearchDomainConfig' :: Maybe EBSOptionsStatus
eBSOptions = Maybe EBSOptionsStatus
a} :: ElasticsearchDomainConfig)

-- | Specifies the @NodeToNodeEncryptionOptions@ for the Elasticsearch
-- domain.
elasticsearchDomainConfig_nodeToNodeEncryptionOptions :: Lens.Lens' ElasticsearchDomainConfig (Prelude.Maybe NodeToNodeEncryptionOptionsStatus)
elasticsearchDomainConfig_nodeToNodeEncryptionOptions :: (Maybe NodeToNodeEncryptionOptionsStatus
 -> f (Maybe NodeToNodeEncryptionOptionsStatus))
-> ElasticsearchDomainConfig -> f ElasticsearchDomainConfig
elasticsearchDomainConfig_nodeToNodeEncryptionOptions = (ElasticsearchDomainConfig
 -> Maybe NodeToNodeEncryptionOptionsStatus)
-> (ElasticsearchDomainConfig
    -> Maybe NodeToNodeEncryptionOptionsStatus
    -> ElasticsearchDomainConfig)
-> Lens
     ElasticsearchDomainConfig
     ElasticsearchDomainConfig
     (Maybe NodeToNodeEncryptionOptionsStatus)
     (Maybe NodeToNodeEncryptionOptionsStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ElasticsearchDomainConfig' {Maybe NodeToNodeEncryptionOptionsStatus
nodeToNodeEncryptionOptions :: Maybe NodeToNodeEncryptionOptionsStatus
$sel:nodeToNodeEncryptionOptions:ElasticsearchDomainConfig' :: ElasticsearchDomainConfig
-> Maybe NodeToNodeEncryptionOptionsStatus
nodeToNodeEncryptionOptions} -> Maybe NodeToNodeEncryptionOptionsStatus
nodeToNodeEncryptionOptions) (\s :: ElasticsearchDomainConfig
s@ElasticsearchDomainConfig' {} Maybe NodeToNodeEncryptionOptionsStatus
a -> ElasticsearchDomainConfig
s {$sel:nodeToNodeEncryptionOptions:ElasticsearchDomainConfig' :: Maybe NodeToNodeEncryptionOptionsStatus
nodeToNodeEncryptionOptions = Maybe NodeToNodeEncryptionOptionsStatus
a} :: ElasticsearchDomainConfig)

-- | IAM access policy as a JSON-formatted string.
elasticsearchDomainConfig_accessPolicies :: Lens.Lens' ElasticsearchDomainConfig (Prelude.Maybe AccessPoliciesStatus)
elasticsearchDomainConfig_accessPolicies :: (Maybe AccessPoliciesStatus -> f (Maybe AccessPoliciesStatus))
-> ElasticsearchDomainConfig -> f ElasticsearchDomainConfig
elasticsearchDomainConfig_accessPolicies = (ElasticsearchDomainConfig -> Maybe AccessPoliciesStatus)
-> (ElasticsearchDomainConfig
    -> Maybe AccessPoliciesStatus -> ElasticsearchDomainConfig)
-> Lens
     ElasticsearchDomainConfig
     ElasticsearchDomainConfig
     (Maybe AccessPoliciesStatus)
     (Maybe AccessPoliciesStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ElasticsearchDomainConfig' {Maybe AccessPoliciesStatus
accessPolicies :: Maybe AccessPoliciesStatus
$sel:accessPolicies:ElasticsearchDomainConfig' :: ElasticsearchDomainConfig -> Maybe AccessPoliciesStatus
accessPolicies} -> Maybe AccessPoliciesStatus
accessPolicies) (\s :: ElasticsearchDomainConfig
s@ElasticsearchDomainConfig' {} Maybe AccessPoliciesStatus
a -> ElasticsearchDomainConfig
s {$sel:accessPolicies:ElasticsearchDomainConfig' :: Maybe AccessPoliciesStatus
accessPolicies = Maybe AccessPoliciesStatus
a} :: ElasticsearchDomainConfig)

-- | Specifies @AutoTuneOptions@ for the domain.
elasticsearchDomainConfig_autoTuneOptions :: Lens.Lens' ElasticsearchDomainConfig (Prelude.Maybe AutoTuneOptionsStatus)
elasticsearchDomainConfig_autoTuneOptions :: (Maybe AutoTuneOptionsStatus -> f (Maybe AutoTuneOptionsStatus))
-> ElasticsearchDomainConfig -> f ElasticsearchDomainConfig
elasticsearchDomainConfig_autoTuneOptions = (ElasticsearchDomainConfig -> Maybe AutoTuneOptionsStatus)
-> (ElasticsearchDomainConfig
    -> Maybe AutoTuneOptionsStatus -> ElasticsearchDomainConfig)
-> Lens
     ElasticsearchDomainConfig
     ElasticsearchDomainConfig
     (Maybe AutoTuneOptionsStatus)
     (Maybe AutoTuneOptionsStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ElasticsearchDomainConfig' {Maybe AutoTuneOptionsStatus
autoTuneOptions :: Maybe AutoTuneOptionsStatus
$sel:autoTuneOptions:ElasticsearchDomainConfig' :: ElasticsearchDomainConfig -> Maybe AutoTuneOptionsStatus
autoTuneOptions} -> Maybe AutoTuneOptionsStatus
autoTuneOptions) (\s :: ElasticsearchDomainConfig
s@ElasticsearchDomainConfig' {} Maybe AutoTuneOptionsStatus
a -> ElasticsearchDomainConfig
s {$sel:autoTuneOptions:ElasticsearchDomainConfig' :: Maybe AutoTuneOptionsStatus
autoTuneOptions = Maybe AutoTuneOptionsStatus
a} :: ElasticsearchDomainConfig)

-- | Log publishing options for the given domain.
elasticsearchDomainConfig_logPublishingOptions :: Lens.Lens' ElasticsearchDomainConfig (Prelude.Maybe LogPublishingOptionsStatus)
elasticsearchDomainConfig_logPublishingOptions :: (Maybe LogPublishingOptionsStatus
 -> f (Maybe LogPublishingOptionsStatus))
-> ElasticsearchDomainConfig -> f ElasticsearchDomainConfig
elasticsearchDomainConfig_logPublishingOptions = (ElasticsearchDomainConfig -> Maybe LogPublishingOptionsStatus)
-> (ElasticsearchDomainConfig
    -> Maybe LogPublishingOptionsStatus -> ElasticsearchDomainConfig)
-> Lens
     ElasticsearchDomainConfig
     ElasticsearchDomainConfig
     (Maybe LogPublishingOptionsStatus)
     (Maybe LogPublishingOptionsStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ElasticsearchDomainConfig' {Maybe LogPublishingOptionsStatus
logPublishingOptions :: Maybe LogPublishingOptionsStatus
$sel:logPublishingOptions:ElasticsearchDomainConfig' :: ElasticsearchDomainConfig -> Maybe LogPublishingOptionsStatus
logPublishingOptions} -> Maybe LogPublishingOptionsStatus
logPublishingOptions) (\s :: ElasticsearchDomainConfig
s@ElasticsearchDomainConfig' {} Maybe LogPublishingOptionsStatus
a -> ElasticsearchDomainConfig
s {$sel:logPublishingOptions:ElasticsearchDomainConfig' :: Maybe LogPublishingOptionsStatus
logPublishingOptions = Maybe LogPublishingOptionsStatus
a} :: ElasticsearchDomainConfig)

-- | Specifies @AdvancedSecurityOptions@ for the domain.
elasticsearchDomainConfig_advancedSecurityOptions :: Lens.Lens' ElasticsearchDomainConfig (Prelude.Maybe AdvancedSecurityOptionsStatus)
elasticsearchDomainConfig_advancedSecurityOptions :: (Maybe AdvancedSecurityOptionsStatus
 -> f (Maybe AdvancedSecurityOptionsStatus))
-> ElasticsearchDomainConfig -> f ElasticsearchDomainConfig
elasticsearchDomainConfig_advancedSecurityOptions = (ElasticsearchDomainConfig -> Maybe AdvancedSecurityOptionsStatus)
-> (ElasticsearchDomainConfig
    -> Maybe AdvancedSecurityOptionsStatus
    -> ElasticsearchDomainConfig)
-> Lens
     ElasticsearchDomainConfig
     ElasticsearchDomainConfig
     (Maybe AdvancedSecurityOptionsStatus)
     (Maybe AdvancedSecurityOptionsStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ElasticsearchDomainConfig' {Maybe AdvancedSecurityOptionsStatus
advancedSecurityOptions :: Maybe AdvancedSecurityOptionsStatus
$sel:advancedSecurityOptions:ElasticsearchDomainConfig' :: ElasticsearchDomainConfig -> Maybe AdvancedSecurityOptionsStatus
advancedSecurityOptions} -> Maybe AdvancedSecurityOptionsStatus
advancedSecurityOptions) (\s :: ElasticsearchDomainConfig
s@ElasticsearchDomainConfig' {} Maybe AdvancedSecurityOptionsStatus
a -> ElasticsearchDomainConfig
s {$sel:advancedSecurityOptions:ElasticsearchDomainConfig' :: Maybe AdvancedSecurityOptionsStatus
advancedSecurityOptions = Maybe AdvancedSecurityOptionsStatus
a} :: ElasticsearchDomainConfig)

-- | Specifies the @ElasticsearchClusterConfig@ for the Elasticsearch domain.
elasticsearchDomainConfig_elasticsearchClusterConfig :: Lens.Lens' ElasticsearchDomainConfig (Prelude.Maybe ElasticsearchClusterConfigStatus)
elasticsearchDomainConfig_elasticsearchClusterConfig :: (Maybe ElasticsearchClusterConfigStatus
 -> f (Maybe ElasticsearchClusterConfigStatus))
-> ElasticsearchDomainConfig -> f ElasticsearchDomainConfig
elasticsearchDomainConfig_elasticsearchClusterConfig = (ElasticsearchDomainConfig
 -> Maybe ElasticsearchClusterConfigStatus)
-> (ElasticsearchDomainConfig
    -> Maybe ElasticsearchClusterConfigStatus
    -> ElasticsearchDomainConfig)
-> Lens
     ElasticsearchDomainConfig
     ElasticsearchDomainConfig
     (Maybe ElasticsearchClusterConfigStatus)
     (Maybe ElasticsearchClusterConfigStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ElasticsearchDomainConfig' {Maybe ElasticsearchClusterConfigStatus
elasticsearchClusterConfig :: Maybe ElasticsearchClusterConfigStatus
$sel:elasticsearchClusterConfig:ElasticsearchDomainConfig' :: ElasticsearchDomainConfig -> Maybe ElasticsearchClusterConfigStatus
elasticsearchClusterConfig} -> Maybe ElasticsearchClusterConfigStatus
elasticsearchClusterConfig) (\s :: ElasticsearchDomainConfig
s@ElasticsearchDomainConfig' {} Maybe ElasticsearchClusterConfigStatus
a -> ElasticsearchDomainConfig
s {$sel:elasticsearchClusterConfig:ElasticsearchDomainConfig' :: Maybe ElasticsearchClusterConfigStatus
elasticsearchClusterConfig = Maybe ElasticsearchClusterConfigStatus
a} :: ElasticsearchDomainConfig)

-- | Specifies the @SnapshotOptions@ for the Elasticsearch domain.
elasticsearchDomainConfig_snapshotOptions :: Lens.Lens' ElasticsearchDomainConfig (Prelude.Maybe SnapshotOptionsStatus)
elasticsearchDomainConfig_snapshotOptions :: (Maybe SnapshotOptionsStatus -> f (Maybe SnapshotOptionsStatus))
-> ElasticsearchDomainConfig -> f ElasticsearchDomainConfig
elasticsearchDomainConfig_snapshotOptions = (ElasticsearchDomainConfig -> Maybe SnapshotOptionsStatus)
-> (ElasticsearchDomainConfig
    -> Maybe SnapshotOptionsStatus -> ElasticsearchDomainConfig)
-> Lens
     ElasticsearchDomainConfig
     ElasticsearchDomainConfig
     (Maybe SnapshotOptionsStatus)
     (Maybe SnapshotOptionsStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ElasticsearchDomainConfig' {Maybe SnapshotOptionsStatus
snapshotOptions :: Maybe SnapshotOptionsStatus
$sel:snapshotOptions:ElasticsearchDomainConfig' :: ElasticsearchDomainConfig -> Maybe SnapshotOptionsStatus
snapshotOptions} -> Maybe SnapshotOptionsStatus
snapshotOptions) (\s :: ElasticsearchDomainConfig
s@ElasticsearchDomainConfig' {} Maybe SnapshotOptionsStatus
a -> ElasticsearchDomainConfig
s {$sel:snapshotOptions:ElasticsearchDomainConfig' :: Maybe SnapshotOptionsStatus
snapshotOptions = Maybe SnapshotOptionsStatus
a} :: ElasticsearchDomainConfig)

-- | The @CognitoOptions@ for the specified domain. For more information, see
-- <http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-cognito-auth.html Amazon Cognito Authentication for Kibana>.
elasticsearchDomainConfig_cognitoOptions :: Lens.Lens' ElasticsearchDomainConfig (Prelude.Maybe CognitoOptionsStatus)
elasticsearchDomainConfig_cognitoOptions :: (Maybe CognitoOptionsStatus -> f (Maybe CognitoOptionsStatus))
-> ElasticsearchDomainConfig -> f ElasticsearchDomainConfig
elasticsearchDomainConfig_cognitoOptions = (ElasticsearchDomainConfig -> Maybe CognitoOptionsStatus)
-> (ElasticsearchDomainConfig
    -> Maybe CognitoOptionsStatus -> ElasticsearchDomainConfig)
-> Lens
     ElasticsearchDomainConfig
     ElasticsearchDomainConfig
     (Maybe CognitoOptionsStatus)
     (Maybe CognitoOptionsStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ElasticsearchDomainConfig' {Maybe CognitoOptionsStatus
cognitoOptions :: Maybe CognitoOptionsStatus
$sel:cognitoOptions:ElasticsearchDomainConfig' :: ElasticsearchDomainConfig -> Maybe CognitoOptionsStatus
cognitoOptions} -> Maybe CognitoOptionsStatus
cognitoOptions) (\s :: ElasticsearchDomainConfig
s@ElasticsearchDomainConfig' {} Maybe CognitoOptionsStatus
a -> ElasticsearchDomainConfig
s {$sel:cognitoOptions:ElasticsearchDomainConfig' :: Maybe CognitoOptionsStatus
cognitoOptions = Maybe CognitoOptionsStatus
a} :: ElasticsearchDomainConfig)

-- | Specifies the @EncryptionAtRestOptions@ for the Elasticsearch domain.
elasticsearchDomainConfig_encryptionAtRestOptions :: Lens.Lens' ElasticsearchDomainConfig (Prelude.Maybe EncryptionAtRestOptionsStatus)
elasticsearchDomainConfig_encryptionAtRestOptions :: (Maybe EncryptionAtRestOptionsStatus
 -> f (Maybe EncryptionAtRestOptionsStatus))
-> ElasticsearchDomainConfig -> f ElasticsearchDomainConfig
elasticsearchDomainConfig_encryptionAtRestOptions = (ElasticsearchDomainConfig -> Maybe EncryptionAtRestOptionsStatus)
-> (ElasticsearchDomainConfig
    -> Maybe EncryptionAtRestOptionsStatus
    -> ElasticsearchDomainConfig)
-> Lens
     ElasticsearchDomainConfig
     ElasticsearchDomainConfig
     (Maybe EncryptionAtRestOptionsStatus)
     (Maybe EncryptionAtRestOptionsStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ElasticsearchDomainConfig' {Maybe EncryptionAtRestOptionsStatus
encryptionAtRestOptions :: Maybe EncryptionAtRestOptionsStatus
$sel:encryptionAtRestOptions:ElasticsearchDomainConfig' :: ElasticsearchDomainConfig -> Maybe EncryptionAtRestOptionsStatus
encryptionAtRestOptions} -> Maybe EncryptionAtRestOptionsStatus
encryptionAtRestOptions) (\s :: ElasticsearchDomainConfig
s@ElasticsearchDomainConfig' {} Maybe EncryptionAtRestOptionsStatus
a -> ElasticsearchDomainConfig
s {$sel:encryptionAtRestOptions:ElasticsearchDomainConfig' :: Maybe EncryptionAtRestOptionsStatus
encryptionAtRestOptions = Maybe EncryptionAtRestOptionsStatus
a} :: ElasticsearchDomainConfig)

-- | The @VPCOptions@ for the specified domain. For more information, see
-- <http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-vpc.html VPC Endpoints for Amazon Elasticsearch Service Domains>.
elasticsearchDomainConfig_vPCOptions :: Lens.Lens' ElasticsearchDomainConfig (Prelude.Maybe VPCDerivedInfoStatus)
elasticsearchDomainConfig_vPCOptions :: (Maybe VPCDerivedInfoStatus -> f (Maybe VPCDerivedInfoStatus))
-> ElasticsearchDomainConfig -> f ElasticsearchDomainConfig
elasticsearchDomainConfig_vPCOptions = (ElasticsearchDomainConfig -> Maybe VPCDerivedInfoStatus)
-> (ElasticsearchDomainConfig
    -> Maybe VPCDerivedInfoStatus -> ElasticsearchDomainConfig)
-> Lens
     ElasticsearchDomainConfig
     ElasticsearchDomainConfig
     (Maybe VPCDerivedInfoStatus)
     (Maybe VPCDerivedInfoStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ElasticsearchDomainConfig' {Maybe VPCDerivedInfoStatus
vPCOptions :: Maybe VPCDerivedInfoStatus
$sel:vPCOptions:ElasticsearchDomainConfig' :: ElasticsearchDomainConfig -> Maybe VPCDerivedInfoStatus
vPCOptions} -> Maybe VPCDerivedInfoStatus
vPCOptions) (\s :: ElasticsearchDomainConfig
s@ElasticsearchDomainConfig' {} Maybe VPCDerivedInfoStatus
a -> ElasticsearchDomainConfig
s {$sel:vPCOptions:ElasticsearchDomainConfig' :: Maybe VPCDerivedInfoStatus
vPCOptions = Maybe VPCDerivedInfoStatus
a} :: ElasticsearchDomainConfig)

-- | Specifies the @DomainEndpointOptions@ for the Elasticsearch domain.
elasticsearchDomainConfig_domainEndpointOptions :: Lens.Lens' ElasticsearchDomainConfig (Prelude.Maybe DomainEndpointOptionsStatus)
elasticsearchDomainConfig_domainEndpointOptions :: (Maybe DomainEndpointOptionsStatus
 -> f (Maybe DomainEndpointOptionsStatus))
-> ElasticsearchDomainConfig -> f ElasticsearchDomainConfig
elasticsearchDomainConfig_domainEndpointOptions = (ElasticsearchDomainConfig -> Maybe DomainEndpointOptionsStatus)
-> (ElasticsearchDomainConfig
    -> Maybe DomainEndpointOptionsStatus -> ElasticsearchDomainConfig)
-> Lens
     ElasticsearchDomainConfig
     ElasticsearchDomainConfig
     (Maybe DomainEndpointOptionsStatus)
     (Maybe DomainEndpointOptionsStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ElasticsearchDomainConfig' {Maybe DomainEndpointOptionsStatus
domainEndpointOptions :: Maybe DomainEndpointOptionsStatus
$sel:domainEndpointOptions:ElasticsearchDomainConfig' :: ElasticsearchDomainConfig -> Maybe DomainEndpointOptionsStatus
domainEndpointOptions} -> Maybe DomainEndpointOptionsStatus
domainEndpointOptions) (\s :: ElasticsearchDomainConfig
s@ElasticsearchDomainConfig' {} Maybe DomainEndpointOptionsStatus
a -> ElasticsearchDomainConfig
s {$sel:domainEndpointOptions:ElasticsearchDomainConfig' :: Maybe DomainEndpointOptionsStatus
domainEndpointOptions = Maybe DomainEndpointOptionsStatus
a} :: ElasticsearchDomainConfig)

-- | Specifies the @AdvancedOptions@ for the domain. See
-- <http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-createupdatedomains.html#es-createdomain-configure-advanced-options Configuring Advanced Options>
-- for more information.
elasticsearchDomainConfig_advancedOptions :: Lens.Lens' ElasticsearchDomainConfig (Prelude.Maybe AdvancedOptionsStatus)
elasticsearchDomainConfig_advancedOptions :: (Maybe AdvancedOptionsStatus -> f (Maybe AdvancedOptionsStatus))
-> ElasticsearchDomainConfig -> f ElasticsearchDomainConfig
elasticsearchDomainConfig_advancedOptions = (ElasticsearchDomainConfig -> Maybe AdvancedOptionsStatus)
-> (ElasticsearchDomainConfig
    -> Maybe AdvancedOptionsStatus -> ElasticsearchDomainConfig)
-> Lens
     ElasticsearchDomainConfig
     ElasticsearchDomainConfig
     (Maybe AdvancedOptionsStatus)
     (Maybe AdvancedOptionsStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ElasticsearchDomainConfig' {Maybe AdvancedOptionsStatus
advancedOptions :: Maybe AdvancedOptionsStatus
$sel:advancedOptions:ElasticsearchDomainConfig' :: ElasticsearchDomainConfig -> Maybe AdvancedOptionsStatus
advancedOptions} -> Maybe AdvancedOptionsStatus
advancedOptions) (\s :: ElasticsearchDomainConfig
s@ElasticsearchDomainConfig' {} Maybe AdvancedOptionsStatus
a -> ElasticsearchDomainConfig
s {$sel:advancedOptions:ElasticsearchDomainConfig' :: Maybe AdvancedOptionsStatus
advancedOptions = Maybe AdvancedOptionsStatus
a} :: ElasticsearchDomainConfig)

-- | String of format X.Y to specify version for the Elasticsearch domain.
elasticsearchDomainConfig_elasticsearchVersion :: Lens.Lens' ElasticsearchDomainConfig (Prelude.Maybe ElasticsearchVersionStatus)
elasticsearchDomainConfig_elasticsearchVersion :: (Maybe ElasticsearchVersionStatus
 -> f (Maybe ElasticsearchVersionStatus))
-> ElasticsearchDomainConfig -> f ElasticsearchDomainConfig
elasticsearchDomainConfig_elasticsearchVersion = (ElasticsearchDomainConfig -> Maybe ElasticsearchVersionStatus)
-> (ElasticsearchDomainConfig
    -> Maybe ElasticsearchVersionStatus -> ElasticsearchDomainConfig)
-> Lens
     ElasticsearchDomainConfig
     ElasticsearchDomainConfig
     (Maybe ElasticsearchVersionStatus)
     (Maybe ElasticsearchVersionStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ElasticsearchDomainConfig' {Maybe ElasticsearchVersionStatus
elasticsearchVersion :: Maybe ElasticsearchVersionStatus
$sel:elasticsearchVersion:ElasticsearchDomainConfig' :: ElasticsearchDomainConfig -> Maybe ElasticsearchVersionStatus
elasticsearchVersion} -> Maybe ElasticsearchVersionStatus
elasticsearchVersion) (\s :: ElasticsearchDomainConfig
s@ElasticsearchDomainConfig' {} Maybe ElasticsearchVersionStatus
a -> ElasticsearchDomainConfig
s {$sel:elasticsearchVersion:ElasticsearchDomainConfig' :: Maybe ElasticsearchVersionStatus
elasticsearchVersion = Maybe ElasticsearchVersionStatus
a} :: ElasticsearchDomainConfig)

instance Core.FromJSON ElasticsearchDomainConfig where
  parseJSON :: Value -> Parser ElasticsearchDomainConfig
parseJSON =
    String
-> (Object -> Parser ElasticsearchDomainConfig)
-> Value
-> Parser ElasticsearchDomainConfig
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"ElasticsearchDomainConfig"
      ( \Object
x ->
          Maybe EBSOptionsStatus
-> Maybe NodeToNodeEncryptionOptionsStatus
-> Maybe AccessPoliciesStatus
-> Maybe AutoTuneOptionsStatus
-> Maybe LogPublishingOptionsStatus
-> Maybe AdvancedSecurityOptionsStatus
-> Maybe ElasticsearchClusterConfigStatus
-> Maybe SnapshotOptionsStatus
-> Maybe CognitoOptionsStatus
-> Maybe EncryptionAtRestOptionsStatus
-> Maybe VPCDerivedInfoStatus
-> Maybe DomainEndpointOptionsStatus
-> Maybe AdvancedOptionsStatus
-> Maybe ElasticsearchVersionStatus
-> ElasticsearchDomainConfig
ElasticsearchDomainConfig'
            (Maybe EBSOptionsStatus
 -> Maybe NodeToNodeEncryptionOptionsStatus
 -> Maybe AccessPoliciesStatus
 -> Maybe AutoTuneOptionsStatus
 -> Maybe LogPublishingOptionsStatus
 -> Maybe AdvancedSecurityOptionsStatus
 -> Maybe ElasticsearchClusterConfigStatus
 -> Maybe SnapshotOptionsStatus
 -> Maybe CognitoOptionsStatus
 -> Maybe EncryptionAtRestOptionsStatus
 -> Maybe VPCDerivedInfoStatus
 -> Maybe DomainEndpointOptionsStatus
 -> Maybe AdvancedOptionsStatus
 -> Maybe ElasticsearchVersionStatus
 -> ElasticsearchDomainConfig)
-> Parser (Maybe EBSOptionsStatus)
-> Parser
     (Maybe NodeToNodeEncryptionOptionsStatus
      -> Maybe AccessPoliciesStatus
      -> Maybe AutoTuneOptionsStatus
      -> Maybe LogPublishingOptionsStatus
      -> Maybe AdvancedSecurityOptionsStatus
      -> Maybe ElasticsearchClusterConfigStatus
      -> Maybe SnapshotOptionsStatus
      -> Maybe CognitoOptionsStatus
      -> Maybe EncryptionAtRestOptionsStatus
      -> Maybe VPCDerivedInfoStatus
      -> Maybe DomainEndpointOptionsStatus
      -> Maybe AdvancedOptionsStatus
      -> Maybe ElasticsearchVersionStatus
      -> ElasticsearchDomainConfig)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe EBSOptionsStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"EBSOptions")
            Parser
  (Maybe NodeToNodeEncryptionOptionsStatus
   -> Maybe AccessPoliciesStatus
   -> Maybe AutoTuneOptionsStatus
   -> Maybe LogPublishingOptionsStatus
   -> Maybe AdvancedSecurityOptionsStatus
   -> Maybe ElasticsearchClusterConfigStatus
   -> Maybe SnapshotOptionsStatus
   -> Maybe CognitoOptionsStatus
   -> Maybe EncryptionAtRestOptionsStatus
   -> Maybe VPCDerivedInfoStatus
   -> Maybe DomainEndpointOptionsStatus
   -> Maybe AdvancedOptionsStatus
   -> Maybe ElasticsearchVersionStatus
   -> ElasticsearchDomainConfig)
-> Parser (Maybe NodeToNodeEncryptionOptionsStatus)
-> Parser
     (Maybe AccessPoliciesStatus
      -> Maybe AutoTuneOptionsStatus
      -> Maybe LogPublishingOptionsStatus
      -> Maybe AdvancedSecurityOptionsStatus
      -> Maybe ElasticsearchClusterConfigStatus
      -> Maybe SnapshotOptionsStatus
      -> Maybe CognitoOptionsStatus
      -> Maybe EncryptionAtRestOptionsStatus
      -> Maybe VPCDerivedInfoStatus
      -> Maybe DomainEndpointOptionsStatus
      -> Maybe AdvancedOptionsStatus
      -> Maybe ElasticsearchVersionStatus
      -> ElasticsearchDomainConfig)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe NodeToNodeEncryptionOptionsStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"NodeToNodeEncryptionOptions")
            Parser
  (Maybe AccessPoliciesStatus
   -> Maybe AutoTuneOptionsStatus
   -> Maybe LogPublishingOptionsStatus
   -> Maybe AdvancedSecurityOptionsStatus
   -> Maybe ElasticsearchClusterConfigStatus
   -> Maybe SnapshotOptionsStatus
   -> Maybe CognitoOptionsStatus
   -> Maybe EncryptionAtRestOptionsStatus
   -> Maybe VPCDerivedInfoStatus
   -> Maybe DomainEndpointOptionsStatus
   -> Maybe AdvancedOptionsStatus
   -> Maybe ElasticsearchVersionStatus
   -> ElasticsearchDomainConfig)
-> Parser (Maybe AccessPoliciesStatus)
-> Parser
     (Maybe AutoTuneOptionsStatus
      -> Maybe LogPublishingOptionsStatus
      -> Maybe AdvancedSecurityOptionsStatus
      -> Maybe ElasticsearchClusterConfigStatus
      -> Maybe SnapshotOptionsStatus
      -> Maybe CognitoOptionsStatus
      -> Maybe EncryptionAtRestOptionsStatus
      -> Maybe VPCDerivedInfoStatus
      -> Maybe DomainEndpointOptionsStatus
      -> Maybe AdvancedOptionsStatus
      -> Maybe ElasticsearchVersionStatus
      -> ElasticsearchDomainConfig)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe AccessPoliciesStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AccessPolicies")
            Parser
  (Maybe AutoTuneOptionsStatus
   -> Maybe LogPublishingOptionsStatus
   -> Maybe AdvancedSecurityOptionsStatus
   -> Maybe ElasticsearchClusterConfigStatus
   -> Maybe SnapshotOptionsStatus
   -> Maybe CognitoOptionsStatus
   -> Maybe EncryptionAtRestOptionsStatus
   -> Maybe VPCDerivedInfoStatus
   -> Maybe DomainEndpointOptionsStatus
   -> Maybe AdvancedOptionsStatus
   -> Maybe ElasticsearchVersionStatus
   -> ElasticsearchDomainConfig)
-> Parser (Maybe AutoTuneOptionsStatus)
-> Parser
     (Maybe LogPublishingOptionsStatus
      -> Maybe AdvancedSecurityOptionsStatus
      -> Maybe ElasticsearchClusterConfigStatus
      -> Maybe SnapshotOptionsStatus
      -> Maybe CognitoOptionsStatus
      -> Maybe EncryptionAtRestOptionsStatus
      -> Maybe VPCDerivedInfoStatus
      -> Maybe DomainEndpointOptionsStatus
      -> Maybe AdvancedOptionsStatus
      -> Maybe ElasticsearchVersionStatus
      -> ElasticsearchDomainConfig)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe AutoTuneOptionsStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AutoTuneOptions")
            Parser
  (Maybe LogPublishingOptionsStatus
   -> Maybe AdvancedSecurityOptionsStatus
   -> Maybe ElasticsearchClusterConfigStatus
   -> Maybe SnapshotOptionsStatus
   -> Maybe CognitoOptionsStatus
   -> Maybe EncryptionAtRestOptionsStatus
   -> Maybe VPCDerivedInfoStatus
   -> Maybe DomainEndpointOptionsStatus
   -> Maybe AdvancedOptionsStatus
   -> Maybe ElasticsearchVersionStatus
   -> ElasticsearchDomainConfig)
-> Parser (Maybe LogPublishingOptionsStatus)
-> Parser
     (Maybe AdvancedSecurityOptionsStatus
      -> Maybe ElasticsearchClusterConfigStatus
      -> Maybe SnapshotOptionsStatus
      -> Maybe CognitoOptionsStatus
      -> Maybe EncryptionAtRestOptionsStatus
      -> Maybe VPCDerivedInfoStatus
      -> Maybe DomainEndpointOptionsStatus
      -> Maybe AdvancedOptionsStatus
      -> Maybe ElasticsearchVersionStatus
      -> ElasticsearchDomainConfig)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe LogPublishingOptionsStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"LogPublishingOptions")
            Parser
  (Maybe AdvancedSecurityOptionsStatus
   -> Maybe ElasticsearchClusterConfigStatus
   -> Maybe SnapshotOptionsStatus
   -> Maybe CognitoOptionsStatus
   -> Maybe EncryptionAtRestOptionsStatus
   -> Maybe VPCDerivedInfoStatus
   -> Maybe DomainEndpointOptionsStatus
   -> Maybe AdvancedOptionsStatus
   -> Maybe ElasticsearchVersionStatus
   -> ElasticsearchDomainConfig)
-> Parser (Maybe AdvancedSecurityOptionsStatus)
-> Parser
     (Maybe ElasticsearchClusterConfigStatus
      -> Maybe SnapshotOptionsStatus
      -> Maybe CognitoOptionsStatus
      -> Maybe EncryptionAtRestOptionsStatus
      -> Maybe VPCDerivedInfoStatus
      -> Maybe DomainEndpointOptionsStatus
      -> Maybe AdvancedOptionsStatus
      -> Maybe ElasticsearchVersionStatus
      -> ElasticsearchDomainConfig)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe AdvancedSecurityOptionsStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AdvancedSecurityOptions")
            Parser
  (Maybe ElasticsearchClusterConfigStatus
   -> Maybe SnapshotOptionsStatus
   -> Maybe CognitoOptionsStatus
   -> Maybe EncryptionAtRestOptionsStatus
   -> Maybe VPCDerivedInfoStatus
   -> Maybe DomainEndpointOptionsStatus
   -> Maybe AdvancedOptionsStatus
   -> Maybe ElasticsearchVersionStatus
   -> ElasticsearchDomainConfig)
-> Parser (Maybe ElasticsearchClusterConfigStatus)
-> Parser
     (Maybe SnapshotOptionsStatus
      -> Maybe CognitoOptionsStatus
      -> Maybe EncryptionAtRestOptionsStatus
      -> Maybe VPCDerivedInfoStatus
      -> Maybe DomainEndpointOptionsStatus
      -> Maybe AdvancedOptionsStatus
      -> Maybe ElasticsearchVersionStatus
      -> ElasticsearchDomainConfig)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ElasticsearchClusterConfigStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ElasticsearchClusterConfig")
            Parser
  (Maybe SnapshotOptionsStatus
   -> Maybe CognitoOptionsStatus
   -> Maybe EncryptionAtRestOptionsStatus
   -> Maybe VPCDerivedInfoStatus
   -> Maybe DomainEndpointOptionsStatus
   -> Maybe AdvancedOptionsStatus
   -> Maybe ElasticsearchVersionStatus
   -> ElasticsearchDomainConfig)
-> Parser (Maybe SnapshotOptionsStatus)
-> Parser
     (Maybe CognitoOptionsStatus
      -> Maybe EncryptionAtRestOptionsStatus
      -> Maybe VPCDerivedInfoStatus
      -> Maybe DomainEndpointOptionsStatus
      -> Maybe AdvancedOptionsStatus
      -> Maybe ElasticsearchVersionStatus
      -> ElasticsearchDomainConfig)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe SnapshotOptionsStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"SnapshotOptions")
            Parser
  (Maybe CognitoOptionsStatus
   -> Maybe EncryptionAtRestOptionsStatus
   -> Maybe VPCDerivedInfoStatus
   -> Maybe DomainEndpointOptionsStatus
   -> Maybe AdvancedOptionsStatus
   -> Maybe ElasticsearchVersionStatus
   -> ElasticsearchDomainConfig)
-> Parser (Maybe CognitoOptionsStatus)
-> Parser
     (Maybe EncryptionAtRestOptionsStatus
      -> Maybe VPCDerivedInfoStatus
      -> Maybe DomainEndpointOptionsStatus
      -> Maybe AdvancedOptionsStatus
      -> Maybe ElasticsearchVersionStatus
      -> ElasticsearchDomainConfig)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe CognitoOptionsStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"CognitoOptions")
            Parser
  (Maybe EncryptionAtRestOptionsStatus
   -> Maybe VPCDerivedInfoStatus
   -> Maybe DomainEndpointOptionsStatus
   -> Maybe AdvancedOptionsStatus
   -> Maybe ElasticsearchVersionStatus
   -> ElasticsearchDomainConfig)
-> Parser (Maybe EncryptionAtRestOptionsStatus)
-> Parser
     (Maybe VPCDerivedInfoStatus
      -> Maybe DomainEndpointOptionsStatus
      -> Maybe AdvancedOptionsStatus
      -> Maybe ElasticsearchVersionStatus
      -> ElasticsearchDomainConfig)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe EncryptionAtRestOptionsStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"EncryptionAtRestOptions")
            Parser
  (Maybe VPCDerivedInfoStatus
   -> Maybe DomainEndpointOptionsStatus
   -> Maybe AdvancedOptionsStatus
   -> Maybe ElasticsearchVersionStatus
   -> ElasticsearchDomainConfig)
-> Parser (Maybe VPCDerivedInfoStatus)
-> Parser
     (Maybe DomainEndpointOptionsStatus
      -> Maybe AdvancedOptionsStatus
      -> Maybe ElasticsearchVersionStatus
      -> ElasticsearchDomainConfig)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe VPCDerivedInfoStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"VPCOptions")
            Parser
  (Maybe DomainEndpointOptionsStatus
   -> Maybe AdvancedOptionsStatus
   -> Maybe ElasticsearchVersionStatus
   -> ElasticsearchDomainConfig)
-> Parser (Maybe DomainEndpointOptionsStatus)
-> Parser
     (Maybe AdvancedOptionsStatus
      -> Maybe ElasticsearchVersionStatus -> ElasticsearchDomainConfig)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DomainEndpointOptionsStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DomainEndpointOptions")
            Parser
  (Maybe AdvancedOptionsStatus
   -> Maybe ElasticsearchVersionStatus -> ElasticsearchDomainConfig)
-> Parser (Maybe AdvancedOptionsStatus)
-> Parser
     (Maybe ElasticsearchVersionStatus -> ElasticsearchDomainConfig)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe AdvancedOptionsStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AdvancedOptions")
            Parser
  (Maybe ElasticsearchVersionStatus -> ElasticsearchDomainConfig)
-> Parser (Maybe ElasticsearchVersionStatus)
-> Parser ElasticsearchDomainConfig
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ElasticsearchVersionStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ElasticsearchVersion")
      )

instance Prelude.Hashable ElasticsearchDomainConfig

instance Prelude.NFData ElasticsearchDomainConfig