{-# 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.OpenSearch.Types.DomainConfig
-- 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.OpenSearch.Types.DomainConfig where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.OpenSearch.Types.AccessPoliciesStatus
import Amazonka.OpenSearch.Types.AdvancedOptionsStatus
import Amazonka.OpenSearch.Types.AdvancedSecurityOptionsStatus
import Amazonka.OpenSearch.Types.AutoTuneOptionsStatus
import Amazonka.OpenSearch.Types.ChangeProgressDetails
import Amazonka.OpenSearch.Types.ClusterConfigStatus
import Amazonka.OpenSearch.Types.CognitoOptionsStatus
import Amazonka.OpenSearch.Types.DomainEndpointOptionsStatus
import Amazonka.OpenSearch.Types.EBSOptionsStatus
import Amazonka.OpenSearch.Types.EncryptionAtRestOptionsStatus
import Amazonka.OpenSearch.Types.LogPublishingOptionsStatus
import Amazonka.OpenSearch.Types.NodeToNodeEncryptionOptionsStatus
import Amazonka.OpenSearch.Types.SnapshotOptionsStatus
import Amazonka.OpenSearch.Types.VPCDerivedInfoStatus
import Amazonka.OpenSearch.Types.VersionStatus
import qualified Amazonka.Prelude as Prelude

-- | Container for the configuration of an OpenSearch Service domain.
--
-- /See:/ 'newDomainConfig' smart constructor.
data DomainConfig = DomainConfig'
  { -- | Specifies the access policies for the domain.
    DomainConfig -> Maybe AccessPoliciesStatus
accessPolicies :: Prelude.Maybe AccessPoliciesStatus,
    -- | Key-value pairs to specify advanced configuration options. For more
    -- information, see
    -- <https://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html#createdomain-configure-advanced-options Advanced options>.
    DomainConfig -> Maybe AdvancedOptionsStatus
advancedOptions :: Prelude.Maybe AdvancedOptionsStatus,
    -- | Container for fine-grained access control settings for the domain.
    DomainConfig -> Maybe AdvancedSecurityOptionsStatus
advancedSecurityOptions :: Prelude.Maybe AdvancedSecurityOptionsStatus,
    -- | Container for Auto-Tune settings for the domain.
    DomainConfig -> Maybe AutoTuneOptionsStatus
autoTuneOptions :: Prelude.Maybe AutoTuneOptionsStatus,
    -- | Container for information about the progress of an existing
    -- configuration change.
    DomainConfig -> Maybe ChangeProgressDetails
changeProgressDetails :: Prelude.Maybe ChangeProgressDetails,
    -- | Container for the cluster configuration of a the domain.
    DomainConfig -> Maybe ClusterConfigStatus
clusterConfig :: Prelude.Maybe ClusterConfigStatus,
    -- | Container for Amazon Cognito options for the domain.
    DomainConfig -> Maybe CognitoOptionsStatus
cognitoOptions :: Prelude.Maybe CognitoOptionsStatus,
    -- | Additional options for the domain endpoint, such as whether to require
    -- HTTPS for all traffic.
    DomainConfig -> Maybe DomainEndpointOptionsStatus
domainEndpointOptions :: Prelude.Maybe DomainEndpointOptionsStatus,
    -- | Container for EBS options configured for an OpenSearch Service domain.
    DomainConfig -> Maybe EBSOptionsStatus
eBSOptions :: Prelude.Maybe EBSOptionsStatus,
    -- | Key-value pairs to enable encryption at rest.
    DomainConfig -> Maybe EncryptionAtRestOptionsStatus
encryptionAtRestOptions :: Prelude.Maybe EncryptionAtRestOptionsStatus,
    -- | The OpenSearch or Elasticsearch version that the domain is running.
    DomainConfig -> Maybe VersionStatus
engineVersion :: Prelude.Maybe VersionStatus,
    -- | Key-value pairs to configure slow log publishing.
    DomainConfig -> Maybe LogPublishingOptionsStatus
logPublishingOptions :: Prelude.Maybe LogPublishingOptionsStatus,
    -- | Whether node-to-node encryption is enabled or disabled.
    DomainConfig -> Maybe NodeToNodeEncryptionOptionsStatus
nodeToNodeEncryptionOptions :: Prelude.Maybe NodeToNodeEncryptionOptionsStatus,
    -- | DEPRECATED. Container for parameters required to configure automated
    -- snapshots of domain indexes.
    DomainConfig -> Maybe SnapshotOptionsStatus
snapshotOptions :: Prelude.Maybe SnapshotOptionsStatus,
    -- | The current VPC options for the domain and the status of any updates to
    -- their configuration.
    DomainConfig -> Maybe VPCDerivedInfoStatus
vPCOptions :: Prelude.Maybe VPCDerivedInfoStatus
  }
  deriving (DomainConfig -> DomainConfig -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DomainConfig -> DomainConfig -> Bool
$c/= :: DomainConfig -> DomainConfig -> Bool
== :: DomainConfig -> DomainConfig -> Bool
$c== :: DomainConfig -> DomainConfig -> Bool
Prelude.Eq, ReadPrec [DomainConfig]
ReadPrec DomainConfig
Int -> ReadS DomainConfig
ReadS [DomainConfig]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DomainConfig]
$creadListPrec :: ReadPrec [DomainConfig]
readPrec :: ReadPrec DomainConfig
$creadPrec :: ReadPrec DomainConfig
readList :: ReadS [DomainConfig]
$creadList :: ReadS [DomainConfig]
readsPrec :: Int -> ReadS DomainConfig
$creadsPrec :: Int -> ReadS DomainConfig
Prelude.Read, Int -> DomainConfig -> ShowS
[DomainConfig] -> ShowS
DomainConfig -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DomainConfig] -> ShowS
$cshowList :: [DomainConfig] -> ShowS
show :: DomainConfig -> String
$cshow :: DomainConfig -> String
showsPrec :: Int -> DomainConfig -> ShowS
$cshowsPrec :: Int -> DomainConfig -> ShowS
Prelude.Show, forall x. Rep DomainConfig x -> DomainConfig
forall x. DomainConfig -> Rep DomainConfig x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DomainConfig x -> DomainConfig
$cfrom :: forall x. DomainConfig -> Rep DomainConfig x
Prelude.Generic)

-- |
-- Create a value of 'DomainConfig' 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:
--
-- 'accessPolicies', 'domainConfig_accessPolicies' - Specifies the access policies for the domain.
--
-- 'advancedOptions', 'domainConfig_advancedOptions' - Key-value pairs to specify advanced configuration options. For more
-- information, see
-- <https://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html#createdomain-configure-advanced-options Advanced options>.
--
-- 'advancedSecurityOptions', 'domainConfig_advancedSecurityOptions' - Container for fine-grained access control settings for the domain.
--
-- 'autoTuneOptions', 'domainConfig_autoTuneOptions' - Container for Auto-Tune settings for the domain.
--
-- 'changeProgressDetails', 'domainConfig_changeProgressDetails' - Container for information about the progress of an existing
-- configuration change.
--
-- 'clusterConfig', 'domainConfig_clusterConfig' - Container for the cluster configuration of a the domain.
--
-- 'cognitoOptions', 'domainConfig_cognitoOptions' - Container for Amazon Cognito options for the domain.
--
-- 'domainEndpointOptions', 'domainConfig_domainEndpointOptions' - Additional options for the domain endpoint, such as whether to require
-- HTTPS for all traffic.
--
-- 'eBSOptions', 'domainConfig_eBSOptions' - Container for EBS options configured for an OpenSearch Service domain.
--
-- 'encryptionAtRestOptions', 'domainConfig_encryptionAtRestOptions' - Key-value pairs to enable encryption at rest.
--
-- 'engineVersion', 'domainConfig_engineVersion' - The OpenSearch or Elasticsearch version that the domain is running.
--
-- 'logPublishingOptions', 'domainConfig_logPublishingOptions' - Key-value pairs to configure slow log publishing.
--
-- 'nodeToNodeEncryptionOptions', 'domainConfig_nodeToNodeEncryptionOptions' - Whether node-to-node encryption is enabled or disabled.
--
-- 'snapshotOptions', 'domainConfig_snapshotOptions' - DEPRECATED. Container for parameters required to configure automated
-- snapshots of domain indexes.
--
-- 'vPCOptions', 'domainConfig_vPCOptions' - The current VPC options for the domain and the status of any updates to
-- their configuration.
newDomainConfig ::
  DomainConfig
newDomainConfig :: DomainConfig
newDomainConfig =
  DomainConfig'
    { $sel:accessPolicies:DomainConfig' :: Maybe AccessPoliciesStatus
accessPolicies = forall a. Maybe a
Prelude.Nothing,
      $sel:advancedOptions:DomainConfig' :: Maybe AdvancedOptionsStatus
advancedOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:advancedSecurityOptions:DomainConfig' :: Maybe AdvancedSecurityOptionsStatus
advancedSecurityOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:autoTuneOptions:DomainConfig' :: Maybe AutoTuneOptionsStatus
autoTuneOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:changeProgressDetails:DomainConfig' :: Maybe ChangeProgressDetails
changeProgressDetails = forall a. Maybe a
Prelude.Nothing,
      $sel:clusterConfig:DomainConfig' :: Maybe ClusterConfigStatus
clusterConfig = forall a. Maybe a
Prelude.Nothing,
      $sel:cognitoOptions:DomainConfig' :: Maybe CognitoOptionsStatus
cognitoOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:domainEndpointOptions:DomainConfig' :: Maybe DomainEndpointOptionsStatus
domainEndpointOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:eBSOptions:DomainConfig' :: Maybe EBSOptionsStatus
eBSOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:encryptionAtRestOptions:DomainConfig' :: Maybe EncryptionAtRestOptionsStatus
encryptionAtRestOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:engineVersion:DomainConfig' :: Maybe VersionStatus
engineVersion = forall a. Maybe a
Prelude.Nothing,
      $sel:logPublishingOptions:DomainConfig' :: Maybe LogPublishingOptionsStatus
logPublishingOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:nodeToNodeEncryptionOptions:DomainConfig' :: Maybe NodeToNodeEncryptionOptionsStatus
nodeToNodeEncryptionOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:snapshotOptions:DomainConfig' :: Maybe SnapshotOptionsStatus
snapshotOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:vPCOptions:DomainConfig' :: Maybe VPCDerivedInfoStatus
vPCOptions = forall a. Maybe a
Prelude.Nothing
    }

-- | Specifies the access policies for the domain.
domainConfig_accessPolicies :: Lens.Lens' DomainConfig (Prelude.Maybe AccessPoliciesStatus)
domainConfig_accessPolicies :: Lens' DomainConfig (Maybe AccessPoliciesStatus)
domainConfig_accessPolicies = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainConfig' {Maybe AccessPoliciesStatus
accessPolicies :: Maybe AccessPoliciesStatus
$sel:accessPolicies:DomainConfig' :: DomainConfig -> Maybe AccessPoliciesStatus
accessPolicies} -> Maybe AccessPoliciesStatus
accessPolicies) (\s :: DomainConfig
s@DomainConfig' {} Maybe AccessPoliciesStatus
a -> DomainConfig
s {$sel:accessPolicies:DomainConfig' :: Maybe AccessPoliciesStatus
accessPolicies = Maybe AccessPoliciesStatus
a} :: DomainConfig)

-- | Key-value pairs to specify advanced configuration options. For more
-- information, see
-- <https://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html#createdomain-configure-advanced-options Advanced options>.
domainConfig_advancedOptions :: Lens.Lens' DomainConfig (Prelude.Maybe AdvancedOptionsStatus)
domainConfig_advancedOptions :: Lens' DomainConfig (Maybe AdvancedOptionsStatus)
domainConfig_advancedOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainConfig' {Maybe AdvancedOptionsStatus
advancedOptions :: Maybe AdvancedOptionsStatus
$sel:advancedOptions:DomainConfig' :: DomainConfig -> Maybe AdvancedOptionsStatus
advancedOptions} -> Maybe AdvancedOptionsStatus
advancedOptions) (\s :: DomainConfig
s@DomainConfig' {} Maybe AdvancedOptionsStatus
a -> DomainConfig
s {$sel:advancedOptions:DomainConfig' :: Maybe AdvancedOptionsStatus
advancedOptions = Maybe AdvancedOptionsStatus
a} :: DomainConfig)

-- | Container for fine-grained access control settings for the domain.
domainConfig_advancedSecurityOptions :: Lens.Lens' DomainConfig (Prelude.Maybe AdvancedSecurityOptionsStatus)
domainConfig_advancedSecurityOptions :: Lens' DomainConfig (Maybe AdvancedSecurityOptionsStatus)
domainConfig_advancedSecurityOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainConfig' {Maybe AdvancedSecurityOptionsStatus
advancedSecurityOptions :: Maybe AdvancedSecurityOptionsStatus
$sel:advancedSecurityOptions:DomainConfig' :: DomainConfig -> Maybe AdvancedSecurityOptionsStatus
advancedSecurityOptions} -> Maybe AdvancedSecurityOptionsStatus
advancedSecurityOptions) (\s :: DomainConfig
s@DomainConfig' {} Maybe AdvancedSecurityOptionsStatus
a -> DomainConfig
s {$sel:advancedSecurityOptions:DomainConfig' :: Maybe AdvancedSecurityOptionsStatus
advancedSecurityOptions = Maybe AdvancedSecurityOptionsStatus
a} :: DomainConfig)

-- | Container for Auto-Tune settings for the domain.
domainConfig_autoTuneOptions :: Lens.Lens' DomainConfig (Prelude.Maybe AutoTuneOptionsStatus)
domainConfig_autoTuneOptions :: Lens' DomainConfig (Maybe AutoTuneOptionsStatus)
domainConfig_autoTuneOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainConfig' {Maybe AutoTuneOptionsStatus
autoTuneOptions :: Maybe AutoTuneOptionsStatus
$sel:autoTuneOptions:DomainConfig' :: DomainConfig -> Maybe AutoTuneOptionsStatus
autoTuneOptions} -> Maybe AutoTuneOptionsStatus
autoTuneOptions) (\s :: DomainConfig
s@DomainConfig' {} Maybe AutoTuneOptionsStatus
a -> DomainConfig
s {$sel:autoTuneOptions:DomainConfig' :: Maybe AutoTuneOptionsStatus
autoTuneOptions = Maybe AutoTuneOptionsStatus
a} :: DomainConfig)

-- | Container for information about the progress of an existing
-- configuration change.
domainConfig_changeProgressDetails :: Lens.Lens' DomainConfig (Prelude.Maybe ChangeProgressDetails)
domainConfig_changeProgressDetails :: Lens' DomainConfig (Maybe ChangeProgressDetails)
domainConfig_changeProgressDetails = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainConfig' {Maybe ChangeProgressDetails
changeProgressDetails :: Maybe ChangeProgressDetails
$sel:changeProgressDetails:DomainConfig' :: DomainConfig -> Maybe ChangeProgressDetails
changeProgressDetails} -> Maybe ChangeProgressDetails
changeProgressDetails) (\s :: DomainConfig
s@DomainConfig' {} Maybe ChangeProgressDetails
a -> DomainConfig
s {$sel:changeProgressDetails:DomainConfig' :: Maybe ChangeProgressDetails
changeProgressDetails = Maybe ChangeProgressDetails
a} :: DomainConfig)

-- | Container for the cluster configuration of a the domain.
domainConfig_clusterConfig :: Lens.Lens' DomainConfig (Prelude.Maybe ClusterConfigStatus)
domainConfig_clusterConfig :: Lens' DomainConfig (Maybe ClusterConfigStatus)
domainConfig_clusterConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainConfig' {Maybe ClusterConfigStatus
clusterConfig :: Maybe ClusterConfigStatus
$sel:clusterConfig:DomainConfig' :: DomainConfig -> Maybe ClusterConfigStatus
clusterConfig} -> Maybe ClusterConfigStatus
clusterConfig) (\s :: DomainConfig
s@DomainConfig' {} Maybe ClusterConfigStatus
a -> DomainConfig
s {$sel:clusterConfig:DomainConfig' :: Maybe ClusterConfigStatus
clusterConfig = Maybe ClusterConfigStatus
a} :: DomainConfig)

-- | Container for Amazon Cognito options for the domain.
domainConfig_cognitoOptions :: Lens.Lens' DomainConfig (Prelude.Maybe CognitoOptionsStatus)
domainConfig_cognitoOptions :: Lens' DomainConfig (Maybe CognitoOptionsStatus)
domainConfig_cognitoOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainConfig' {Maybe CognitoOptionsStatus
cognitoOptions :: Maybe CognitoOptionsStatus
$sel:cognitoOptions:DomainConfig' :: DomainConfig -> Maybe CognitoOptionsStatus
cognitoOptions} -> Maybe CognitoOptionsStatus
cognitoOptions) (\s :: DomainConfig
s@DomainConfig' {} Maybe CognitoOptionsStatus
a -> DomainConfig
s {$sel:cognitoOptions:DomainConfig' :: Maybe CognitoOptionsStatus
cognitoOptions = Maybe CognitoOptionsStatus
a} :: DomainConfig)

-- | Additional options for the domain endpoint, such as whether to require
-- HTTPS for all traffic.
domainConfig_domainEndpointOptions :: Lens.Lens' DomainConfig (Prelude.Maybe DomainEndpointOptionsStatus)
domainConfig_domainEndpointOptions :: Lens' DomainConfig (Maybe DomainEndpointOptionsStatus)
domainConfig_domainEndpointOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainConfig' {Maybe DomainEndpointOptionsStatus
domainEndpointOptions :: Maybe DomainEndpointOptionsStatus
$sel:domainEndpointOptions:DomainConfig' :: DomainConfig -> Maybe DomainEndpointOptionsStatus
domainEndpointOptions} -> Maybe DomainEndpointOptionsStatus
domainEndpointOptions) (\s :: DomainConfig
s@DomainConfig' {} Maybe DomainEndpointOptionsStatus
a -> DomainConfig
s {$sel:domainEndpointOptions:DomainConfig' :: Maybe DomainEndpointOptionsStatus
domainEndpointOptions = Maybe DomainEndpointOptionsStatus
a} :: DomainConfig)

-- | Container for EBS options configured for an OpenSearch Service domain.
domainConfig_eBSOptions :: Lens.Lens' DomainConfig (Prelude.Maybe EBSOptionsStatus)
domainConfig_eBSOptions :: Lens' DomainConfig (Maybe EBSOptionsStatus)
domainConfig_eBSOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainConfig' {Maybe EBSOptionsStatus
eBSOptions :: Maybe EBSOptionsStatus
$sel:eBSOptions:DomainConfig' :: DomainConfig -> Maybe EBSOptionsStatus
eBSOptions} -> Maybe EBSOptionsStatus
eBSOptions) (\s :: DomainConfig
s@DomainConfig' {} Maybe EBSOptionsStatus
a -> DomainConfig
s {$sel:eBSOptions:DomainConfig' :: Maybe EBSOptionsStatus
eBSOptions = Maybe EBSOptionsStatus
a} :: DomainConfig)

-- | Key-value pairs to enable encryption at rest.
domainConfig_encryptionAtRestOptions :: Lens.Lens' DomainConfig (Prelude.Maybe EncryptionAtRestOptionsStatus)
domainConfig_encryptionAtRestOptions :: Lens' DomainConfig (Maybe EncryptionAtRestOptionsStatus)
domainConfig_encryptionAtRestOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainConfig' {Maybe EncryptionAtRestOptionsStatus
encryptionAtRestOptions :: Maybe EncryptionAtRestOptionsStatus
$sel:encryptionAtRestOptions:DomainConfig' :: DomainConfig -> Maybe EncryptionAtRestOptionsStatus
encryptionAtRestOptions} -> Maybe EncryptionAtRestOptionsStatus
encryptionAtRestOptions) (\s :: DomainConfig
s@DomainConfig' {} Maybe EncryptionAtRestOptionsStatus
a -> DomainConfig
s {$sel:encryptionAtRestOptions:DomainConfig' :: Maybe EncryptionAtRestOptionsStatus
encryptionAtRestOptions = Maybe EncryptionAtRestOptionsStatus
a} :: DomainConfig)

-- | The OpenSearch or Elasticsearch version that the domain is running.
domainConfig_engineVersion :: Lens.Lens' DomainConfig (Prelude.Maybe VersionStatus)
domainConfig_engineVersion :: Lens' DomainConfig (Maybe VersionStatus)
domainConfig_engineVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainConfig' {Maybe VersionStatus
engineVersion :: Maybe VersionStatus
$sel:engineVersion:DomainConfig' :: DomainConfig -> Maybe VersionStatus
engineVersion} -> Maybe VersionStatus
engineVersion) (\s :: DomainConfig
s@DomainConfig' {} Maybe VersionStatus
a -> DomainConfig
s {$sel:engineVersion:DomainConfig' :: Maybe VersionStatus
engineVersion = Maybe VersionStatus
a} :: DomainConfig)

-- | Key-value pairs to configure slow log publishing.
domainConfig_logPublishingOptions :: Lens.Lens' DomainConfig (Prelude.Maybe LogPublishingOptionsStatus)
domainConfig_logPublishingOptions :: Lens' DomainConfig (Maybe LogPublishingOptionsStatus)
domainConfig_logPublishingOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainConfig' {Maybe LogPublishingOptionsStatus
logPublishingOptions :: Maybe LogPublishingOptionsStatus
$sel:logPublishingOptions:DomainConfig' :: DomainConfig -> Maybe LogPublishingOptionsStatus
logPublishingOptions} -> Maybe LogPublishingOptionsStatus
logPublishingOptions) (\s :: DomainConfig
s@DomainConfig' {} Maybe LogPublishingOptionsStatus
a -> DomainConfig
s {$sel:logPublishingOptions:DomainConfig' :: Maybe LogPublishingOptionsStatus
logPublishingOptions = Maybe LogPublishingOptionsStatus
a} :: DomainConfig)

-- | Whether node-to-node encryption is enabled or disabled.
domainConfig_nodeToNodeEncryptionOptions :: Lens.Lens' DomainConfig (Prelude.Maybe NodeToNodeEncryptionOptionsStatus)
domainConfig_nodeToNodeEncryptionOptions :: Lens' DomainConfig (Maybe NodeToNodeEncryptionOptionsStatus)
domainConfig_nodeToNodeEncryptionOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainConfig' {Maybe NodeToNodeEncryptionOptionsStatus
nodeToNodeEncryptionOptions :: Maybe NodeToNodeEncryptionOptionsStatus
$sel:nodeToNodeEncryptionOptions:DomainConfig' :: DomainConfig -> Maybe NodeToNodeEncryptionOptionsStatus
nodeToNodeEncryptionOptions} -> Maybe NodeToNodeEncryptionOptionsStatus
nodeToNodeEncryptionOptions) (\s :: DomainConfig
s@DomainConfig' {} Maybe NodeToNodeEncryptionOptionsStatus
a -> DomainConfig
s {$sel:nodeToNodeEncryptionOptions:DomainConfig' :: Maybe NodeToNodeEncryptionOptionsStatus
nodeToNodeEncryptionOptions = Maybe NodeToNodeEncryptionOptionsStatus
a} :: DomainConfig)

-- | DEPRECATED. Container for parameters required to configure automated
-- snapshots of domain indexes.
domainConfig_snapshotOptions :: Lens.Lens' DomainConfig (Prelude.Maybe SnapshotOptionsStatus)
domainConfig_snapshotOptions :: Lens' DomainConfig (Maybe SnapshotOptionsStatus)
domainConfig_snapshotOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainConfig' {Maybe SnapshotOptionsStatus
snapshotOptions :: Maybe SnapshotOptionsStatus
$sel:snapshotOptions:DomainConfig' :: DomainConfig -> Maybe SnapshotOptionsStatus
snapshotOptions} -> Maybe SnapshotOptionsStatus
snapshotOptions) (\s :: DomainConfig
s@DomainConfig' {} Maybe SnapshotOptionsStatus
a -> DomainConfig
s {$sel:snapshotOptions:DomainConfig' :: Maybe SnapshotOptionsStatus
snapshotOptions = Maybe SnapshotOptionsStatus
a} :: DomainConfig)

-- | The current VPC options for the domain and the status of any updates to
-- their configuration.
domainConfig_vPCOptions :: Lens.Lens' DomainConfig (Prelude.Maybe VPCDerivedInfoStatus)
domainConfig_vPCOptions :: Lens' DomainConfig (Maybe VPCDerivedInfoStatus)
domainConfig_vPCOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainConfig' {Maybe VPCDerivedInfoStatus
vPCOptions :: Maybe VPCDerivedInfoStatus
$sel:vPCOptions:DomainConfig' :: DomainConfig -> Maybe VPCDerivedInfoStatus
vPCOptions} -> Maybe VPCDerivedInfoStatus
vPCOptions) (\s :: DomainConfig
s@DomainConfig' {} Maybe VPCDerivedInfoStatus
a -> DomainConfig
s {$sel:vPCOptions:DomainConfig' :: Maybe VPCDerivedInfoStatus
vPCOptions = Maybe VPCDerivedInfoStatus
a} :: DomainConfig)

instance Data.FromJSON DomainConfig where
  parseJSON :: Value -> Parser DomainConfig
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"DomainConfig"
      ( \Object
x ->
          Maybe AccessPoliciesStatus
-> Maybe AdvancedOptionsStatus
-> Maybe AdvancedSecurityOptionsStatus
-> Maybe AutoTuneOptionsStatus
-> Maybe ChangeProgressDetails
-> Maybe ClusterConfigStatus
-> Maybe CognitoOptionsStatus
-> Maybe DomainEndpointOptionsStatus
-> Maybe EBSOptionsStatus
-> Maybe EncryptionAtRestOptionsStatus
-> Maybe VersionStatus
-> Maybe LogPublishingOptionsStatus
-> Maybe NodeToNodeEncryptionOptionsStatus
-> Maybe SnapshotOptionsStatus
-> Maybe VPCDerivedInfoStatus
-> DomainConfig
DomainConfig'
            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
"AccessPolicies")
            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
"AdvancedOptions")
            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
"AdvancedSecurityOptions")
            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
"AutoTuneOptions")
            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
"ChangeProgressDetails")
            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
"ClusterConfig")
            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
"CognitoOptions")
            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
"DomainEndpointOptions")
            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
"EBSOptions")
            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
"EncryptionAtRestOptions")
            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
"EngineVersion")
            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
"LogPublishingOptions")
            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
"NodeToNodeEncryptionOptions")
            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
"SnapshotOptions")
            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
"VPCOptions")
      )

instance Prelude.Hashable DomainConfig where
  hashWithSalt :: Int -> DomainConfig -> Int
hashWithSalt Int
_salt DomainConfig' {Maybe ChangeProgressDetails
Maybe NodeToNodeEncryptionOptionsStatus
Maybe LogPublishingOptionsStatus
Maybe EncryptionAtRestOptionsStatus
Maybe CognitoOptionsStatus
Maybe AdvancedOptionsStatus
Maybe AccessPoliciesStatus
Maybe AdvancedSecurityOptionsStatus
Maybe SnapshotOptionsStatus
Maybe DomainEndpointOptionsStatus
Maybe AutoTuneOptionsStatus
Maybe VPCDerivedInfoStatus
Maybe VersionStatus
Maybe EBSOptionsStatus
Maybe ClusterConfigStatus
vPCOptions :: Maybe VPCDerivedInfoStatus
snapshotOptions :: Maybe SnapshotOptionsStatus
nodeToNodeEncryptionOptions :: Maybe NodeToNodeEncryptionOptionsStatus
logPublishingOptions :: Maybe LogPublishingOptionsStatus
engineVersion :: Maybe VersionStatus
encryptionAtRestOptions :: Maybe EncryptionAtRestOptionsStatus
eBSOptions :: Maybe EBSOptionsStatus
domainEndpointOptions :: Maybe DomainEndpointOptionsStatus
cognitoOptions :: Maybe CognitoOptionsStatus
clusterConfig :: Maybe ClusterConfigStatus
changeProgressDetails :: Maybe ChangeProgressDetails
autoTuneOptions :: Maybe AutoTuneOptionsStatus
advancedSecurityOptions :: Maybe AdvancedSecurityOptionsStatus
advancedOptions :: Maybe AdvancedOptionsStatus
accessPolicies :: Maybe AccessPoliciesStatus
$sel:vPCOptions:DomainConfig' :: DomainConfig -> Maybe VPCDerivedInfoStatus
$sel:snapshotOptions:DomainConfig' :: DomainConfig -> Maybe SnapshotOptionsStatus
$sel:nodeToNodeEncryptionOptions:DomainConfig' :: DomainConfig -> Maybe NodeToNodeEncryptionOptionsStatus
$sel:logPublishingOptions:DomainConfig' :: DomainConfig -> Maybe LogPublishingOptionsStatus
$sel:engineVersion:DomainConfig' :: DomainConfig -> Maybe VersionStatus
$sel:encryptionAtRestOptions:DomainConfig' :: DomainConfig -> Maybe EncryptionAtRestOptionsStatus
$sel:eBSOptions:DomainConfig' :: DomainConfig -> Maybe EBSOptionsStatus
$sel:domainEndpointOptions:DomainConfig' :: DomainConfig -> Maybe DomainEndpointOptionsStatus
$sel:cognitoOptions:DomainConfig' :: DomainConfig -> Maybe CognitoOptionsStatus
$sel:clusterConfig:DomainConfig' :: DomainConfig -> Maybe ClusterConfigStatus
$sel:changeProgressDetails:DomainConfig' :: DomainConfig -> Maybe ChangeProgressDetails
$sel:autoTuneOptions:DomainConfig' :: DomainConfig -> Maybe AutoTuneOptionsStatus
$sel:advancedSecurityOptions:DomainConfig' :: DomainConfig -> Maybe AdvancedSecurityOptionsStatus
$sel:advancedOptions:DomainConfig' :: DomainConfig -> Maybe AdvancedOptionsStatus
$sel:accessPolicies:DomainConfig' :: DomainConfig -> Maybe AccessPoliciesStatus
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AccessPoliciesStatus
accessPolicies
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AdvancedOptionsStatus
advancedOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AdvancedSecurityOptionsStatus
advancedSecurityOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AutoTuneOptionsStatus
autoTuneOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ChangeProgressDetails
changeProgressDetails
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ClusterConfigStatus
clusterConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe CognitoOptionsStatus
cognitoOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DomainEndpointOptionsStatus
domainEndpointOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe EBSOptionsStatus
eBSOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe EncryptionAtRestOptionsStatus
encryptionAtRestOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe VersionStatus
engineVersion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LogPublishingOptionsStatus
logPublishingOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe NodeToNodeEncryptionOptionsStatus
nodeToNodeEncryptionOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SnapshotOptionsStatus
snapshotOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe VPCDerivedInfoStatus
vPCOptions

instance Prelude.NFData DomainConfig where
  rnf :: DomainConfig -> ()
rnf DomainConfig' {Maybe ChangeProgressDetails
Maybe NodeToNodeEncryptionOptionsStatus
Maybe LogPublishingOptionsStatus
Maybe EncryptionAtRestOptionsStatus
Maybe CognitoOptionsStatus
Maybe AdvancedOptionsStatus
Maybe AccessPoliciesStatus
Maybe AdvancedSecurityOptionsStatus
Maybe SnapshotOptionsStatus
Maybe DomainEndpointOptionsStatus
Maybe AutoTuneOptionsStatus
Maybe VPCDerivedInfoStatus
Maybe VersionStatus
Maybe EBSOptionsStatus
Maybe ClusterConfigStatus
vPCOptions :: Maybe VPCDerivedInfoStatus
snapshotOptions :: Maybe SnapshotOptionsStatus
nodeToNodeEncryptionOptions :: Maybe NodeToNodeEncryptionOptionsStatus
logPublishingOptions :: Maybe LogPublishingOptionsStatus
engineVersion :: Maybe VersionStatus
encryptionAtRestOptions :: Maybe EncryptionAtRestOptionsStatus
eBSOptions :: Maybe EBSOptionsStatus
domainEndpointOptions :: Maybe DomainEndpointOptionsStatus
cognitoOptions :: Maybe CognitoOptionsStatus
clusterConfig :: Maybe ClusterConfigStatus
changeProgressDetails :: Maybe ChangeProgressDetails
autoTuneOptions :: Maybe AutoTuneOptionsStatus
advancedSecurityOptions :: Maybe AdvancedSecurityOptionsStatus
advancedOptions :: Maybe AdvancedOptionsStatus
accessPolicies :: Maybe AccessPoliciesStatus
$sel:vPCOptions:DomainConfig' :: DomainConfig -> Maybe VPCDerivedInfoStatus
$sel:snapshotOptions:DomainConfig' :: DomainConfig -> Maybe SnapshotOptionsStatus
$sel:nodeToNodeEncryptionOptions:DomainConfig' :: DomainConfig -> Maybe NodeToNodeEncryptionOptionsStatus
$sel:logPublishingOptions:DomainConfig' :: DomainConfig -> Maybe LogPublishingOptionsStatus
$sel:engineVersion:DomainConfig' :: DomainConfig -> Maybe VersionStatus
$sel:encryptionAtRestOptions:DomainConfig' :: DomainConfig -> Maybe EncryptionAtRestOptionsStatus
$sel:eBSOptions:DomainConfig' :: DomainConfig -> Maybe EBSOptionsStatus
$sel:domainEndpointOptions:DomainConfig' :: DomainConfig -> Maybe DomainEndpointOptionsStatus
$sel:cognitoOptions:DomainConfig' :: DomainConfig -> Maybe CognitoOptionsStatus
$sel:clusterConfig:DomainConfig' :: DomainConfig -> Maybe ClusterConfigStatus
$sel:changeProgressDetails:DomainConfig' :: DomainConfig -> Maybe ChangeProgressDetails
$sel:autoTuneOptions:DomainConfig' :: DomainConfig -> Maybe AutoTuneOptionsStatus
$sel:advancedSecurityOptions:DomainConfig' :: DomainConfig -> Maybe AdvancedSecurityOptionsStatus
$sel:advancedOptions:DomainConfig' :: DomainConfig -> Maybe AdvancedOptionsStatus
$sel:accessPolicies:DomainConfig' :: DomainConfig -> Maybe AccessPoliciesStatus
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe AccessPoliciesStatus
accessPolicies
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AdvancedOptionsStatus
advancedOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AdvancedSecurityOptionsStatus
advancedSecurityOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AutoTuneOptionsStatus
autoTuneOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ChangeProgressDetails
changeProgressDetails
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ClusterConfigStatus
clusterConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe CognitoOptionsStatus
cognitoOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DomainEndpointOptionsStatus
domainEndpointOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe EBSOptionsStatus
eBSOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe EncryptionAtRestOptionsStatus
encryptionAtRestOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe VersionStatus
engineVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LogPublishingOptionsStatus
logPublishingOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe NodeToNodeEncryptionOptionsStatus
nodeToNodeEncryptionOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SnapshotOptionsStatus
snapshotOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe VPCDerivedInfoStatus
vPCOptions