{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# 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.UpdateDomainConfig
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Modifies the cluster configuration of the specified Amazon OpenSearch
-- Service domain.
module Amazonka.OpenSearch.UpdateDomainConfig
  ( -- * Creating a Request
    UpdateDomainConfig (..),
    newUpdateDomainConfig,

    -- * Request Lenses
    updateDomainConfig_accessPolicies,
    updateDomainConfig_advancedOptions,
    updateDomainConfig_advancedSecurityOptions,
    updateDomainConfig_autoTuneOptions,
    updateDomainConfig_clusterConfig,
    updateDomainConfig_cognitoOptions,
    updateDomainConfig_domainEndpointOptions,
    updateDomainConfig_dryRun,
    updateDomainConfig_eBSOptions,
    updateDomainConfig_encryptionAtRestOptions,
    updateDomainConfig_logPublishingOptions,
    updateDomainConfig_nodeToNodeEncryptionOptions,
    updateDomainConfig_snapshotOptions,
    updateDomainConfig_vPCOptions,
    updateDomainConfig_domainName,

    -- * Destructuring the Response
    UpdateDomainConfigResponse (..),
    newUpdateDomainConfigResponse,

    -- * Response Lenses
    updateDomainConfigResponse_dryRunResults,
    updateDomainConfigResponse_httpStatus,
    updateDomainConfigResponse_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
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | Container for the request parameters to the @UpdateDomain@ operation.
--
-- /See:/ 'newUpdateDomainConfig' smart constructor.
data UpdateDomainConfig = UpdateDomainConfig'
  { -- | Identity and Access Management (IAM) access policy as a JSON-formatted
    -- string.
    UpdateDomainConfig -> Maybe Text
accessPolicies :: Prelude.Maybe Prelude.Text,
    -- | Key-value pairs to specify advanced configuration options. The following
    -- key-value pairs are supported:
    --
    -- -   @\"rest.action.multi.allow_explicit_index\": \"true\" | \"false\"@ -
    --     Note the use of a string rather than a boolean. Specifies whether
    --     explicit references to indexes are allowed inside the body of HTTP
    --     requests. If you want to configure access policies for domain
    --     sub-resources, such as specific indexes and domain APIs, you must
    --     disable this property. Default is true.
    --
    -- -   @\"indices.fielddata.cache.size\": \"80\" @ - Note the use of a
    --     string rather than a boolean. Specifies the percentage of heap space
    --     allocated to field data. Default is unbounded.
    --
    -- -   @\"indices.query.bool.max_clause_count\": \"1024\"@ - Note the use
    --     of a string rather than a boolean. Specifies the maximum number of
    --     clauses allowed in a Lucene boolean query. Default is 1,024. Queries
    --     with more than the permitted number of clauses result in a
    --     @TooManyClauses@ error.
    --
    -- -   @\"override_main_response_version\": \"true\" | \"false\"@ - Note
    --     the use of a string rather than a boolean. Specifies whether the
    --     domain reports its version as 7.10 to allow Elasticsearch OSS
    --     clients and plugins to continue working with it. Default is false
    --     when creating a domain and true when upgrading a domain.
    --
    -- For more information, see
    -- <https://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html#createdomain-configure-advanced-options Advanced cluster parameters>.
    UpdateDomainConfig -> Maybe (HashMap Text Text)
advancedOptions :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | Options for fine-grained access control.
    UpdateDomainConfig -> Maybe AdvancedSecurityOptionsInput
advancedSecurityOptions :: Prelude.Maybe AdvancedSecurityOptionsInput,
    -- | Options for Auto-Tune.
    UpdateDomainConfig -> Maybe AutoTuneOptions
autoTuneOptions :: Prelude.Maybe AutoTuneOptions,
    -- | Changes that you want to make to the cluster configuration, such as the
    -- instance type and number of EC2 instances.
    UpdateDomainConfig -> Maybe ClusterConfig
clusterConfig :: Prelude.Maybe ClusterConfig,
    -- | Key-value pairs to configure Amazon Cognito authentication for
    -- OpenSearch Dashboards.
    UpdateDomainConfig -> Maybe CognitoOptions
cognitoOptions :: Prelude.Maybe CognitoOptions,
    -- | Additional options for the domain endpoint, such as whether to require
    -- HTTPS for all traffic.
    UpdateDomainConfig -> Maybe DomainEndpointOptions
domainEndpointOptions :: Prelude.Maybe DomainEndpointOptions,
    -- | This flag, when set to True, specifies whether the @UpdateDomain@
    -- request should return the results of validation check without actually
    -- applying the change.
    UpdateDomainConfig -> Maybe Bool
dryRun :: Prelude.Maybe Prelude.Bool,
    -- | The type and size of the EBS volume to attach to instances in the
    -- domain.
    UpdateDomainConfig -> Maybe EBSOptions
eBSOptions :: Prelude.Maybe EBSOptions,
    -- | Encryption at rest options for the domain.
    UpdateDomainConfig -> Maybe EncryptionAtRestOptions
encryptionAtRestOptions :: Prelude.Maybe EncryptionAtRestOptions,
    -- | Options to publish OpenSearch lots to Amazon CloudWatch Logs.
    UpdateDomainConfig -> Maybe (HashMap LogType LogPublishingOption)
logPublishingOptions :: Prelude.Maybe (Prelude.HashMap LogType LogPublishingOption),
    -- | Node-To-Node Encryption options for the domain.
    UpdateDomainConfig -> Maybe NodeToNodeEncryptionOptions
nodeToNodeEncryptionOptions :: Prelude.Maybe NodeToNodeEncryptionOptions,
    -- | Option to set the time, in UTC format, for the daily automated snapshot.
    -- Default value is @0@ hours.
    UpdateDomainConfig -> Maybe SnapshotOptions
snapshotOptions :: Prelude.Maybe SnapshotOptions,
    -- | Options to specify the subnets and security groups for a VPC endpoint.
    -- For more information, see
    -- <https://docs.aws.amazon.com/opensearch-service/latest/developerguide/vpc.html Launching your Amazon OpenSearch Service domains using a VPC>.
    UpdateDomainConfig -> Maybe VPCOptions
vPCOptions :: Prelude.Maybe VPCOptions,
    -- | The name of the domain that you\'re updating.
    UpdateDomainConfig -> Text
domainName :: Prelude.Text
  }
  deriving (UpdateDomainConfig -> UpdateDomainConfig -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateDomainConfig -> UpdateDomainConfig -> Bool
$c/= :: UpdateDomainConfig -> UpdateDomainConfig -> Bool
== :: UpdateDomainConfig -> UpdateDomainConfig -> Bool
$c== :: UpdateDomainConfig -> UpdateDomainConfig -> Bool
Prelude.Eq, Int -> UpdateDomainConfig -> ShowS
[UpdateDomainConfig] -> ShowS
UpdateDomainConfig -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateDomainConfig] -> ShowS
$cshowList :: [UpdateDomainConfig] -> ShowS
show :: UpdateDomainConfig -> String
$cshow :: UpdateDomainConfig -> String
showsPrec :: Int -> UpdateDomainConfig -> ShowS
$cshowsPrec :: Int -> UpdateDomainConfig -> ShowS
Prelude.Show, forall x. Rep UpdateDomainConfig x -> UpdateDomainConfig
forall x. UpdateDomainConfig -> Rep UpdateDomainConfig x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep UpdateDomainConfig x -> UpdateDomainConfig
$cfrom :: forall x. UpdateDomainConfig -> Rep UpdateDomainConfig x
Prelude.Generic)

-- |
-- Create a value of 'UpdateDomainConfig' 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', 'updateDomainConfig_accessPolicies' - Identity and Access Management (IAM) access policy as a JSON-formatted
-- string.
--
-- 'advancedOptions', 'updateDomainConfig_advancedOptions' - Key-value pairs to specify advanced configuration options. The following
-- key-value pairs are supported:
--
-- -   @\"rest.action.multi.allow_explicit_index\": \"true\" | \"false\"@ -
--     Note the use of a string rather than a boolean. Specifies whether
--     explicit references to indexes are allowed inside the body of HTTP
--     requests. If you want to configure access policies for domain
--     sub-resources, such as specific indexes and domain APIs, you must
--     disable this property. Default is true.
--
-- -   @\"indices.fielddata.cache.size\": \"80\" @ - Note the use of a
--     string rather than a boolean. Specifies the percentage of heap space
--     allocated to field data. Default is unbounded.
--
-- -   @\"indices.query.bool.max_clause_count\": \"1024\"@ - Note the use
--     of a string rather than a boolean. Specifies the maximum number of
--     clauses allowed in a Lucene boolean query. Default is 1,024. Queries
--     with more than the permitted number of clauses result in a
--     @TooManyClauses@ error.
--
-- -   @\"override_main_response_version\": \"true\" | \"false\"@ - Note
--     the use of a string rather than a boolean. Specifies whether the
--     domain reports its version as 7.10 to allow Elasticsearch OSS
--     clients and plugins to continue working with it. Default is false
--     when creating a domain and true when upgrading a domain.
--
-- For more information, see
-- <https://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html#createdomain-configure-advanced-options Advanced cluster parameters>.
--
-- 'advancedSecurityOptions', 'updateDomainConfig_advancedSecurityOptions' - Options for fine-grained access control.
--
-- 'autoTuneOptions', 'updateDomainConfig_autoTuneOptions' - Options for Auto-Tune.
--
-- 'clusterConfig', 'updateDomainConfig_clusterConfig' - Changes that you want to make to the cluster configuration, such as the
-- instance type and number of EC2 instances.
--
-- 'cognitoOptions', 'updateDomainConfig_cognitoOptions' - Key-value pairs to configure Amazon Cognito authentication for
-- OpenSearch Dashboards.
--
-- 'domainEndpointOptions', 'updateDomainConfig_domainEndpointOptions' - Additional options for the domain endpoint, such as whether to require
-- HTTPS for all traffic.
--
-- 'dryRun', 'updateDomainConfig_dryRun' - This flag, when set to True, specifies whether the @UpdateDomain@
-- request should return the results of validation check without actually
-- applying the change.
--
-- 'eBSOptions', 'updateDomainConfig_eBSOptions' - The type and size of the EBS volume to attach to instances in the
-- domain.
--
-- 'encryptionAtRestOptions', 'updateDomainConfig_encryptionAtRestOptions' - Encryption at rest options for the domain.
--
-- 'logPublishingOptions', 'updateDomainConfig_logPublishingOptions' - Options to publish OpenSearch lots to Amazon CloudWatch Logs.
--
-- 'nodeToNodeEncryptionOptions', 'updateDomainConfig_nodeToNodeEncryptionOptions' - Node-To-Node Encryption options for the domain.
--
-- 'snapshotOptions', 'updateDomainConfig_snapshotOptions' - Option to set the time, in UTC format, for the daily automated snapshot.
-- Default value is @0@ hours.
--
-- 'vPCOptions', 'updateDomainConfig_vPCOptions' - Options to specify the subnets and security groups for a VPC endpoint.
-- For more information, see
-- <https://docs.aws.amazon.com/opensearch-service/latest/developerguide/vpc.html Launching your Amazon OpenSearch Service domains using a VPC>.
--
-- 'domainName', 'updateDomainConfig_domainName' - The name of the domain that you\'re updating.
newUpdateDomainConfig ::
  -- | 'domainName'
  Prelude.Text ->
  UpdateDomainConfig
newUpdateDomainConfig :: Text -> UpdateDomainConfig
newUpdateDomainConfig Text
pDomainName_ =
  UpdateDomainConfig'
    { $sel:accessPolicies:UpdateDomainConfig' :: Maybe Text
accessPolicies =
        forall a. Maybe a
Prelude.Nothing,
      $sel:advancedOptions:UpdateDomainConfig' :: Maybe (HashMap Text Text)
advancedOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:advancedSecurityOptions:UpdateDomainConfig' :: Maybe AdvancedSecurityOptionsInput
advancedSecurityOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:autoTuneOptions:UpdateDomainConfig' :: Maybe AutoTuneOptions
autoTuneOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:clusterConfig:UpdateDomainConfig' :: Maybe ClusterConfig
clusterConfig = forall a. Maybe a
Prelude.Nothing,
      $sel:cognitoOptions:UpdateDomainConfig' :: Maybe CognitoOptions
cognitoOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:domainEndpointOptions:UpdateDomainConfig' :: Maybe DomainEndpointOptions
domainEndpointOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:dryRun:UpdateDomainConfig' :: Maybe Bool
dryRun = forall a. Maybe a
Prelude.Nothing,
      $sel:eBSOptions:UpdateDomainConfig' :: Maybe EBSOptions
eBSOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:encryptionAtRestOptions:UpdateDomainConfig' :: Maybe EncryptionAtRestOptions
encryptionAtRestOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:logPublishingOptions:UpdateDomainConfig' :: Maybe (HashMap LogType LogPublishingOption)
logPublishingOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:nodeToNodeEncryptionOptions:UpdateDomainConfig' :: Maybe NodeToNodeEncryptionOptions
nodeToNodeEncryptionOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:snapshotOptions:UpdateDomainConfig' :: Maybe SnapshotOptions
snapshotOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:vPCOptions:UpdateDomainConfig' :: Maybe VPCOptions
vPCOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:domainName:UpdateDomainConfig' :: Text
domainName = Text
pDomainName_
    }

-- | Identity and Access Management (IAM) access policy as a JSON-formatted
-- string.
updateDomainConfig_accessPolicies :: Lens.Lens' UpdateDomainConfig (Prelude.Maybe Prelude.Text)
updateDomainConfig_accessPolicies :: Lens' UpdateDomainConfig (Maybe Text)
updateDomainConfig_accessPolicies = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDomainConfig' {Maybe Text
accessPolicies :: Maybe Text
$sel:accessPolicies:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe Text
accessPolicies} -> Maybe Text
accessPolicies) (\s :: UpdateDomainConfig
s@UpdateDomainConfig' {} Maybe Text
a -> UpdateDomainConfig
s {$sel:accessPolicies:UpdateDomainConfig' :: Maybe Text
accessPolicies = Maybe Text
a} :: UpdateDomainConfig)

-- | Key-value pairs to specify advanced configuration options. The following
-- key-value pairs are supported:
--
-- -   @\"rest.action.multi.allow_explicit_index\": \"true\" | \"false\"@ -
--     Note the use of a string rather than a boolean. Specifies whether
--     explicit references to indexes are allowed inside the body of HTTP
--     requests. If you want to configure access policies for domain
--     sub-resources, such as specific indexes and domain APIs, you must
--     disable this property. Default is true.
--
-- -   @\"indices.fielddata.cache.size\": \"80\" @ - Note the use of a
--     string rather than a boolean. Specifies the percentage of heap space
--     allocated to field data. Default is unbounded.
--
-- -   @\"indices.query.bool.max_clause_count\": \"1024\"@ - Note the use
--     of a string rather than a boolean. Specifies the maximum number of
--     clauses allowed in a Lucene boolean query. Default is 1,024. Queries
--     with more than the permitted number of clauses result in a
--     @TooManyClauses@ error.
--
-- -   @\"override_main_response_version\": \"true\" | \"false\"@ - Note
--     the use of a string rather than a boolean. Specifies whether the
--     domain reports its version as 7.10 to allow Elasticsearch OSS
--     clients and plugins to continue working with it. Default is false
--     when creating a domain and true when upgrading a domain.
--
-- For more information, see
-- <https://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html#createdomain-configure-advanced-options Advanced cluster parameters>.
updateDomainConfig_advancedOptions :: Lens.Lens' UpdateDomainConfig (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
updateDomainConfig_advancedOptions :: Lens' UpdateDomainConfig (Maybe (HashMap Text Text))
updateDomainConfig_advancedOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDomainConfig' {Maybe (HashMap Text Text)
advancedOptions :: Maybe (HashMap Text Text)
$sel:advancedOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe (HashMap Text Text)
advancedOptions} -> Maybe (HashMap Text Text)
advancedOptions) (\s :: UpdateDomainConfig
s@UpdateDomainConfig' {} Maybe (HashMap Text Text)
a -> UpdateDomainConfig
s {$sel:advancedOptions:UpdateDomainConfig' :: Maybe (HashMap Text Text)
advancedOptions = Maybe (HashMap Text Text)
a} :: UpdateDomainConfig) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Options for fine-grained access control.
updateDomainConfig_advancedSecurityOptions :: Lens.Lens' UpdateDomainConfig (Prelude.Maybe AdvancedSecurityOptionsInput)
updateDomainConfig_advancedSecurityOptions :: Lens' UpdateDomainConfig (Maybe AdvancedSecurityOptionsInput)
updateDomainConfig_advancedSecurityOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDomainConfig' {Maybe AdvancedSecurityOptionsInput
advancedSecurityOptions :: Maybe AdvancedSecurityOptionsInput
$sel:advancedSecurityOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe AdvancedSecurityOptionsInput
advancedSecurityOptions} -> Maybe AdvancedSecurityOptionsInput
advancedSecurityOptions) (\s :: UpdateDomainConfig
s@UpdateDomainConfig' {} Maybe AdvancedSecurityOptionsInput
a -> UpdateDomainConfig
s {$sel:advancedSecurityOptions:UpdateDomainConfig' :: Maybe AdvancedSecurityOptionsInput
advancedSecurityOptions = Maybe AdvancedSecurityOptionsInput
a} :: UpdateDomainConfig)

-- | Options for Auto-Tune.
updateDomainConfig_autoTuneOptions :: Lens.Lens' UpdateDomainConfig (Prelude.Maybe AutoTuneOptions)
updateDomainConfig_autoTuneOptions :: Lens' UpdateDomainConfig (Maybe AutoTuneOptions)
updateDomainConfig_autoTuneOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDomainConfig' {Maybe AutoTuneOptions
autoTuneOptions :: Maybe AutoTuneOptions
$sel:autoTuneOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe AutoTuneOptions
autoTuneOptions} -> Maybe AutoTuneOptions
autoTuneOptions) (\s :: UpdateDomainConfig
s@UpdateDomainConfig' {} Maybe AutoTuneOptions
a -> UpdateDomainConfig
s {$sel:autoTuneOptions:UpdateDomainConfig' :: Maybe AutoTuneOptions
autoTuneOptions = Maybe AutoTuneOptions
a} :: UpdateDomainConfig)

-- | Changes that you want to make to the cluster configuration, such as the
-- instance type and number of EC2 instances.
updateDomainConfig_clusterConfig :: Lens.Lens' UpdateDomainConfig (Prelude.Maybe ClusterConfig)
updateDomainConfig_clusterConfig :: Lens' UpdateDomainConfig (Maybe ClusterConfig)
updateDomainConfig_clusterConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDomainConfig' {Maybe ClusterConfig
clusterConfig :: Maybe ClusterConfig
$sel:clusterConfig:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe ClusterConfig
clusterConfig} -> Maybe ClusterConfig
clusterConfig) (\s :: UpdateDomainConfig
s@UpdateDomainConfig' {} Maybe ClusterConfig
a -> UpdateDomainConfig
s {$sel:clusterConfig:UpdateDomainConfig' :: Maybe ClusterConfig
clusterConfig = Maybe ClusterConfig
a} :: UpdateDomainConfig)

-- | Key-value pairs to configure Amazon Cognito authentication for
-- OpenSearch Dashboards.
updateDomainConfig_cognitoOptions :: Lens.Lens' UpdateDomainConfig (Prelude.Maybe CognitoOptions)
updateDomainConfig_cognitoOptions :: Lens' UpdateDomainConfig (Maybe CognitoOptions)
updateDomainConfig_cognitoOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDomainConfig' {Maybe CognitoOptions
cognitoOptions :: Maybe CognitoOptions
$sel:cognitoOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe CognitoOptions
cognitoOptions} -> Maybe CognitoOptions
cognitoOptions) (\s :: UpdateDomainConfig
s@UpdateDomainConfig' {} Maybe CognitoOptions
a -> UpdateDomainConfig
s {$sel:cognitoOptions:UpdateDomainConfig' :: Maybe CognitoOptions
cognitoOptions = Maybe CognitoOptions
a} :: UpdateDomainConfig)

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

-- | This flag, when set to True, specifies whether the @UpdateDomain@
-- request should return the results of validation check without actually
-- applying the change.
updateDomainConfig_dryRun :: Lens.Lens' UpdateDomainConfig (Prelude.Maybe Prelude.Bool)
updateDomainConfig_dryRun :: Lens' UpdateDomainConfig (Maybe Bool)
updateDomainConfig_dryRun = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDomainConfig' {Maybe Bool
dryRun :: Maybe Bool
$sel:dryRun:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe Bool
dryRun} -> Maybe Bool
dryRun) (\s :: UpdateDomainConfig
s@UpdateDomainConfig' {} Maybe Bool
a -> UpdateDomainConfig
s {$sel:dryRun:UpdateDomainConfig' :: Maybe Bool
dryRun = Maybe Bool
a} :: UpdateDomainConfig)

-- | The type and size of the EBS volume to attach to instances in the
-- domain.
updateDomainConfig_eBSOptions :: Lens.Lens' UpdateDomainConfig (Prelude.Maybe EBSOptions)
updateDomainConfig_eBSOptions :: Lens' UpdateDomainConfig (Maybe EBSOptions)
updateDomainConfig_eBSOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDomainConfig' {Maybe EBSOptions
eBSOptions :: Maybe EBSOptions
$sel:eBSOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe EBSOptions
eBSOptions} -> Maybe EBSOptions
eBSOptions) (\s :: UpdateDomainConfig
s@UpdateDomainConfig' {} Maybe EBSOptions
a -> UpdateDomainConfig
s {$sel:eBSOptions:UpdateDomainConfig' :: Maybe EBSOptions
eBSOptions = Maybe EBSOptions
a} :: UpdateDomainConfig)

-- | Encryption at rest options for the domain.
updateDomainConfig_encryptionAtRestOptions :: Lens.Lens' UpdateDomainConfig (Prelude.Maybe EncryptionAtRestOptions)
updateDomainConfig_encryptionAtRestOptions :: Lens' UpdateDomainConfig (Maybe EncryptionAtRestOptions)
updateDomainConfig_encryptionAtRestOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDomainConfig' {Maybe EncryptionAtRestOptions
encryptionAtRestOptions :: Maybe EncryptionAtRestOptions
$sel:encryptionAtRestOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe EncryptionAtRestOptions
encryptionAtRestOptions} -> Maybe EncryptionAtRestOptions
encryptionAtRestOptions) (\s :: UpdateDomainConfig
s@UpdateDomainConfig' {} Maybe EncryptionAtRestOptions
a -> UpdateDomainConfig
s {$sel:encryptionAtRestOptions:UpdateDomainConfig' :: Maybe EncryptionAtRestOptions
encryptionAtRestOptions = Maybe EncryptionAtRestOptions
a} :: UpdateDomainConfig)

-- | Options to publish OpenSearch lots to Amazon CloudWatch Logs.
updateDomainConfig_logPublishingOptions :: Lens.Lens' UpdateDomainConfig (Prelude.Maybe (Prelude.HashMap LogType LogPublishingOption))
updateDomainConfig_logPublishingOptions :: Lens'
  UpdateDomainConfig (Maybe (HashMap LogType LogPublishingOption))
updateDomainConfig_logPublishingOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDomainConfig' {Maybe (HashMap LogType LogPublishingOption)
logPublishingOptions :: Maybe (HashMap LogType LogPublishingOption)
$sel:logPublishingOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe (HashMap LogType LogPublishingOption)
logPublishingOptions} -> Maybe (HashMap LogType LogPublishingOption)
logPublishingOptions) (\s :: UpdateDomainConfig
s@UpdateDomainConfig' {} Maybe (HashMap LogType LogPublishingOption)
a -> UpdateDomainConfig
s {$sel:logPublishingOptions:UpdateDomainConfig' :: Maybe (HashMap LogType LogPublishingOption)
logPublishingOptions = Maybe (HashMap LogType LogPublishingOption)
a} :: UpdateDomainConfig) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Node-To-Node Encryption options for the domain.
updateDomainConfig_nodeToNodeEncryptionOptions :: Lens.Lens' UpdateDomainConfig (Prelude.Maybe NodeToNodeEncryptionOptions)
updateDomainConfig_nodeToNodeEncryptionOptions :: Lens' UpdateDomainConfig (Maybe NodeToNodeEncryptionOptions)
updateDomainConfig_nodeToNodeEncryptionOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDomainConfig' {Maybe NodeToNodeEncryptionOptions
nodeToNodeEncryptionOptions :: Maybe NodeToNodeEncryptionOptions
$sel:nodeToNodeEncryptionOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe NodeToNodeEncryptionOptions
nodeToNodeEncryptionOptions} -> Maybe NodeToNodeEncryptionOptions
nodeToNodeEncryptionOptions) (\s :: UpdateDomainConfig
s@UpdateDomainConfig' {} Maybe NodeToNodeEncryptionOptions
a -> UpdateDomainConfig
s {$sel:nodeToNodeEncryptionOptions:UpdateDomainConfig' :: Maybe NodeToNodeEncryptionOptions
nodeToNodeEncryptionOptions = Maybe NodeToNodeEncryptionOptions
a} :: UpdateDomainConfig)

-- | Option to set the time, in UTC format, for the daily automated snapshot.
-- Default value is @0@ hours.
updateDomainConfig_snapshotOptions :: Lens.Lens' UpdateDomainConfig (Prelude.Maybe SnapshotOptions)
updateDomainConfig_snapshotOptions :: Lens' UpdateDomainConfig (Maybe SnapshotOptions)
updateDomainConfig_snapshotOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDomainConfig' {Maybe SnapshotOptions
snapshotOptions :: Maybe SnapshotOptions
$sel:snapshotOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe SnapshotOptions
snapshotOptions} -> Maybe SnapshotOptions
snapshotOptions) (\s :: UpdateDomainConfig
s@UpdateDomainConfig' {} Maybe SnapshotOptions
a -> UpdateDomainConfig
s {$sel:snapshotOptions:UpdateDomainConfig' :: Maybe SnapshotOptions
snapshotOptions = Maybe SnapshotOptions
a} :: UpdateDomainConfig)

-- | Options to specify the subnets and security groups for a VPC endpoint.
-- For more information, see
-- <https://docs.aws.amazon.com/opensearch-service/latest/developerguide/vpc.html Launching your Amazon OpenSearch Service domains using a VPC>.
updateDomainConfig_vPCOptions :: Lens.Lens' UpdateDomainConfig (Prelude.Maybe VPCOptions)
updateDomainConfig_vPCOptions :: Lens' UpdateDomainConfig (Maybe VPCOptions)
updateDomainConfig_vPCOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDomainConfig' {Maybe VPCOptions
vPCOptions :: Maybe VPCOptions
$sel:vPCOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe VPCOptions
vPCOptions} -> Maybe VPCOptions
vPCOptions) (\s :: UpdateDomainConfig
s@UpdateDomainConfig' {} Maybe VPCOptions
a -> UpdateDomainConfig
s {$sel:vPCOptions:UpdateDomainConfig' :: Maybe VPCOptions
vPCOptions = Maybe VPCOptions
a} :: UpdateDomainConfig)

-- | The name of the domain that you\'re updating.
updateDomainConfig_domainName :: Lens.Lens' UpdateDomainConfig Prelude.Text
updateDomainConfig_domainName :: Lens' UpdateDomainConfig Text
updateDomainConfig_domainName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDomainConfig' {Text
domainName :: Text
$sel:domainName:UpdateDomainConfig' :: UpdateDomainConfig -> Text
domainName} -> Text
domainName) (\s :: UpdateDomainConfig
s@UpdateDomainConfig' {} Text
a -> UpdateDomainConfig
s {$sel:domainName:UpdateDomainConfig' :: Text
domainName = Text
a} :: UpdateDomainConfig)

instance Core.AWSRequest UpdateDomainConfig where
  type
    AWSResponse UpdateDomainConfig =
      UpdateDomainConfigResponse
  request :: (Service -> Service)
-> UpdateDomainConfig -> Request UpdateDomainConfig
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy UpdateDomainConfig
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse UpdateDomainConfig)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe DryRunResults
-> Int -> DomainConfig -> UpdateDomainConfigResponse
UpdateDomainConfigResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"DryRunResults")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"DomainConfig")
      )

instance Prelude.Hashable UpdateDomainConfig where
  hashWithSalt :: Int -> UpdateDomainConfig -> Int
hashWithSalt Int
_salt UpdateDomainConfig' {Maybe Bool
Maybe Text
Maybe (HashMap Text Text)
Maybe (HashMap LogType LogPublishingOption)
Maybe CognitoOptions
Maybe EncryptionAtRestOptions
Maybe NodeToNodeEncryptionOptions
Maybe AdvancedSecurityOptionsInput
Maybe SnapshotOptions
Maybe DomainEndpointOptions
Maybe AutoTuneOptions
Maybe VPCOptions
Maybe EBSOptions
Maybe ClusterConfig
Text
domainName :: Text
vPCOptions :: Maybe VPCOptions
snapshotOptions :: Maybe SnapshotOptions
nodeToNodeEncryptionOptions :: Maybe NodeToNodeEncryptionOptions
logPublishingOptions :: Maybe (HashMap LogType LogPublishingOption)
encryptionAtRestOptions :: Maybe EncryptionAtRestOptions
eBSOptions :: Maybe EBSOptions
dryRun :: Maybe Bool
domainEndpointOptions :: Maybe DomainEndpointOptions
cognitoOptions :: Maybe CognitoOptions
clusterConfig :: Maybe ClusterConfig
autoTuneOptions :: Maybe AutoTuneOptions
advancedSecurityOptions :: Maybe AdvancedSecurityOptionsInput
advancedOptions :: Maybe (HashMap Text Text)
accessPolicies :: Maybe Text
$sel:domainName:UpdateDomainConfig' :: UpdateDomainConfig -> Text
$sel:vPCOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe VPCOptions
$sel:snapshotOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe SnapshotOptions
$sel:nodeToNodeEncryptionOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe NodeToNodeEncryptionOptions
$sel:logPublishingOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe (HashMap LogType LogPublishingOption)
$sel:encryptionAtRestOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe EncryptionAtRestOptions
$sel:eBSOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe EBSOptions
$sel:dryRun:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe Bool
$sel:domainEndpointOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe DomainEndpointOptions
$sel:cognitoOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe CognitoOptions
$sel:clusterConfig:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe ClusterConfig
$sel:autoTuneOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe AutoTuneOptions
$sel:advancedSecurityOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe AdvancedSecurityOptionsInput
$sel:advancedOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe (HashMap Text Text)
$sel:accessPolicies:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
accessPolicies
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text Text)
advancedOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AdvancedSecurityOptionsInput
advancedSecurityOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AutoTuneOptions
autoTuneOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ClusterConfig
clusterConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe CognitoOptions
cognitoOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DomainEndpointOptions
domainEndpointOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
dryRun
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe EBSOptions
eBSOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe EncryptionAtRestOptions
encryptionAtRestOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap LogType LogPublishingOption)
logPublishingOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe NodeToNodeEncryptionOptions
nodeToNodeEncryptionOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SnapshotOptions
snapshotOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe VPCOptions
vPCOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
domainName

instance Prelude.NFData UpdateDomainConfig where
  rnf :: UpdateDomainConfig -> ()
rnf UpdateDomainConfig' {Maybe Bool
Maybe Text
Maybe (HashMap Text Text)
Maybe (HashMap LogType LogPublishingOption)
Maybe CognitoOptions
Maybe EncryptionAtRestOptions
Maybe NodeToNodeEncryptionOptions
Maybe AdvancedSecurityOptionsInput
Maybe SnapshotOptions
Maybe DomainEndpointOptions
Maybe AutoTuneOptions
Maybe VPCOptions
Maybe EBSOptions
Maybe ClusterConfig
Text
domainName :: Text
vPCOptions :: Maybe VPCOptions
snapshotOptions :: Maybe SnapshotOptions
nodeToNodeEncryptionOptions :: Maybe NodeToNodeEncryptionOptions
logPublishingOptions :: Maybe (HashMap LogType LogPublishingOption)
encryptionAtRestOptions :: Maybe EncryptionAtRestOptions
eBSOptions :: Maybe EBSOptions
dryRun :: Maybe Bool
domainEndpointOptions :: Maybe DomainEndpointOptions
cognitoOptions :: Maybe CognitoOptions
clusterConfig :: Maybe ClusterConfig
autoTuneOptions :: Maybe AutoTuneOptions
advancedSecurityOptions :: Maybe AdvancedSecurityOptionsInput
advancedOptions :: Maybe (HashMap Text Text)
accessPolicies :: Maybe Text
$sel:domainName:UpdateDomainConfig' :: UpdateDomainConfig -> Text
$sel:vPCOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe VPCOptions
$sel:snapshotOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe SnapshotOptions
$sel:nodeToNodeEncryptionOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe NodeToNodeEncryptionOptions
$sel:logPublishingOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe (HashMap LogType LogPublishingOption)
$sel:encryptionAtRestOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe EncryptionAtRestOptions
$sel:eBSOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe EBSOptions
$sel:dryRun:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe Bool
$sel:domainEndpointOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe DomainEndpointOptions
$sel:cognitoOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe CognitoOptions
$sel:clusterConfig:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe ClusterConfig
$sel:autoTuneOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe AutoTuneOptions
$sel:advancedSecurityOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe AdvancedSecurityOptionsInput
$sel:advancedOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe (HashMap Text Text)
$sel:accessPolicies:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
accessPolicies
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text Text)
advancedOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AdvancedSecurityOptionsInput
advancedSecurityOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AutoTuneOptions
autoTuneOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ClusterConfig
clusterConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe CognitoOptions
cognitoOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DomainEndpointOptions
domainEndpointOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
dryRun
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe EBSOptions
eBSOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe EncryptionAtRestOptions
encryptionAtRestOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap LogType LogPublishingOption)
logPublishingOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe NodeToNodeEncryptionOptions
nodeToNodeEncryptionOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SnapshotOptions
snapshotOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe VPCOptions
vPCOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
domainName

instance Data.ToHeaders UpdateDomainConfig where
  toHeaders :: UpdateDomainConfig -> ResponseHeaders
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

instance Data.ToJSON UpdateDomainConfig where
  toJSON :: UpdateDomainConfig -> Value
toJSON UpdateDomainConfig' {Maybe Bool
Maybe Text
Maybe (HashMap Text Text)
Maybe (HashMap LogType LogPublishingOption)
Maybe CognitoOptions
Maybe EncryptionAtRestOptions
Maybe NodeToNodeEncryptionOptions
Maybe AdvancedSecurityOptionsInput
Maybe SnapshotOptions
Maybe DomainEndpointOptions
Maybe AutoTuneOptions
Maybe VPCOptions
Maybe EBSOptions
Maybe ClusterConfig
Text
domainName :: Text
vPCOptions :: Maybe VPCOptions
snapshotOptions :: Maybe SnapshotOptions
nodeToNodeEncryptionOptions :: Maybe NodeToNodeEncryptionOptions
logPublishingOptions :: Maybe (HashMap LogType LogPublishingOption)
encryptionAtRestOptions :: Maybe EncryptionAtRestOptions
eBSOptions :: Maybe EBSOptions
dryRun :: Maybe Bool
domainEndpointOptions :: Maybe DomainEndpointOptions
cognitoOptions :: Maybe CognitoOptions
clusterConfig :: Maybe ClusterConfig
autoTuneOptions :: Maybe AutoTuneOptions
advancedSecurityOptions :: Maybe AdvancedSecurityOptionsInput
advancedOptions :: Maybe (HashMap Text Text)
accessPolicies :: Maybe Text
$sel:domainName:UpdateDomainConfig' :: UpdateDomainConfig -> Text
$sel:vPCOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe VPCOptions
$sel:snapshotOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe SnapshotOptions
$sel:nodeToNodeEncryptionOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe NodeToNodeEncryptionOptions
$sel:logPublishingOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe (HashMap LogType LogPublishingOption)
$sel:encryptionAtRestOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe EncryptionAtRestOptions
$sel:eBSOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe EBSOptions
$sel:dryRun:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe Bool
$sel:domainEndpointOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe DomainEndpointOptions
$sel:cognitoOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe CognitoOptions
$sel:clusterConfig:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe ClusterConfig
$sel:autoTuneOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe AutoTuneOptions
$sel:advancedSecurityOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe AdvancedSecurityOptionsInput
$sel:advancedOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe (HashMap Text Text)
$sel:accessPolicies:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"AccessPolicies" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
accessPolicies,
            (Key
"AdvancedOptions" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (HashMap Text Text)
advancedOptions,
            (Key
"AdvancedSecurityOptions" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe AdvancedSecurityOptionsInput
advancedSecurityOptions,
            (Key
"AutoTuneOptions" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe AutoTuneOptions
autoTuneOptions,
            (Key
"ClusterConfig" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ClusterConfig
clusterConfig,
            (Key
"CognitoOptions" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe CognitoOptions
cognitoOptions,
            (Key
"DomainEndpointOptions" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DomainEndpointOptions
domainEndpointOptions,
            (Key
"DryRun" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
dryRun,
            (Key
"EBSOptions" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe EBSOptions
eBSOptions,
            (Key
"EncryptionAtRestOptions" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe EncryptionAtRestOptions
encryptionAtRestOptions,
            (Key
"LogPublishingOptions" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (HashMap LogType LogPublishingOption)
logPublishingOptions,
            (Key
"NodeToNodeEncryptionOptions" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe NodeToNodeEncryptionOptions
nodeToNodeEncryptionOptions,
            (Key
"SnapshotOptions" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe SnapshotOptions
snapshotOptions,
            (Key
"VPCOptions" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe VPCOptions
vPCOptions
          ]
      )

instance Data.ToPath UpdateDomainConfig where
  toPath :: UpdateDomainConfig -> ByteString
toPath UpdateDomainConfig' {Maybe Bool
Maybe Text
Maybe (HashMap Text Text)
Maybe (HashMap LogType LogPublishingOption)
Maybe CognitoOptions
Maybe EncryptionAtRestOptions
Maybe NodeToNodeEncryptionOptions
Maybe AdvancedSecurityOptionsInput
Maybe SnapshotOptions
Maybe DomainEndpointOptions
Maybe AutoTuneOptions
Maybe VPCOptions
Maybe EBSOptions
Maybe ClusterConfig
Text
domainName :: Text
vPCOptions :: Maybe VPCOptions
snapshotOptions :: Maybe SnapshotOptions
nodeToNodeEncryptionOptions :: Maybe NodeToNodeEncryptionOptions
logPublishingOptions :: Maybe (HashMap LogType LogPublishingOption)
encryptionAtRestOptions :: Maybe EncryptionAtRestOptions
eBSOptions :: Maybe EBSOptions
dryRun :: Maybe Bool
domainEndpointOptions :: Maybe DomainEndpointOptions
cognitoOptions :: Maybe CognitoOptions
clusterConfig :: Maybe ClusterConfig
autoTuneOptions :: Maybe AutoTuneOptions
advancedSecurityOptions :: Maybe AdvancedSecurityOptionsInput
advancedOptions :: Maybe (HashMap Text Text)
accessPolicies :: Maybe Text
$sel:domainName:UpdateDomainConfig' :: UpdateDomainConfig -> Text
$sel:vPCOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe VPCOptions
$sel:snapshotOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe SnapshotOptions
$sel:nodeToNodeEncryptionOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe NodeToNodeEncryptionOptions
$sel:logPublishingOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe (HashMap LogType LogPublishingOption)
$sel:encryptionAtRestOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe EncryptionAtRestOptions
$sel:eBSOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe EBSOptions
$sel:dryRun:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe Bool
$sel:domainEndpointOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe DomainEndpointOptions
$sel:cognitoOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe CognitoOptions
$sel:clusterConfig:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe ClusterConfig
$sel:autoTuneOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe AutoTuneOptions
$sel:advancedSecurityOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe AdvancedSecurityOptionsInput
$sel:advancedOptions:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe (HashMap Text Text)
$sel:accessPolicies:UpdateDomainConfig' :: UpdateDomainConfig -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/2021-01-01/opensearch/domain/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
domainName,
        ByteString
"/config"
      ]

instance Data.ToQuery UpdateDomainConfig where
  toQuery :: UpdateDomainConfig -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | The results of an @UpdateDomain@ request. Contains the status of the
-- domain being updated.
--
-- /See:/ 'newUpdateDomainConfigResponse' smart constructor.
data UpdateDomainConfigResponse = UpdateDomainConfigResponse'
  { -- | Results of a dry run performed in an update domain request.
    UpdateDomainConfigResponse -> Maybe DryRunResults
dryRunResults :: Prelude.Maybe DryRunResults,
    -- | The response's http status code.
    UpdateDomainConfigResponse -> Int
httpStatus :: Prelude.Int,
    -- | The status of the updated domain.
    UpdateDomainConfigResponse -> DomainConfig
domainConfig :: DomainConfig
  }
  deriving (UpdateDomainConfigResponse -> UpdateDomainConfigResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateDomainConfigResponse -> UpdateDomainConfigResponse -> Bool
$c/= :: UpdateDomainConfigResponse -> UpdateDomainConfigResponse -> Bool
== :: UpdateDomainConfigResponse -> UpdateDomainConfigResponse -> Bool
$c== :: UpdateDomainConfigResponse -> UpdateDomainConfigResponse -> Bool
Prelude.Eq, ReadPrec [UpdateDomainConfigResponse]
ReadPrec UpdateDomainConfigResponse
Int -> ReadS UpdateDomainConfigResponse
ReadS [UpdateDomainConfigResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateDomainConfigResponse]
$creadListPrec :: ReadPrec [UpdateDomainConfigResponse]
readPrec :: ReadPrec UpdateDomainConfigResponse
$creadPrec :: ReadPrec UpdateDomainConfigResponse
readList :: ReadS [UpdateDomainConfigResponse]
$creadList :: ReadS [UpdateDomainConfigResponse]
readsPrec :: Int -> ReadS UpdateDomainConfigResponse
$creadsPrec :: Int -> ReadS UpdateDomainConfigResponse
Prelude.Read, Int -> UpdateDomainConfigResponse -> ShowS
[UpdateDomainConfigResponse] -> ShowS
UpdateDomainConfigResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateDomainConfigResponse] -> ShowS
$cshowList :: [UpdateDomainConfigResponse] -> ShowS
show :: UpdateDomainConfigResponse -> String
$cshow :: UpdateDomainConfigResponse -> String
showsPrec :: Int -> UpdateDomainConfigResponse -> ShowS
$cshowsPrec :: Int -> UpdateDomainConfigResponse -> ShowS
Prelude.Show, forall x.
Rep UpdateDomainConfigResponse x -> UpdateDomainConfigResponse
forall x.
UpdateDomainConfigResponse -> Rep UpdateDomainConfigResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep UpdateDomainConfigResponse x -> UpdateDomainConfigResponse
$cfrom :: forall x.
UpdateDomainConfigResponse -> Rep UpdateDomainConfigResponse x
Prelude.Generic)

-- |
-- Create a value of 'UpdateDomainConfigResponse' 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:
--
-- 'dryRunResults', 'updateDomainConfigResponse_dryRunResults' - Results of a dry run performed in an update domain request.
--
-- 'httpStatus', 'updateDomainConfigResponse_httpStatus' - The response's http status code.
--
-- 'domainConfig', 'updateDomainConfigResponse_domainConfig' - The status of the updated domain.
newUpdateDomainConfigResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'domainConfig'
  DomainConfig ->
  UpdateDomainConfigResponse
newUpdateDomainConfigResponse :: Int -> DomainConfig -> UpdateDomainConfigResponse
newUpdateDomainConfigResponse
  Int
pHttpStatus_
  DomainConfig
pDomainConfig_ =
    UpdateDomainConfigResponse'
      { $sel:dryRunResults:UpdateDomainConfigResponse' :: Maybe DryRunResults
dryRunResults =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:UpdateDomainConfigResponse' :: Int
httpStatus = Int
pHttpStatus_,
        $sel:domainConfig:UpdateDomainConfigResponse' :: DomainConfig
domainConfig = DomainConfig
pDomainConfig_
      }

-- | Results of a dry run performed in an update domain request.
updateDomainConfigResponse_dryRunResults :: Lens.Lens' UpdateDomainConfigResponse (Prelude.Maybe DryRunResults)
updateDomainConfigResponse_dryRunResults :: Lens' UpdateDomainConfigResponse (Maybe DryRunResults)
updateDomainConfigResponse_dryRunResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDomainConfigResponse' {Maybe DryRunResults
dryRunResults :: Maybe DryRunResults
$sel:dryRunResults:UpdateDomainConfigResponse' :: UpdateDomainConfigResponse -> Maybe DryRunResults
dryRunResults} -> Maybe DryRunResults
dryRunResults) (\s :: UpdateDomainConfigResponse
s@UpdateDomainConfigResponse' {} Maybe DryRunResults
a -> UpdateDomainConfigResponse
s {$sel:dryRunResults:UpdateDomainConfigResponse' :: Maybe DryRunResults
dryRunResults = Maybe DryRunResults
a} :: UpdateDomainConfigResponse)

-- | The response's http status code.
updateDomainConfigResponse_httpStatus :: Lens.Lens' UpdateDomainConfigResponse Prelude.Int
updateDomainConfigResponse_httpStatus :: Lens' UpdateDomainConfigResponse Int
updateDomainConfigResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDomainConfigResponse' {Int
httpStatus :: Int
$sel:httpStatus:UpdateDomainConfigResponse' :: UpdateDomainConfigResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: UpdateDomainConfigResponse
s@UpdateDomainConfigResponse' {} Int
a -> UpdateDomainConfigResponse
s {$sel:httpStatus:UpdateDomainConfigResponse' :: Int
httpStatus = Int
a} :: UpdateDomainConfigResponse)

-- | The status of the updated domain.
updateDomainConfigResponse_domainConfig :: Lens.Lens' UpdateDomainConfigResponse DomainConfig
updateDomainConfigResponse_domainConfig :: Lens' UpdateDomainConfigResponse DomainConfig
updateDomainConfigResponse_domainConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDomainConfigResponse' {DomainConfig
domainConfig :: DomainConfig
$sel:domainConfig:UpdateDomainConfigResponse' :: UpdateDomainConfigResponse -> DomainConfig
domainConfig} -> DomainConfig
domainConfig) (\s :: UpdateDomainConfigResponse
s@UpdateDomainConfigResponse' {} DomainConfig
a -> UpdateDomainConfigResponse
s {$sel:domainConfig:UpdateDomainConfigResponse' :: DomainConfig
domainConfig = DomainConfig
a} :: UpdateDomainConfigResponse)

instance Prelude.NFData UpdateDomainConfigResponse where
  rnf :: UpdateDomainConfigResponse -> ()
rnf UpdateDomainConfigResponse' {Int
Maybe DryRunResults
DomainConfig
domainConfig :: DomainConfig
httpStatus :: Int
dryRunResults :: Maybe DryRunResults
$sel:domainConfig:UpdateDomainConfigResponse' :: UpdateDomainConfigResponse -> DomainConfig
$sel:httpStatus:UpdateDomainConfigResponse' :: UpdateDomainConfigResponse -> Int
$sel:dryRunResults:UpdateDomainConfigResponse' :: UpdateDomainConfigResponse -> Maybe DryRunResults
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe DryRunResults
dryRunResults
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf DomainConfig
domainConfig