{-# 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.RDS.ModifyOptionGroup
-- 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 an existing option group.
module Amazonka.RDS.ModifyOptionGroup
  ( -- * Creating a Request
    ModifyOptionGroup (..),
    newModifyOptionGroup,

    -- * Request Lenses
    modifyOptionGroup_applyImmediately,
    modifyOptionGroup_optionsToInclude,
    modifyOptionGroup_optionsToRemove,
    modifyOptionGroup_optionGroupName,

    -- * Destructuring the Response
    ModifyOptionGroupResponse (..),
    newModifyOptionGroupResponse,

    -- * Response Lenses
    modifyOptionGroupResponse_optionGroup,
    modifyOptionGroupResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import Amazonka.RDS.Types
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- |
--
-- /See:/ 'newModifyOptionGroup' smart constructor.
data ModifyOptionGroup = ModifyOptionGroup'
  { -- | A value that indicates whether to apply the change immediately or during
    -- the next maintenance window for each instance associated with the option
    -- group.
    ModifyOptionGroup -> Maybe Bool
applyImmediately :: Prelude.Maybe Prelude.Bool,
    -- | Options in this list are added to the option group or, if already
    -- present, the specified configuration is used to update the existing
    -- configuration.
    ModifyOptionGroup -> Maybe [OptionConfiguration]
optionsToInclude :: Prelude.Maybe [OptionConfiguration],
    -- | Options in this list are removed from the option group.
    ModifyOptionGroup -> Maybe [Text]
optionsToRemove :: Prelude.Maybe [Prelude.Text],
    -- | The name of the option group to be modified.
    --
    -- Permanent options, such as the TDE option for Oracle Advanced Security
    -- TDE, can\'t be removed from an option group, and that option group
    -- can\'t be removed from a DB instance once it is associated with a DB
    -- instance
    ModifyOptionGroup -> Text
optionGroupName :: Prelude.Text
  }
  deriving (ModifyOptionGroup -> ModifyOptionGroup -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ModifyOptionGroup -> ModifyOptionGroup -> Bool
$c/= :: ModifyOptionGroup -> ModifyOptionGroup -> Bool
== :: ModifyOptionGroup -> ModifyOptionGroup -> Bool
$c== :: ModifyOptionGroup -> ModifyOptionGroup -> Bool
Prelude.Eq, ReadPrec [ModifyOptionGroup]
ReadPrec ModifyOptionGroup
Int -> ReadS ModifyOptionGroup
ReadS [ModifyOptionGroup]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ModifyOptionGroup]
$creadListPrec :: ReadPrec [ModifyOptionGroup]
readPrec :: ReadPrec ModifyOptionGroup
$creadPrec :: ReadPrec ModifyOptionGroup
readList :: ReadS [ModifyOptionGroup]
$creadList :: ReadS [ModifyOptionGroup]
readsPrec :: Int -> ReadS ModifyOptionGroup
$creadsPrec :: Int -> ReadS ModifyOptionGroup
Prelude.Read, Int -> ModifyOptionGroup -> ShowS
[ModifyOptionGroup] -> ShowS
ModifyOptionGroup -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ModifyOptionGroup] -> ShowS
$cshowList :: [ModifyOptionGroup] -> ShowS
show :: ModifyOptionGroup -> String
$cshow :: ModifyOptionGroup -> String
showsPrec :: Int -> ModifyOptionGroup -> ShowS
$cshowsPrec :: Int -> ModifyOptionGroup -> ShowS
Prelude.Show, forall x. Rep ModifyOptionGroup x -> ModifyOptionGroup
forall x. ModifyOptionGroup -> Rep ModifyOptionGroup x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ModifyOptionGroup x -> ModifyOptionGroup
$cfrom :: forall x. ModifyOptionGroup -> Rep ModifyOptionGroup x
Prelude.Generic)

-- |
-- Create a value of 'ModifyOptionGroup' 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:
--
-- 'applyImmediately', 'modifyOptionGroup_applyImmediately' - A value that indicates whether to apply the change immediately or during
-- the next maintenance window for each instance associated with the option
-- group.
--
-- 'optionsToInclude', 'modifyOptionGroup_optionsToInclude' - Options in this list are added to the option group or, if already
-- present, the specified configuration is used to update the existing
-- configuration.
--
-- 'optionsToRemove', 'modifyOptionGroup_optionsToRemove' - Options in this list are removed from the option group.
--
-- 'optionGroupName', 'modifyOptionGroup_optionGroupName' - The name of the option group to be modified.
--
-- Permanent options, such as the TDE option for Oracle Advanced Security
-- TDE, can\'t be removed from an option group, and that option group
-- can\'t be removed from a DB instance once it is associated with a DB
-- instance
newModifyOptionGroup ::
  -- | 'optionGroupName'
  Prelude.Text ->
  ModifyOptionGroup
newModifyOptionGroup :: Text -> ModifyOptionGroup
newModifyOptionGroup Text
pOptionGroupName_ =
  ModifyOptionGroup'
    { $sel:applyImmediately:ModifyOptionGroup' :: Maybe Bool
applyImmediately =
        forall a. Maybe a
Prelude.Nothing,
      $sel:optionsToInclude:ModifyOptionGroup' :: Maybe [OptionConfiguration]
optionsToInclude = forall a. Maybe a
Prelude.Nothing,
      $sel:optionsToRemove:ModifyOptionGroup' :: Maybe [Text]
optionsToRemove = forall a. Maybe a
Prelude.Nothing,
      $sel:optionGroupName:ModifyOptionGroup' :: Text
optionGroupName = Text
pOptionGroupName_
    }

-- | A value that indicates whether to apply the change immediately or during
-- the next maintenance window for each instance associated with the option
-- group.
modifyOptionGroup_applyImmediately :: Lens.Lens' ModifyOptionGroup (Prelude.Maybe Prelude.Bool)
modifyOptionGroup_applyImmediately :: Lens' ModifyOptionGroup (Maybe Bool)
modifyOptionGroup_applyImmediately = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyOptionGroup' {Maybe Bool
applyImmediately :: Maybe Bool
$sel:applyImmediately:ModifyOptionGroup' :: ModifyOptionGroup -> Maybe Bool
applyImmediately} -> Maybe Bool
applyImmediately) (\s :: ModifyOptionGroup
s@ModifyOptionGroup' {} Maybe Bool
a -> ModifyOptionGroup
s {$sel:applyImmediately:ModifyOptionGroup' :: Maybe Bool
applyImmediately = Maybe Bool
a} :: ModifyOptionGroup)

-- | Options in this list are added to the option group or, if already
-- present, the specified configuration is used to update the existing
-- configuration.
modifyOptionGroup_optionsToInclude :: Lens.Lens' ModifyOptionGroup (Prelude.Maybe [OptionConfiguration])
modifyOptionGroup_optionsToInclude :: Lens' ModifyOptionGroup (Maybe [OptionConfiguration])
modifyOptionGroup_optionsToInclude = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyOptionGroup' {Maybe [OptionConfiguration]
optionsToInclude :: Maybe [OptionConfiguration]
$sel:optionsToInclude:ModifyOptionGroup' :: ModifyOptionGroup -> Maybe [OptionConfiguration]
optionsToInclude} -> Maybe [OptionConfiguration]
optionsToInclude) (\s :: ModifyOptionGroup
s@ModifyOptionGroup' {} Maybe [OptionConfiguration]
a -> ModifyOptionGroup
s {$sel:optionsToInclude:ModifyOptionGroup' :: Maybe [OptionConfiguration]
optionsToInclude = Maybe [OptionConfiguration]
a} :: ModifyOptionGroup) 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 in this list are removed from the option group.
modifyOptionGroup_optionsToRemove :: Lens.Lens' ModifyOptionGroup (Prelude.Maybe [Prelude.Text])
modifyOptionGroup_optionsToRemove :: Lens' ModifyOptionGroup (Maybe [Text])
modifyOptionGroup_optionsToRemove = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyOptionGroup' {Maybe [Text]
optionsToRemove :: Maybe [Text]
$sel:optionsToRemove:ModifyOptionGroup' :: ModifyOptionGroup -> Maybe [Text]
optionsToRemove} -> Maybe [Text]
optionsToRemove) (\s :: ModifyOptionGroup
s@ModifyOptionGroup' {} Maybe [Text]
a -> ModifyOptionGroup
s {$sel:optionsToRemove:ModifyOptionGroup' :: Maybe [Text]
optionsToRemove = Maybe [Text]
a} :: ModifyOptionGroup) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The name of the option group to be modified.
--
-- Permanent options, such as the TDE option for Oracle Advanced Security
-- TDE, can\'t be removed from an option group, and that option group
-- can\'t be removed from a DB instance once it is associated with a DB
-- instance
modifyOptionGroup_optionGroupName :: Lens.Lens' ModifyOptionGroup Prelude.Text
modifyOptionGroup_optionGroupName :: Lens' ModifyOptionGroup Text
modifyOptionGroup_optionGroupName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyOptionGroup' {Text
optionGroupName :: Text
$sel:optionGroupName:ModifyOptionGroup' :: ModifyOptionGroup -> Text
optionGroupName} -> Text
optionGroupName) (\s :: ModifyOptionGroup
s@ModifyOptionGroup' {} Text
a -> ModifyOptionGroup
s {$sel:optionGroupName:ModifyOptionGroup' :: Text
optionGroupName = Text
a} :: ModifyOptionGroup)

instance Core.AWSRequest ModifyOptionGroup where
  type
    AWSResponse ModifyOptionGroup =
      ModifyOptionGroupResponse
  request :: (Service -> Service)
-> ModifyOptionGroup -> Request ModifyOptionGroup
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.postQuery (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy ModifyOptionGroup
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse ModifyOptionGroup)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
Text
-> (Int
    -> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXMLWrapper
      Text
"ModifyOptionGroupResult"
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe OptionGroup -> Int -> ModifyOptionGroupResponse
ModifyOptionGroupResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"OptionGroup")
            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))
      )

instance Prelude.Hashable ModifyOptionGroup where
  hashWithSalt :: Int -> ModifyOptionGroup -> Int
hashWithSalt Int
_salt ModifyOptionGroup' {Maybe Bool
Maybe [Text]
Maybe [OptionConfiguration]
Text
optionGroupName :: Text
optionsToRemove :: Maybe [Text]
optionsToInclude :: Maybe [OptionConfiguration]
applyImmediately :: Maybe Bool
$sel:optionGroupName:ModifyOptionGroup' :: ModifyOptionGroup -> Text
$sel:optionsToRemove:ModifyOptionGroup' :: ModifyOptionGroup -> Maybe [Text]
$sel:optionsToInclude:ModifyOptionGroup' :: ModifyOptionGroup -> Maybe [OptionConfiguration]
$sel:applyImmediately:ModifyOptionGroup' :: ModifyOptionGroup -> Maybe Bool
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
applyImmediately
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [OptionConfiguration]
optionsToInclude
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
optionsToRemove
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
optionGroupName

instance Prelude.NFData ModifyOptionGroup where
  rnf :: ModifyOptionGroup -> ()
rnf ModifyOptionGroup' {Maybe Bool
Maybe [Text]
Maybe [OptionConfiguration]
Text
optionGroupName :: Text
optionsToRemove :: Maybe [Text]
optionsToInclude :: Maybe [OptionConfiguration]
applyImmediately :: Maybe Bool
$sel:optionGroupName:ModifyOptionGroup' :: ModifyOptionGroup -> Text
$sel:optionsToRemove:ModifyOptionGroup' :: ModifyOptionGroup -> Maybe [Text]
$sel:optionsToInclude:ModifyOptionGroup' :: ModifyOptionGroup -> Maybe [OptionConfiguration]
$sel:applyImmediately:ModifyOptionGroup' :: ModifyOptionGroup -> Maybe Bool
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
applyImmediately
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [OptionConfiguration]
optionsToInclude
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
optionsToRemove
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
optionGroupName

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

instance Data.ToPath ModifyOptionGroup where
  toPath :: ModifyOptionGroup -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

instance Data.ToQuery ModifyOptionGroup where
  toQuery :: ModifyOptionGroup -> QueryString
toQuery ModifyOptionGroup' {Maybe Bool
Maybe [Text]
Maybe [OptionConfiguration]
Text
optionGroupName :: Text
optionsToRemove :: Maybe [Text]
optionsToInclude :: Maybe [OptionConfiguration]
applyImmediately :: Maybe Bool
$sel:optionGroupName:ModifyOptionGroup' :: ModifyOptionGroup -> Text
$sel:optionsToRemove:ModifyOptionGroup' :: ModifyOptionGroup -> Maybe [Text]
$sel:optionsToInclude:ModifyOptionGroup' :: ModifyOptionGroup -> Maybe [OptionConfiguration]
$sel:applyImmediately:ModifyOptionGroup' :: ModifyOptionGroup -> Maybe Bool
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"ModifyOptionGroup" :: Prelude.ByteString),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2014-10-31" :: Prelude.ByteString),
        ByteString
"ApplyImmediately" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
applyImmediately,
        ByteString
"OptionsToInclude"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: forall a. ToQuery a => a -> QueryString
Data.toQuery
            ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"OptionConfiguration"
                forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [OptionConfiguration]
optionsToInclude
            ),
        ByteString
"OptionsToRemove"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: forall a. ToQuery a => a -> QueryString
Data.toQuery
            ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"member"
                forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
optionsToRemove
            ),
        ByteString
"OptionGroupName" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
optionGroupName
      ]

-- | /See:/ 'newModifyOptionGroupResponse' smart constructor.
data ModifyOptionGroupResponse = ModifyOptionGroupResponse'
  { ModifyOptionGroupResponse -> Maybe OptionGroup
optionGroup :: Prelude.Maybe OptionGroup,
    -- | The response's http status code.
    ModifyOptionGroupResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (ModifyOptionGroupResponse -> ModifyOptionGroupResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ModifyOptionGroupResponse -> ModifyOptionGroupResponse -> Bool
$c/= :: ModifyOptionGroupResponse -> ModifyOptionGroupResponse -> Bool
== :: ModifyOptionGroupResponse -> ModifyOptionGroupResponse -> Bool
$c== :: ModifyOptionGroupResponse -> ModifyOptionGroupResponse -> Bool
Prelude.Eq, ReadPrec [ModifyOptionGroupResponse]
ReadPrec ModifyOptionGroupResponse
Int -> ReadS ModifyOptionGroupResponse
ReadS [ModifyOptionGroupResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ModifyOptionGroupResponse]
$creadListPrec :: ReadPrec [ModifyOptionGroupResponse]
readPrec :: ReadPrec ModifyOptionGroupResponse
$creadPrec :: ReadPrec ModifyOptionGroupResponse
readList :: ReadS [ModifyOptionGroupResponse]
$creadList :: ReadS [ModifyOptionGroupResponse]
readsPrec :: Int -> ReadS ModifyOptionGroupResponse
$creadsPrec :: Int -> ReadS ModifyOptionGroupResponse
Prelude.Read, Int -> ModifyOptionGroupResponse -> ShowS
[ModifyOptionGroupResponse] -> ShowS
ModifyOptionGroupResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ModifyOptionGroupResponse] -> ShowS
$cshowList :: [ModifyOptionGroupResponse] -> ShowS
show :: ModifyOptionGroupResponse -> String
$cshow :: ModifyOptionGroupResponse -> String
showsPrec :: Int -> ModifyOptionGroupResponse -> ShowS
$cshowsPrec :: Int -> ModifyOptionGroupResponse -> ShowS
Prelude.Show, forall x.
Rep ModifyOptionGroupResponse x -> ModifyOptionGroupResponse
forall x.
ModifyOptionGroupResponse -> Rep ModifyOptionGroupResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ModifyOptionGroupResponse x -> ModifyOptionGroupResponse
$cfrom :: forall x.
ModifyOptionGroupResponse -> Rep ModifyOptionGroupResponse x
Prelude.Generic)

-- |
-- Create a value of 'ModifyOptionGroupResponse' 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:
--
-- 'optionGroup', 'modifyOptionGroupResponse_optionGroup' - Undocumented member.
--
-- 'httpStatus', 'modifyOptionGroupResponse_httpStatus' - The response's http status code.
newModifyOptionGroupResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ModifyOptionGroupResponse
newModifyOptionGroupResponse :: Int -> ModifyOptionGroupResponse
newModifyOptionGroupResponse Int
pHttpStatus_ =
  ModifyOptionGroupResponse'
    { $sel:optionGroup:ModifyOptionGroupResponse' :: Maybe OptionGroup
optionGroup =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:ModifyOptionGroupResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Undocumented member.
modifyOptionGroupResponse_optionGroup :: Lens.Lens' ModifyOptionGroupResponse (Prelude.Maybe OptionGroup)
modifyOptionGroupResponse_optionGroup :: Lens' ModifyOptionGroupResponse (Maybe OptionGroup)
modifyOptionGroupResponse_optionGroup = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyOptionGroupResponse' {Maybe OptionGroup
optionGroup :: Maybe OptionGroup
$sel:optionGroup:ModifyOptionGroupResponse' :: ModifyOptionGroupResponse -> Maybe OptionGroup
optionGroup} -> Maybe OptionGroup
optionGroup) (\s :: ModifyOptionGroupResponse
s@ModifyOptionGroupResponse' {} Maybe OptionGroup
a -> ModifyOptionGroupResponse
s {$sel:optionGroup:ModifyOptionGroupResponse' :: Maybe OptionGroup
optionGroup = Maybe OptionGroup
a} :: ModifyOptionGroupResponse)

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

instance Prelude.NFData ModifyOptionGroupResponse where
  rnf :: ModifyOptionGroupResponse -> ()
rnf ModifyOptionGroupResponse' {Int
Maybe OptionGroup
httpStatus :: Int
optionGroup :: Maybe OptionGroup
$sel:httpStatus:ModifyOptionGroupResponse' :: ModifyOptionGroupResponse -> Int
$sel:optionGroup:ModifyOptionGroupResponse' :: ModifyOptionGroupResponse -> Maybe OptionGroup
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe OptionGroup
optionGroup
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus