{-# 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.Redshift.GetReservedNodeExchangeConfigurationOptions
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Gets the configuration options for the reserved-node exchange. These
-- options include information about the source reserved node and target
-- reserved node offering. Details include the node type, the price, the
-- node count, and the offering type.
--
-- This operation returns paginated results.
module Amazonka.Redshift.GetReservedNodeExchangeConfigurationOptions
  ( -- * Creating a Request
    GetReservedNodeExchangeConfigurationOptions (..),
    newGetReservedNodeExchangeConfigurationOptions,

    -- * Request Lenses
    getReservedNodeExchangeConfigurationOptions_clusterIdentifier,
    getReservedNodeExchangeConfigurationOptions_marker,
    getReservedNodeExchangeConfigurationOptions_maxRecords,
    getReservedNodeExchangeConfigurationOptions_snapshotIdentifier,
    getReservedNodeExchangeConfigurationOptions_actionType,

    -- * Destructuring the Response
    GetReservedNodeExchangeConfigurationOptionsResponse (..),
    newGetReservedNodeExchangeConfigurationOptionsResponse,

    -- * Response Lenses
    getReservedNodeExchangeConfigurationOptionsResponse_marker,
    getReservedNodeExchangeConfigurationOptionsResponse_reservedNodeConfigurationOptionList,
    getReservedNodeExchangeConfigurationOptionsResponse_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.Redshift.Types
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newGetReservedNodeExchangeConfigurationOptions' smart constructor.
data GetReservedNodeExchangeConfigurationOptions = GetReservedNodeExchangeConfigurationOptions'
  { -- | The identifier for the cluster that is the source for a reserved-node
    -- exchange.
    GetReservedNodeExchangeConfigurationOptions -> Maybe Text
clusterIdentifier :: Prelude.Maybe Prelude.Text,
    -- | An optional pagination token provided by a previous
    -- @GetReservedNodeExchangeConfigurationOptions@ request. If this parameter
    -- is specified, the response includes only records beyond the marker, up
    -- to the value specified by the @MaxRecords@ parameter. You can retrieve
    -- the next set of response records by providing the returned marker value
    -- in the @Marker@ parameter and retrying the request.
    GetReservedNodeExchangeConfigurationOptions -> Maybe Text
marker :: Prelude.Maybe Prelude.Text,
    -- | The maximum number of response records to return in each call. If the
    -- number of remaining response records exceeds the specified @MaxRecords@
    -- value, a value is returned in a @Marker@ field of the response. You can
    -- retrieve the next set of records by retrying the command with the
    -- returned marker value.
    GetReservedNodeExchangeConfigurationOptions -> Maybe Int
maxRecords :: Prelude.Maybe Prelude.Int,
    -- | The identifier for the snapshot that is the source for the reserved-node
    -- exchange.
    GetReservedNodeExchangeConfigurationOptions -> Maybe Text
snapshotIdentifier :: Prelude.Maybe Prelude.Text,
    -- | The action type of the reserved-node configuration. The action type can
    -- be an exchange initiated from either a snapshot or a resize.
    GetReservedNodeExchangeConfigurationOptions
-> ReservedNodeExchangeActionType
actionType :: ReservedNodeExchangeActionType
  }
  deriving (GetReservedNodeExchangeConfigurationOptions
-> GetReservedNodeExchangeConfigurationOptions -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetReservedNodeExchangeConfigurationOptions
-> GetReservedNodeExchangeConfigurationOptions -> Bool
$c/= :: GetReservedNodeExchangeConfigurationOptions
-> GetReservedNodeExchangeConfigurationOptions -> Bool
== :: GetReservedNodeExchangeConfigurationOptions
-> GetReservedNodeExchangeConfigurationOptions -> Bool
$c== :: GetReservedNodeExchangeConfigurationOptions
-> GetReservedNodeExchangeConfigurationOptions -> Bool
Prelude.Eq, ReadPrec [GetReservedNodeExchangeConfigurationOptions]
ReadPrec GetReservedNodeExchangeConfigurationOptions
Int -> ReadS GetReservedNodeExchangeConfigurationOptions
ReadS [GetReservedNodeExchangeConfigurationOptions]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetReservedNodeExchangeConfigurationOptions]
$creadListPrec :: ReadPrec [GetReservedNodeExchangeConfigurationOptions]
readPrec :: ReadPrec GetReservedNodeExchangeConfigurationOptions
$creadPrec :: ReadPrec GetReservedNodeExchangeConfigurationOptions
readList :: ReadS [GetReservedNodeExchangeConfigurationOptions]
$creadList :: ReadS [GetReservedNodeExchangeConfigurationOptions]
readsPrec :: Int -> ReadS GetReservedNodeExchangeConfigurationOptions
$creadsPrec :: Int -> ReadS GetReservedNodeExchangeConfigurationOptions
Prelude.Read, Int -> GetReservedNodeExchangeConfigurationOptions -> ShowS
[GetReservedNodeExchangeConfigurationOptions] -> ShowS
GetReservedNodeExchangeConfigurationOptions -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetReservedNodeExchangeConfigurationOptions] -> ShowS
$cshowList :: [GetReservedNodeExchangeConfigurationOptions] -> ShowS
show :: GetReservedNodeExchangeConfigurationOptions -> String
$cshow :: GetReservedNodeExchangeConfigurationOptions -> String
showsPrec :: Int -> GetReservedNodeExchangeConfigurationOptions -> ShowS
$cshowsPrec :: Int -> GetReservedNodeExchangeConfigurationOptions -> ShowS
Prelude.Show, forall x.
Rep GetReservedNodeExchangeConfigurationOptions x
-> GetReservedNodeExchangeConfigurationOptions
forall x.
GetReservedNodeExchangeConfigurationOptions
-> Rep GetReservedNodeExchangeConfigurationOptions x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetReservedNodeExchangeConfigurationOptions x
-> GetReservedNodeExchangeConfigurationOptions
$cfrom :: forall x.
GetReservedNodeExchangeConfigurationOptions
-> Rep GetReservedNodeExchangeConfigurationOptions x
Prelude.Generic)

-- |
-- Create a value of 'GetReservedNodeExchangeConfigurationOptions' 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:
--
-- 'clusterIdentifier', 'getReservedNodeExchangeConfigurationOptions_clusterIdentifier' - The identifier for the cluster that is the source for a reserved-node
-- exchange.
--
-- 'marker', 'getReservedNodeExchangeConfigurationOptions_marker' - An optional pagination token provided by a previous
-- @GetReservedNodeExchangeConfigurationOptions@ request. If this parameter
-- is specified, the response includes only records beyond the marker, up
-- to the value specified by the @MaxRecords@ parameter. You can retrieve
-- the next set of response records by providing the returned marker value
-- in the @Marker@ parameter and retrying the request.
--
-- 'maxRecords', 'getReservedNodeExchangeConfigurationOptions_maxRecords' - The maximum number of response records to return in each call. If the
-- number of remaining response records exceeds the specified @MaxRecords@
-- value, a value is returned in a @Marker@ field of the response. You can
-- retrieve the next set of records by retrying the command with the
-- returned marker value.
--
-- 'snapshotIdentifier', 'getReservedNodeExchangeConfigurationOptions_snapshotIdentifier' - The identifier for the snapshot that is the source for the reserved-node
-- exchange.
--
-- 'actionType', 'getReservedNodeExchangeConfigurationOptions_actionType' - The action type of the reserved-node configuration. The action type can
-- be an exchange initiated from either a snapshot or a resize.
newGetReservedNodeExchangeConfigurationOptions ::
  -- | 'actionType'
  ReservedNodeExchangeActionType ->
  GetReservedNodeExchangeConfigurationOptions
newGetReservedNodeExchangeConfigurationOptions :: ReservedNodeExchangeActionType
-> GetReservedNodeExchangeConfigurationOptions
newGetReservedNodeExchangeConfigurationOptions
  ReservedNodeExchangeActionType
pActionType_ =
    GetReservedNodeExchangeConfigurationOptions'
      { $sel:clusterIdentifier:GetReservedNodeExchangeConfigurationOptions' :: Maybe Text
clusterIdentifier =
          forall a. Maybe a
Prelude.Nothing,
        $sel:marker:GetReservedNodeExchangeConfigurationOptions' :: Maybe Text
marker = forall a. Maybe a
Prelude.Nothing,
        $sel:maxRecords:GetReservedNodeExchangeConfigurationOptions' :: Maybe Int
maxRecords = forall a. Maybe a
Prelude.Nothing,
        $sel:snapshotIdentifier:GetReservedNodeExchangeConfigurationOptions' :: Maybe Text
snapshotIdentifier =
          forall a. Maybe a
Prelude.Nothing,
        $sel:actionType:GetReservedNodeExchangeConfigurationOptions' :: ReservedNodeExchangeActionType
actionType = ReservedNodeExchangeActionType
pActionType_
      }

-- | The identifier for the cluster that is the source for a reserved-node
-- exchange.
getReservedNodeExchangeConfigurationOptions_clusterIdentifier :: Lens.Lens' GetReservedNodeExchangeConfigurationOptions (Prelude.Maybe Prelude.Text)
getReservedNodeExchangeConfigurationOptions_clusterIdentifier :: Lens' GetReservedNodeExchangeConfigurationOptions (Maybe Text)
getReservedNodeExchangeConfigurationOptions_clusterIdentifier = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetReservedNodeExchangeConfigurationOptions' {Maybe Text
clusterIdentifier :: Maybe Text
$sel:clusterIdentifier:GetReservedNodeExchangeConfigurationOptions' :: GetReservedNodeExchangeConfigurationOptions -> Maybe Text
clusterIdentifier} -> Maybe Text
clusterIdentifier) (\s :: GetReservedNodeExchangeConfigurationOptions
s@GetReservedNodeExchangeConfigurationOptions' {} Maybe Text
a -> GetReservedNodeExchangeConfigurationOptions
s {$sel:clusterIdentifier:GetReservedNodeExchangeConfigurationOptions' :: Maybe Text
clusterIdentifier = Maybe Text
a} :: GetReservedNodeExchangeConfigurationOptions)

-- | An optional pagination token provided by a previous
-- @GetReservedNodeExchangeConfigurationOptions@ request. If this parameter
-- is specified, the response includes only records beyond the marker, up
-- to the value specified by the @MaxRecords@ parameter. You can retrieve
-- the next set of response records by providing the returned marker value
-- in the @Marker@ parameter and retrying the request.
getReservedNodeExchangeConfigurationOptions_marker :: Lens.Lens' GetReservedNodeExchangeConfigurationOptions (Prelude.Maybe Prelude.Text)
getReservedNodeExchangeConfigurationOptions_marker :: Lens' GetReservedNodeExchangeConfigurationOptions (Maybe Text)
getReservedNodeExchangeConfigurationOptions_marker = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetReservedNodeExchangeConfigurationOptions' {Maybe Text
marker :: Maybe Text
$sel:marker:GetReservedNodeExchangeConfigurationOptions' :: GetReservedNodeExchangeConfigurationOptions -> Maybe Text
marker} -> Maybe Text
marker) (\s :: GetReservedNodeExchangeConfigurationOptions
s@GetReservedNodeExchangeConfigurationOptions' {} Maybe Text
a -> GetReservedNodeExchangeConfigurationOptions
s {$sel:marker:GetReservedNodeExchangeConfigurationOptions' :: Maybe Text
marker = Maybe Text
a} :: GetReservedNodeExchangeConfigurationOptions)

-- | The maximum number of response records to return in each call. If the
-- number of remaining response records exceeds the specified @MaxRecords@
-- value, a value is returned in a @Marker@ field of the response. You can
-- retrieve the next set of records by retrying the command with the
-- returned marker value.
getReservedNodeExchangeConfigurationOptions_maxRecords :: Lens.Lens' GetReservedNodeExchangeConfigurationOptions (Prelude.Maybe Prelude.Int)
getReservedNodeExchangeConfigurationOptions_maxRecords :: Lens' GetReservedNodeExchangeConfigurationOptions (Maybe Int)
getReservedNodeExchangeConfigurationOptions_maxRecords = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetReservedNodeExchangeConfigurationOptions' {Maybe Int
maxRecords :: Maybe Int
$sel:maxRecords:GetReservedNodeExchangeConfigurationOptions' :: GetReservedNodeExchangeConfigurationOptions -> Maybe Int
maxRecords} -> Maybe Int
maxRecords) (\s :: GetReservedNodeExchangeConfigurationOptions
s@GetReservedNodeExchangeConfigurationOptions' {} Maybe Int
a -> GetReservedNodeExchangeConfigurationOptions
s {$sel:maxRecords:GetReservedNodeExchangeConfigurationOptions' :: Maybe Int
maxRecords = Maybe Int
a} :: GetReservedNodeExchangeConfigurationOptions)

-- | The identifier for the snapshot that is the source for the reserved-node
-- exchange.
getReservedNodeExchangeConfigurationOptions_snapshotIdentifier :: Lens.Lens' GetReservedNodeExchangeConfigurationOptions (Prelude.Maybe Prelude.Text)
getReservedNodeExchangeConfigurationOptions_snapshotIdentifier :: Lens' GetReservedNodeExchangeConfigurationOptions (Maybe Text)
getReservedNodeExchangeConfigurationOptions_snapshotIdentifier = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetReservedNodeExchangeConfigurationOptions' {Maybe Text
snapshotIdentifier :: Maybe Text
$sel:snapshotIdentifier:GetReservedNodeExchangeConfigurationOptions' :: GetReservedNodeExchangeConfigurationOptions -> Maybe Text
snapshotIdentifier} -> Maybe Text
snapshotIdentifier) (\s :: GetReservedNodeExchangeConfigurationOptions
s@GetReservedNodeExchangeConfigurationOptions' {} Maybe Text
a -> GetReservedNodeExchangeConfigurationOptions
s {$sel:snapshotIdentifier:GetReservedNodeExchangeConfigurationOptions' :: Maybe Text
snapshotIdentifier = Maybe Text
a} :: GetReservedNodeExchangeConfigurationOptions)

-- | The action type of the reserved-node configuration. The action type can
-- be an exchange initiated from either a snapshot or a resize.
getReservedNodeExchangeConfigurationOptions_actionType :: Lens.Lens' GetReservedNodeExchangeConfigurationOptions ReservedNodeExchangeActionType
getReservedNodeExchangeConfigurationOptions_actionType :: Lens'
  GetReservedNodeExchangeConfigurationOptions
  ReservedNodeExchangeActionType
getReservedNodeExchangeConfigurationOptions_actionType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetReservedNodeExchangeConfigurationOptions' {ReservedNodeExchangeActionType
actionType :: ReservedNodeExchangeActionType
$sel:actionType:GetReservedNodeExchangeConfigurationOptions' :: GetReservedNodeExchangeConfigurationOptions
-> ReservedNodeExchangeActionType
actionType} -> ReservedNodeExchangeActionType
actionType) (\s :: GetReservedNodeExchangeConfigurationOptions
s@GetReservedNodeExchangeConfigurationOptions' {} ReservedNodeExchangeActionType
a -> GetReservedNodeExchangeConfigurationOptions
s {$sel:actionType:GetReservedNodeExchangeConfigurationOptions' :: ReservedNodeExchangeActionType
actionType = ReservedNodeExchangeActionType
a} :: GetReservedNodeExchangeConfigurationOptions)

instance
  Core.AWSPager
    GetReservedNodeExchangeConfigurationOptions
  where
  page :: GetReservedNodeExchangeConfigurationOptions
-> AWSResponse GetReservedNodeExchangeConfigurationOptions
-> Maybe GetReservedNodeExchangeConfigurationOptions
page GetReservedNodeExchangeConfigurationOptions
rq AWSResponse GetReservedNodeExchangeConfigurationOptions
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse GetReservedNodeExchangeConfigurationOptions
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens'
  GetReservedNodeExchangeConfigurationOptionsResponse (Maybe Text)
getReservedNodeExchangeConfigurationOptionsResponse_marker
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse GetReservedNodeExchangeConfigurationOptions
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens'
  GetReservedNodeExchangeConfigurationOptionsResponse
  (Maybe [ReservedNodeConfigurationOption])
getReservedNodeExchangeConfigurationOptionsResponse_reservedNodeConfigurationOptionList
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | Bool
Prelude.otherwise =
        forall a. a -> Maybe a
Prelude.Just
          forall a b. (a -> b) -> a -> b
Prelude.$ GetReservedNodeExchangeConfigurationOptions
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' GetReservedNodeExchangeConfigurationOptions (Maybe Text)
getReservedNodeExchangeConfigurationOptions_marker
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse GetReservedNodeExchangeConfigurationOptions
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens'
  GetReservedNodeExchangeConfigurationOptionsResponse (Maybe Text)
getReservedNodeExchangeConfigurationOptionsResponse_marker
          forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just

instance
  Core.AWSRequest
    GetReservedNodeExchangeConfigurationOptions
  where
  type
    AWSResponse
      GetReservedNodeExchangeConfigurationOptions =
      GetReservedNodeExchangeConfigurationOptionsResponse
  request :: (Service -> Service)
-> GetReservedNodeExchangeConfigurationOptions
-> Request GetReservedNodeExchangeConfigurationOptions
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 GetReservedNodeExchangeConfigurationOptions
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse
           (AWSResponse GetReservedNodeExchangeConfigurationOptions)))
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
"GetReservedNodeExchangeConfigurationOptionsResult"
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe Text
-> Maybe [ReservedNodeConfigurationOption]
-> Int
-> GetReservedNodeExchangeConfigurationOptionsResponse
GetReservedNodeExchangeConfigurationOptionsResponse'
            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
"Marker")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                            forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ReservedNodeConfigurationOptionList"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                            forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may
                              ( forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList
                                  Text
"ReservedNodeConfigurationOption"
                              )
                        )
            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
    GetReservedNodeExchangeConfigurationOptions
  where
  hashWithSalt :: Int -> GetReservedNodeExchangeConfigurationOptions -> Int
hashWithSalt
    Int
_salt
    GetReservedNodeExchangeConfigurationOptions' {Maybe Int
Maybe Text
ReservedNodeExchangeActionType
actionType :: ReservedNodeExchangeActionType
snapshotIdentifier :: Maybe Text
maxRecords :: Maybe Int
marker :: Maybe Text
clusterIdentifier :: Maybe Text
$sel:actionType:GetReservedNodeExchangeConfigurationOptions' :: GetReservedNodeExchangeConfigurationOptions
-> ReservedNodeExchangeActionType
$sel:snapshotIdentifier:GetReservedNodeExchangeConfigurationOptions' :: GetReservedNodeExchangeConfigurationOptions -> Maybe Text
$sel:maxRecords:GetReservedNodeExchangeConfigurationOptions' :: GetReservedNodeExchangeConfigurationOptions -> Maybe Int
$sel:marker:GetReservedNodeExchangeConfigurationOptions' :: GetReservedNodeExchangeConfigurationOptions -> Maybe Text
$sel:clusterIdentifier:GetReservedNodeExchangeConfigurationOptions' :: GetReservedNodeExchangeConfigurationOptions -> Maybe Text
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
clusterIdentifier
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
marker
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
maxRecords
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
snapshotIdentifier
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` ReservedNodeExchangeActionType
actionType

instance
  Prelude.NFData
    GetReservedNodeExchangeConfigurationOptions
  where
  rnf :: GetReservedNodeExchangeConfigurationOptions -> ()
rnf GetReservedNodeExchangeConfigurationOptions' {Maybe Int
Maybe Text
ReservedNodeExchangeActionType
actionType :: ReservedNodeExchangeActionType
snapshotIdentifier :: Maybe Text
maxRecords :: Maybe Int
marker :: Maybe Text
clusterIdentifier :: Maybe Text
$sel:actionType:GetReservedNodeExchangeConfigurationOptions' :: GetReservedNodeExchangeConfigurationOptions
-> ReservedNodeExchangeActionType
$sel:snapshotIdentifier:GetReservedNodeExchangeConfigurationOptions' :: GetReservedNodeExchangeConfigurationOptions -> Maybe Text
$sel:maxRecords:GetReservedNodeExchangeConfigurationOptions' :: GetReservedNodeExchangeConfigurationOptions -> Maybe Int
$sel:marker:GetReservedNodeExchangeConfigurationOptions' :: GetReservedNodeExchangeConfigurationOptions -> Maybe Text
$sel:clusterIdentifier:GetReservedNodeExchangeConfigurationOptions' :: GetReservedNodeExchangeConfigurationOptions -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
clusterIdentifier
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
marker
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
maxRecords
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
snapshotIdentifier
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf ReservedNodeExchangeActionType
actionType

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

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

instance
  Data.ToQuery
    GetReservedNodeExchangeConfigurationOptions
  where
  toQuery :: GetReservedNodeExchangeConfigurationOptions -> QueryString
toQuery
    GetReservedNodeExchangeConfigurationOptions' {Maybe Int
Maybe Text
ReservedNodeExchangeActionType
actionType :: ReservedNodeExchangeActionType
snapshotIdentifier :: Maybe Text
maxRecords :: Maybe Int
marker :: Maybe Text
clusterIdentifier :: Maybe Text
$sel:actionType:GetReservedNodeExchangeConfigurationOptions' :: GetReservedNodeExchangeConfigurationOptions
-> ReservedNodeExchangeActionType
$sel:snapshotIdentifier:GetReservedNodeExchangeConfigurationOptions' :: GetReservedNodeExchangeConfigurationOptions -> Maybe Text
$sel:maxRecords:GetReservedNodeExchangeConfigurationOptions' :: GetReservedNodeExchangeConfigurationOptions -> Maybe Int
$sel:marker:GetReservedNodeExchangeConfigurationOptions' :: GetReservedNodeExchangeConfigurationOptions -> Maybe Text
$sel:clusterIdentifier:GetReservedNodeExchangeConfigurationOptions' :: GetReservedNodeExchangeConfigurationOptions -> Maybe Text
..} =
      forall a. Monoid a => [a] -> a
Prelude.mconcat
        [ ByteString
"Action"
            forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: ( ByteString
"GetReservedNodeExchangeConfigurationOptions" ::
                        Prelude.ByteString
                    ),
          ByteString
"Version"
            forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2012-12-01" :: Prelude.ByteString),
          ByteString
"ClusterIdentifier" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
clusterIdentifier,
          ByteString
"Marker" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
marker,
          ByteString
"MaxRecords" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Int
maxRecords,
          ByteString
"SnapshotIdentifier" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
snapshotIdentifier,
          ByteString
"ActionType" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: ReservedNodeExchangeActionType
actionType
        ]

-- | /See:/ 'newGetReservedNodeExchangeConfigurationOptionsResponse' smart constructor.
data GetReservedNodeExchangeConfigurationOptionsResponse = GetReservedNodeExchangeConfigurationOptionsResponse'
  { -- | A pagination token provided by a previous
    -- @GetReservedNodeExchangeConfigurationOptions@ request.
    GetReservedNodeExchangeConfigurationOptionsResponse -> Maybe Text
marker :: Prelude.Maybe Prelude.Text,
    -- | the configuration options for the reserved-node exchange. These options
    -- include information about the source reserved node and target reserved
    -- node. Details include the node type, the price, the node count, and the
    -- offering type.
    GetReservedNodeExchangeConfigurationOptionsResponse
-> Maybe [ReservedNodeConfigurationOption]
reservedNodeConfigurationOptionList :: Prelude.Maybe [ReservedNodeConfigurationOption],
    -- | The response's http status code.
    GetReservedNodeExchangeConfigurationOptionsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (GetReservedNodeExchangeConfigurationOptionsResponse
-> GetReservedNodeExchangeConfigurationOptionsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetReservedNodeExchangeConfigurationOptionsResponse
-> GetReservedNodeExchangeConfigurationOptionsResponse -> Bool
$c/= :: GetReservedNodeExchangeConfigurationOptionsResponse
-> GetReservedNodeExchangeConfigurationOptionsResponse -> Bool
== :: GetReservedNodeExchangeConfigurationOptionsResponse
-> GetReservedNodeExchangeConfigurationOptionsResponse -> Bool
$c== :: GetReservedNodeExchangeConfigurationOptionsResponse
-> GetReservedNodeExchangeConfigurationOptionsResponse -> Bool
Prelude.Eq, ReadPrec [GetReservedNodeExchangeConfigurationOptionsResponse]
ReadPrec GetReservedNodeExchangeConfigurationOptionsResponse
Int -> ReadS GetReservedNodeExchangeConfigurationOptionsResponse
ReadS [GetReservedNodeExchangeConfigurationOptionsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetReservedNodeExchangeConfigurationOptionsResponse]
$creadListPrec :: ReadPrec [GetReservedNodeExchangeConfigurationOptionsResponse]
readPrec :: ReadPrec GetReservedNodeExchangeConfigurationOptionsResponse
$creadPrec :: ReadPrec GetReservedNodeExchangeConfigurationOptionsResponse
readList :: ReadS [GetReservedNodeExchangeConfigurationOptionsResponse]
$creadList :: ReadS [GetReservedNodeExchangeConfigurationOptionsResponse]
readsPrec :: Int -> ReadS GetReservedNodeExchangeConfigurationOptionsResponse
$creadsPrec :: Int -> ReadS GetReservedNodeExchangeConfigurationOptionsResponse
Prelude.Read, Int -> GetReservedNodeExchangeConfigurationOptionsResponse -> ShowS
[GetReservedNodeExchangeConfigurationOptionsResponse] -> ShowS
GetReservedNodeExchangeConfigurationOptionsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetReservedNodeExchangeConfigurationOptionsResponse] -> ShowS
$cshowList :: [GetReservedNodeExchangeConfigurationOptionsResponse] -> ShowS
show :: GetReservedNodeExchangeConfigurationOptionsResponse -> String
$cshow :: GetReservedNodeExchangeConfigurationOptionsResponse -> String
showsPrec :: Int -> GetReservedNodeExchangeConfigurationOptionsResponse -> ShowS
$cshowsPrec :: Int -> GetReservedNodeExchangeConfigurationOptionsResponse -> ShowS
Prelude.Show, forall x.
Rep GetReservedNodeExchangeConfigurationOptionsResponse x
-> GetReservedNodeExchangeConfigurationOptionsResponse
forall x.
GetReservedNodeExchangeConfigurationOptionsResponse
-> Rep GetReservedNodeExchangeConfigurationOptionsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetReservedNodeExchangeConfigurationOptionsResponse x
-> GetReservedNodeExchangeConfigurationOptionsResponse
$cfrom :: forall x.
GetReservedNodeExchangeConfigurationOptionsResponse
-> Rep GetReservedNodeExchangeConfigurationOptionsResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetReservedNodeExchangeConfigurationOptionsResponse' 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:
--
-- 'marker', 'getReservedNodeExchangeConfigurationOptionsResponse_marker' - A pagination token provided by a previous
-- @GetReservedNodeExchangeConfigurationOptions@ request.
--
-- 'reservedNodeConfigurationOptionList', 'getReservedNodeExchangeConfigurationOptionsResponse_reservedNodeConfigurationOptionList' - the configuration options for the reserved-node exchange. These options
-- include information about the source reserved node and target reserved
-- node. Details include the node type, the price, the node count, and the
-- offering type.
--
-- 'httpStatus', 'getReservedNodeExchangeConfigurationOptionsResponse_httpStatus' - The response's http status code.
newGetReservedNodeExchangeConfigurationOptionsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetReservedNodeExchangeConfigurationOptionsResponse
newGetReservedNodeExchangeConfigurationOptionsResponse :: Int -> GetReservedNodeExchangeConfigurationOptionsResponse
newGetReservedNodeExchangeConfigurationOptionsResponse
  Int
pHttpStatus_ =
    GetReservedNodeExchangeConfigurationOptionsResponse'
      { $sel:marker:GetReservedNodeExchangeConfigurationOptionsResponse' :: Maybe Text
marker =
          forall a. Maybe a
Prelude.Nothing,
        $sel:reservedNodeConfigurationOptionList:GetReservedNodeExchangeConfigurationOptionsResponse' :: Maybe [ReservedNodeConfigurationOption]
reservedNodeConfigurationOptionList =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:GetReservedNodeExchangeConfigurationOptionsResponse' :: Int
httpStatus =
          Int
pHttpStatus_
      }

-- | A pagination token provided by a previous
-- @GetReservedNodeExchangeConfigurationOptions@ request.
getReservedNodeExchangeConfigurationOptionsResponse_marker :: Lens.Lens' GetReservedNodeExchangeConfigurationOptionsResponse (Prelude.Maybe Prelude.Text)
getReservedNodeExchangeConfigurationOptionsResponse_marker :: Lens'
  GetReservedNodeExchangeConfigurationOptionsResponse (Maybe Text)
getReservedNodeExchangeConfigurationOptionsResponse_marker = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetReservedNodeExchangeConfigurationOptionsResponse' {Maybe Text
marker :: Maybe Text
$sel:marker:GetReservedNodeExchangeConfigurationOptionsResponse' :: GetReservedNodeExchangeConfigurationOptionsResponse -> Maybe Text
marker} -> Maybe Text
marker) (\s :: GetReservedNodeExchangeConfigurationOptionsResponse
s@GetReservedNodeExchangeConfigurationOptionsResponse' {} Maybe Text
a -> GetReservedNodeExchangeConfigurationOptionsResponse
s {$sel:marker:GetReservedNodeExchangeConfigurationOptionsResponse' :: Maybe Text
marker = Maybe Text
a} :: GetReservedNodeExchangeConfigurationOptionsResponse)

-- | the configuration options for the reserved-node exchange. These options
-- include information about the source reserved node and target reserved
-- node. Details include the node type, the price, the node count, and the
-- offering type.
getReservedNodeExchangeConfigurationOptionsResponse_reservedNodeConfigurationOptionList :: Lens.Lens' GetReservedNodeExchangeConfigurationOptionsResponse (Prelude.Maybe [ReservedNodeConfigurationOption])
getReservedNodeExchangeConfigurationOptionsResponse_reservedNodeConfigurationOptionList :: Lens'
  GetReservedNodeExchangeConfigurationOptionsResponse
  (Maybe [ReservedNodeConfigurationOption])
getReservedNodeExchangeConfigurationOptionsResponse_reservedNodeConfigurationOptionList = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetReservedNodeExchangeConfigurationOptionsResponse' {Maybe [ReservedNodeConfigurationOption]
reservedNodeConfigurationOptionList :: Maybe [ReservedNodeConfigurationOption]
$sel:reservedNodeConfigurationOptionList:GetReservedNodeExchangeConfigurationOptionsResponse' :: GetReservedNodeExchangeConfigurationOptionsResponse
-> Maybe [ReservedNodeConfigurationOption]
reservedNodeConfigurationOptionList} -> Maybe [ReservedNodeConfigurationOption]
reservedNodeConfigurationOptionList) (\s :: GetReservedNodeExchangeConfigurationOptionsResponse
s@GetReservedNodeExchangeConfigurationOptionsResponse' {} Maybe [ReservedNodeConfigurationOption]
a -> GetReservedNodeExchangeConfigurationOptionsResponse
s {$sel:reservedNodeConfigurationOptionList:GetReservedNodeExchangeConfigurationOptionsResponse' :: Maybe [ReservedNodeConfigurationOption]
reservedNodeConfigurationOptionList = Maybe [ReservedNodeConfigurationOption]
a} :: GetReservedNodeExchangeConfigurationOptionsResponse) 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 response's http status code.
getReservedNodeExchangeConfigurationOptionsResponse_httpStatus :: Lens.Lens' GetReservedNodeExchangeConfigurationOptionsResponse Prelude.Int
getReservedNodeExchangeConfigurationOptionsResponse_httpStatus :: Lens' GetReservedNodeExchangeConfigurationOptionsResponse Int
getReservedNodeExchangeConfigurationOptionsResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetReservedNodeExchangeConfigurationOptionsResponse' {Int
httpStatus :: Int
$sel:httpStatus:GetReservedNodeExchangeConfigurationOptionsResponse' :: GetReservedNodeExchangeConfigurationOptionsResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: GetReservedNodeExchangeConfigurationOptionsResponse
s@GetReservedNodeExchangeConfigurationOptionsResponse' {} Int
a -> GetReservedNodeExchangeConfigurationOptionsResponse
s {$sel:httpStatus:GetReservedNodeExchangeConfigurationOptionsResponse' :: Int
httpStatus = Int
a} :: GetReservedNodeExchangeConfigurationOptionsResponse)

instance
  Prelude.NFData
    GetReservedNodeExchangeConfigurationOptionsResponse
  where
  rnf :: GetReservedNodeExchangeConfigurationOptionsResponse -> ()
rnf
    GetReservedNodeExchangeConfigurationOptionsResponse' {Int
Maybe [ReservedNodeConfigurationOption]
Maybe Text
httpStatus :: Int
reservedNodeConfigurationOptionList :: Maybe [ReservedNodeConfigurationOption]
marker :: Maybe Text
$sel:httpStatus:GetReservedNodeExchangeConfigurationOptionsResponse' :: GetReservedNodeExchangeConfigurationOptionsResponse -> Int
$sel:reservedNodeConfigurationOptionList:GetReservedNodeExchangeConfigurationOptionsResponse' :: GetReservedNodeExchangeConfigurationOptionsResponse
-> Maybe [ReservedNodeConfigurationOption]
$sel:marker:GetReservedNodeExchangeConfigurationOptionsResponse' :: GetReservedNodeExchangeConfigurationOptionsResponse -> Maybe Text
..} =
      forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
marker
        seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [ReservedNodeConfigurationOption]
reservedNodeConfigurationOptionList
        seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus