{-# 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.MemoryDb.PurchaseReservedNodesOffering
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Allows you to purchase a reserved node offering. Reserved nodes are not
-- eligible for cancellation and are non-refundable.
module Amazonka.MemoryDb.PurchaseReservedNodesOffering
  ( -- * Creating a Request
    PurchaseReservedNodesOffering (..),
    newPurchaseReservedNodesOffering,

    -- * Request Lenses
    purchaseReservedNodesOffering_nodeCount,
    purchaseReservedNodesOffering_reservationId,
    purchaseReservedNodesOffering_tags,
    purchaseReservedNodesOffering_reservedNodesOfferingId,

    -- * Destructuring the Response
    PurchaseReservedNodesOfferingResponse (..),
    newPurchaseReservedNodesOfferingResponse,

    -- * Response Lenses
    purchaseReservedNodesOfferingResponse_reservedNode,
    purchaseReservedNodesOfferingResponse_httpStatus,
  )
where

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

-- | /See:/ 'newPurchaseReservedNodesOffering' smart constructor.
data PurchaseReservedNodesOffering = PurchaseReservedNodesOffering'
  { -- | The number of node instances to reserve.
    PurchaseReservedNodesOffering -> Maybe Int
nodeCount :: Prelude.Maybe Prelude.Int,
    -- | A customer-specified identifier to track this reservation.
    PurchaseReservedNodesOffering -> Maybe Text
reservationId :: Prelude.Maybe Prelude.Text,
    -- | A list of tags to be added to this resource. A tag is a key-value pair.
    -- A tag key must be accompanied by a tag value, although null is accepted.
    PurchaseReservedNodesOffering -> Maybe [Tag]
tags :: Prelude.Maybe [Tag],
    -- | The ID of the reserved node offering to purchase.
    PurchaseReservedNodesOffering -> Text
reservedNodesOfferingId :: Prelude.Text
  }
  deriving (PurchaseReservedNodesOffering
-> PurchaseReservedNodesOffering -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PurchaseReservedNodesOffering
-> PurchaseReservedNodesOffering -> Bool
$c/= :: PurchaseReservedNodesOffering
-> PurchaseReservedNodesOffering -> Bool
== :: PurchaseReservedNodesOffering
-> PurchaseReservedNodesOffering -> Bool
$c== :: PurchaseReservedNodesOffering
-> PurchaseReservedNodesOffering -> Bool
Prelude.Eq, ReadPrec [PurchaseReservedNodesOffering]
ReadPrec PurchaseReservedNodesOffering
Int -> ReadS PurchaseReservedNodesOffering
ReadS [PurchaseReservedNodesOffering]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [PurchaseReservedNodesOffering]
$creadListPrec :: ReadPrec [PurchaseReservedNodesOffering]
readPrec :: ReadPrec PurchaseReservedNodesOffering
$creadPrec :: ReadPrec PurchaseReservedNodesOffering
readList :: ReadS [PurchaseReservedNodesOffering]
$creadList :: ReadS [PurchaseReservedNodesOffering]
readsPrec :: Int -> ReadS PurchaseReservedNodesOffering
$creadsPrec :: Int -> ReadS PurchaseReservedNodesOffering
Prelude.Read, Int -> PurchaseReservedNodesOffering -> ShowS
[PurchaseReservedNodesOffering] -> ShowS
PurchaseReservedNodesOffering -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PurchaseReservedNodesOffering] -> ShowS
$cshowList :: [PurchaseReservedNodesOffering] -> ShowS
show :: PurchaseReservedNodesOffering -> String
$cshow :: PurchaseReservedNodesOffering -> String
showsPrec :: Int -> PurchaseReservedNodesOffering -> ShowS
$cshowsPrec :: Int -> PurchaseReservedNodesOffering -> ShowS
Prelude.Show, forall x.
Rep PurchaseReservedNodesOffering x
-> PurchaseReservedNodesOffering
forall x.
PurchaseReservedNodesOffering
-> Rep PurchaseReservedNodesOffering x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep PurchaseReservedNodesOffering x
-> PurchaseReservedNodesOffering
$cfrom :: forall x.
PurchaseReservedNodesOffering
-> Rep PurchaseReservedNodesOffering x
Prelude.Generic)

-- |
-- Create a value of 'PurchaseReservedNodesOffering' 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:
--
-- 'nodeCount', 'purchaseReservedNodesOffering_nodeCount' - The number of node instances to reserve.
--
-- 'reservationId', 'purchaseReservedNodesOffering_reservationId' - A customer-specified identifier to track this reservation.
--
-- 'tags', 'purchaseReservedNodesOffering_tags' - A list of tags to be added to this resource. A tag is a key-value pair.
-- A tag key must be accompanied by a tag value, although null is accepted.
--
-- 'reservedNodesOfferingId', 'purchaseReservedNodesOffering_reservedNodesOfferingId' - The ID of the reserved node offering to purchase.
newPurchaseReservedNodesOffering ::
  -- | 'reservedNodesOfferingId'
  Prelude.Text ->
  PurchaseReservedNodesOffering
newPurchaseReservedNodesOffering :: Text -> PurchaseReservedNodesOffering
newPurchaseReservedNodesOffering
  Text
pReservedNodesOfferingId_ =
    PurchaseReservedNodesOffering'
      { $sel:nodeCount:PurchaseReservedNodesOffering' :: Maybe Int
nodeCount =
          forall a. Maybe a
Prelude.Nothing,
        $sel:reservationId:PurchaseReservedNodesOffering' :: Maybe Text
reservationId = forall a. Maybe a
Prelude.Nothing,
        $sel:tags:PurchaseReservedNodesOffering' :: Maybe [Tag]
tags = forall a. Maybe a
Prelude.Nothing,
        $sel:reservedNodesOfferingId:PurchaseReservedNodesOffering' :: Text
reservedNodesOfferingId =
          Text
pReservedNodesOfferingId_
      }

-- | The number of node instances to reserve.
purchaseReservedNodesOffering_nodeCount :: Lens.Lens' PurchaseReservedNodesOffering (Prelude.Maybe Prelude.Int)
purchaseReservedNodesOffering_nodeCount :: Lens' PurchaseReservedNodesOffering (Maybe Int)
purchaseReservedNodesOffering_nodeCount = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PurchaseReservedNodesOffering' {Maybe Int
nodeCount :: Maybe Int
$sel:nodeCount:PurchaseReservedNodesOffering' :: PurchaseReservedNodesOffering -> Maybe Int
nodeCount} -> Maybe Int
nodeCount) (\s :: PurchaseReservedNodesOffering
s@PurchaseReservedNodesOffering' {} Maybe Int
a -> PurchaseReservedNodesOffering
s {$sel:nodeCount:PurchaseReservedNodesOffering' :: Maybe Int
nodeCount = Maybe Int
a} :: PurchaseReservedNodesOffering)

-- | A customer-specified identifier to track this reservation.
purchaseReservedNodesOffering_reservationId :: Lens.Lens' PurchaseReservedNodesOffering (Prelude.Maybe Prelude.Text)
purchaseReservedNodesOffering_reservationId :: Lens' PurchaseReservedNodesOffering (Maybe Text)
purchaseReservedNodesOffering_reservationId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PurchaseReservedNodesOffering' {Maybe Text
reservationId :: Maybe Text
$sel:reservationId:PurchaseReservedNodesOffering' :: PurchaseReservedNodesOffering -> Maybe Text
reservationId} -> Maybe Text
reservationId) (\s :: PurchaseReservedNodesOffering
s@PurchaseReservedNodesOffering' {} Maybe Text
a -> PurchaseReservedNodesOffering
s {$sel:reservationId:PurchaseReservedNodesOffering' :: Maybe Text
reservationId = Maybe Text
a} :: PurchaseReservedNodesOffering)

-- | A list of tags to be added to this resource. A tag is a key-value pair.
-- A tag key must be accompanied by a tag value, although null is accepted.
purchaseReservedNodesOffering_tags :: Lens.Lens' PurchaseReservedNodesOffering (Prelude.Maybe [Tag])
purchaseReservedNodesOffering_tags :: Lens' PurchaseReservedNodesOffering (Maybe [Tag])
purchaseReservedNodesOffering_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PurchaseReservedNodesOffering' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:PurchaseReservedNodesOffering' :: PurchaseReservedNodesOffering -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: PurchaseReservedNodesOffering
s@PurchaseReservedNodesOffering' {} Maybe [Tag]
a -> PurchaseReservedNodesOffering
s {$sel:tags:PurchaseReservedNodesOffering' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: PurchaseReservedNodesOffering) 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 ID of the reserved node offering to purchase.
purchaseReservedNodesOffering_reservedNodesOfferingId :: Lens.Lens' PurchaseReservedNodesOffering Prelude.Text
purchaseReservedNodesOffering_reservedNodesOfferingId :: Lens' PurchaseReservedNodesOffering Text
purchaseReservedNodesOffering_reservedNodesOfferingId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PurchaseReservedNodesOffering' {Text
reservedNodesOfferingId :: Text
$sel:reservedNodesOfferingId:PurchaseReservedNodesOffering' :: PurchaseReservedNodesOffering -> Text
reservedNodesOfferingId} -> Text
reservedNodesOfferingId) (\s :: PurchaseReservedNodesOffering
s@PurchaseReservedNodesOffering' {} Text
a -> PurchaseReservedNodesOffering
s {$sel:reservedNodesOfferingId:PurchaseReservedNodesOffering' :: Text
reservedNodesOfferingId = Text
a} :: PurchaseReservedNodesOffering)

instance
  Core.AWSRequest
    PurchaseReservedNodesOffering
  where
  type
    AWSResponse PurchaseReservedNodesOffering =
      PurchaseReservedNodesOfferingResponse
  request :: (Service -> Service)
-> PurchaseReservedNodesOffering
-> Request PurchaseReservedNodesOffering
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 PurchaseReservedNodesOffering
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse PurchaseReservedNodesOffering)))
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 ReservedNode -> Int -> PurchaseReservedNodesOfferingResponse
PurchaseReservedNodesOfferingResponse'
            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
"ReservedNode")
            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
    PurchaseReservedNodesOffering
  where
  hashWithSalt :: Int -> PurchaseReservedNodesOffering -> Int
hashWithSalt Int
_salt PurchaseReservedNodesOffering' {Maybe Int
Maybe [Tag]
Maybe Text
Text
reservedNodesOfferingId :: Text
tags :: Maybe [Tag]
reservationId :: Maybe Text
nodeCount :: Maybe Int
$sel:reservedNodesOfferingId:PurchaseReservedNodesOffering' :: PurchaseReservedNodesOffering -> Text
$sel:tags:PurchaseReservedNodesOffering' :: PurchaseReservedNodesOffering -> Maybe [Tag]
$sel:reservationId:PurchaseReservedNodesOffering' :: PurchaseReservedNodesOffering -> Maybe Text
$sel:nodeCount:PurchaseReservedNodesOffering' :: PurchaseReservedNodesOffering -> Maybe Int
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
nodeCount
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
reservationId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Tag]
tags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
reservedNodesOfferingId

instance Prelude.NFData PurchaseReservedNodesOffering where
  rnf :: PurchaseReservedNodesOffering -> ()
rnf PurchaseReservedNodesOffering' {Maybe Int
Maybe [Tag]
Maybe Text
Text
reservedNodesOfferingId :: Text
tags :: Maybe [Tag]
reservationId :: Maybe Text
nodeCount :: Maybe Int
$sel:reservedNodesOfferingId:PurchaseReservedNodesOffering' :: PurchaseReservedNodesOffering -> Text
$sel:tags:PurchaseReservedNodesOffering' :: PurchaseReservedNodesOffering -> Maybe [Tag]
$sel:reservationId:PurchaseReservedNodesOffering' :: PurchaseReservedNodesOffering -> Maybe Text
$sel:nodeCount:PurchaseReservedNodesOffering' :: PurchaseReservedNodesOffering -> Maybe Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
nodeCount
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
reservationId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Tag]
tags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
reservedNodesOfferingId

instance Data.ToHeaders PurchaseReservedNodesOffering where
  toHeaders :: PurchaseReservedNodesOffering -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"X-Amz-Target"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"AmazonMemoryDB.PurchaseReservedNodesOffering" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON PurchaseReservedNodesOffering where
  toJSON :: PurchaseReservedNodesOffering -> Value
toJSON PurchaseReservedNodesOffering' {Maybe Int
Maybe [Tag]
Maybe Text
Text
reservedNodesOfferingId :: Text
tags :: Maybe [Tag]
reservationId :: Maybe Text
nodeCount :: Maybe Int
$sel:reservedNodesOfferingId:PurchaseReservedNodesOffering' :: PurchaseReservedNodesOffering -> Text
$sel:tags:PurchaseReservedNodesOffering' :: PurchaseReservedNodesOffering -> Maybe [Tag]
$sel:reservationId:PurchaseReservedNodesOffering' :: PurchaseReservedNodesOffering -> Maybe Text
$sel:nodeCount:PurchaseReservedNodesOffering' :: PurchaseReservedNodesOffering -> Maybe Int
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"NodeCount" 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 Int
nodeCount,
            (Key
"ReservationId" 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
reservationId,
            (Key
"Tags" 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 [Tag]
tags,
            forall a. a -> Maybe a
Prelude.Just
              ( Key
"ReservedNodesOfferingId"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
reservedNodesOfferingId
              )
          ]
      )

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

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

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

-- |
-- Create a value of 'PurchaseReservedNodesOfferingResponse' 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:
--
-- 'reservedNode', 'purchaseReservedNodesOfferingResponse_reservedNode' - Represents the output of a @PurchaseReservedNodesOffering@ operation.
--
-- 'httpStatus', 'purchaseReservedNodesOfferingResponse_httpStatus' - The response's http status code.
newPurchaseReservedNodesOfferingResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  PurchaseReservedNodesOfferingResponse
newPurchaseReservedNodesOfferingResponse :: Int -> PurchaseReservedNodesOfferingResponse
newPurchaseReservedNodesOfferingResponse Int
pHttpStatus_ =
  PurchaseReservedNodesOfferingResponse'
    { $sel:reservedNode:PurchaseReservedNodesOfferingResponse' :: Maybe ReservedNode
reservedNode =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:PurchaseReservedNodesOfferingResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Represents the output of a @PurchaseReservedNodesOffering@ operation.
purchaseReservedNodesOfferingResponse_reservedNode :: Lens.Lens' PurchaseReservedNodesOfferingResponse (Prelude.Maybe ReservedNode)
purchaseReservedNodesOfferingResponse_reservedNode :: Lens' PurchaseReservedNodesOfferingResponse (Maybe ReservedNode)
purchaseReservedNodesOfferingResponse_reservedNode = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PurchaseReservedNodesOfferingResponse' {Maybe ReservedNode
reservedNode :: Maybe ReservedNode
$sel:reservedNode:PurchaseReservedNodesOfferingResponse' :: PurchaseReservedNodesOfferingResponse -> Maybe ReservedNode
reservedNode} -> Maybe ReservedNode
reservedNode) (\s :: PurchaseReservedNodesOfferingResponse
s@PurchaseReservedNodesOfferingResponse' {} Maybe ReservedNode
a -> PurchaseReservedNodesOfferingResponse
s {$sel:reservedNode:PurchaseReservedNodesOfferingResponse' :: Maybe ReservedNode
reservedNode = Maybe ReservedNode
a} :: PurchaseReservedNodesOfferingResponse)

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

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