{-# 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.EC2.GetReservedInstancesExchangeQuote
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Returns a quote and exchange information for exchanging one or more
-- specified Convertible Reserved Instances for a new Convertible Reserved
-- Instance. If the exchange cannot be performed, the reason is returned in
-- the response. Use AcceptReservedInstancesExchangeQuote to perform the
-- exchange.
module Amazonka.EC2.GetReservedInstancesExchangeQuote
  ( -- * Creating a Request
    GetReservedInstancesExchangeQuote (..),
    newGetReservedInstancesExchangeQuote,

    -- * Request Lenses
    getReservedInstancesExchangeQuote_dryRun,
    getReservedInstancesExchangeQuote_targetConfigurations,
    getReservedInstancesExchangeQuote_reservedInstanceIds,

    -- * Destructuring the Response
    GetReservedInstancesExchangeQuoteResponse (..),
    newGetReservedInstancesExchangeQuoteResponse,

    -- * Response Lenses
    getReservedInstancesExchangeQuoteResponse_currencyCode,
    getReservedInstancesExchangeQuoteResponse_isValidExchange,
    getReservedInstancesExchangeQuoteResponse_outputReservedInstancesWillExpireAt,
    getReservedInstancesExchangeQuoteResponse_paymentDue,
    getReservedInstancesExchangeQuoteResponse_reservedInstanceValueRollup,
    getReservedInstancesExchangeQuoteResponse_reservedInstanceValueSet,
    getReservedInstancesExchangeQuoteResponse_targetConfigurationValueRollup,
    getReservedInstancesExchangeQuoteResponse_targetConfigurationValueSet,
    getReservedInstancesExchangeQuoteResponse_validationFailureReason,
    getReservedInstancesExchangeQuoteResponse_httpStatus,
  )
where

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

-- | Contains the parameters for GetReservedInstanceExchangeQuote.
--
-- /See:/ 'newGetReservedInstancesExchangeQuote' smart constructor.
data GetReservedInstancesExchangeQuote = GetReservedInstancesExchangeQuote'
  { -- | Checks whether you have the required permissions for the action, without
    -- actually making the request, and provides an error response. If you have
    -- the required permissions, the error response is @DryRunOperation@.
    -- Otherwise, it is @UnauthorizedOperation@.
    GetReservedInstancesExchangeQuote -> Maybe Bool
dryRun :: Prelude.Maybe Prelude.Bool,
    -- | The configuration of the target Convertible Reserved Instance to
    -- exchange for your current Convertible Reserved Instances.
    GetReservedInstancesExchangeQuote
-> Maybe [TargetConfigurationRequest]
targetConfigurations :: Prelude.Maybe [TargetConfigurationRequest],
    -- | The IDs of the Convertible Reserved Instances to exchange.
    GetReservedInstancesExchangeQuote -> [Text]
reservedInstanceIds :: [Prelude.Text]
  }
  deriving (GetReservedInstancesExchangeQuote
-> GetReservedInstancesExchangeQuote -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetReservedInstancesExchangeQuote
-> GetReservedInstancesExchangeQuote -> Bool
$c/= :: GetReservedInstancesExchangeQuote
-> GetReservedInstancesExchangeQuote -> Bool
== :: GetReservedInstancesExchangeQuote
-> GetReservedInstancesExchangeQuote -> Bool
$c== :: GetReservedInstancesExchangeQuote
-> GetReservedInstancesExchangeQuote -> Bool
Prelude.Eq, ReadPrec [GetReservedInstancesExchangeQuote]
ReadPrec GetReservedInstancesExchangeQuote
Int -> ReadS GetReservedInstancesExchangeQuote
ReadS [GetReservedInstancesExchangeQuote]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetReservedInstancesExchangeQuote]
$creadListPrec :: ReadPrec [GetReservedInstancesExchangeQuote]
readPrec :: ReadPrec GetReservedInstancesExchangeQuote
$creadPrec :: ReadPrec GetReservedInstancesExchangeQuote
readList :: ReadS [GetReservedInstancesExchangeQuote]
$creadList :: ReadS [GetReservedInstancesExchangeQuote]
readsPrec :: Int -> ReadS GetReservedInstancesExchangeQuote
$creadsPrec :: Int -> ReadS GetReservedInstancesExchangeQuote
Prelude.Read, Int -> GetReservedInstancesExchangeQuote -> ShowS
[GetReservedInstancesExchangeQuote] -> ShowS
GetReservedInstancesExchangeQuote -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetReservedInstancesExchangeQuote] -> ShowS
$cshowList :: [GetReservedInstancesExchangeQuote] -> ShowS
show :: GetReservedInstancesExchangeQuote -> String
$cshow :: GetReservedInstancesExchangeQuote -> String
showsPrec :: Int -> GetReservedInstancesExchangeQuote -> ShowS
$cshowsPrec :: Int -> GetReservedInstancesExchangeQuote -> ShowS
Prelude.Show, forall x.
Rep GetReservedInstancesExchangeQuote x
-> GetReservedInstancesExchangeQuote
forall x.
GetReservedInstancesExchangeQuote
-> Rep GetReservedInstancesExchangeQuote x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetReservedInstancesExchangeQuote x
-> GetReservedInstancesExchangeQuote
$cfrom :: forall x.
GetReservedInstancesExchangeQuote
-> Rep GetReservedInstancesExchangeQuote x
Prelude.Generic)

-- |
-- Create a value of 'GetReservedInstancesExchangeQuote' 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:
--
-- 'dryRun', 'getReservedInstancesExchangeQuote_dryRun' - Checks whether you have the required permissions for the action, without
-- actually making the request, and provides an error response. If you have
-- the required permissions, the error response is @DryRunOperation@.
-- Otherwise, it is @UnauthorizedOperation@.
--
-- 'targetConfigurations', 'getReservedInstancesExchangeQuote_targetConfigurations' - The configuration of the target Convertible Reserved Instance to
-- exchange for your current Convertible Reserved Instances.
--
-- 'reservedInstanceIds', 'getReservedInstancesExchangeQuote_reservedInstanceIds' - The IDs of the Convertible Reserved Instances to exchange.
newGetReservedInstancesExchangeQuote ::
  GetReservedInstancesExchangeQuote
newGetReservedInstancesExchangeQuote :: GetReservedInstancesExchangeQuote
newGetReservedInstancesExchangeQuote =
  GetReservedInstancesExchangeQuote'
    { $sel:dryRun:GetReservedInstancesExchangeQuote' :: Maybe Bool
dryRun =
        forall a. Maybe a
Prelude.Nothing,
      $sel:targetConfigurations:GetReservedInstancesExchangeQuote' :: Maybe [TargetConfigurationRequest]
targetConfigurations = forall a. Maybe a
Prelude.Nothing,
      $sel:reservedInstanceIds:GetReservedInstancesExchangeQuote' :: [Text]
reservedInstanceIds = forall a. Monoid a => a
Prelude.mempty
    }

-- | Checks whether you have the required permissions for the action, without
-- actually making the request, and provides an error response. If you have
-- the required permissions, the error response is @DryRunOperation@.
-- Otherwise, it is @UnauthorizedOperation@.
getReservedInstancesExchangeQuote_dryRun :: Lens.Lens' GetReservedInstancesExchangeQuote (Prelude.Maybe Prelude.Bool)
getReservedInstancesExchangeQuote_dryRun :: Lens' GetReservedInstancesExchangeQuote (Maybe Bool)
getReservedInstancesExchangeQuote_dryRun = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetReservedInstancesExchangeQuote' {Maybe Bool
dryRun :: Maybe Bool
$sel:dryRun:GetReservedInstancesExchangeQuote' :: GetReservedInstancesExchangeQuote -> Maybe Bool
dryRun} -> Maybe Bool
dryRun) (\s :: GetReservedInstancesExchangeQuote
s@GetReservedInstancesExchangeQuote' {} Maybe Bool
a -> GetReservedInstancesExchangeQuote
s {$sel:dryRun:GetReservedInstancesExchangeQuote' :: Maybe Bool
dryRun = Maybe Bool
a} :: GetReservedInstancesExchangeQuote)

-- | The configuration of the target Convertible Reserved Instance to
-- exchange for your current Convertible Reserved Instances.
getReservedInstancesExchangeQuote_targetConfigurations :: Lens.Lens' GetReservedInstancesExchangeQuote (Prelude.Maybe [TargetConfigurationRequest])
getReservedInstancesExchangeQuote_targetConfigurations :: Lens'
  GetReservedInstancesExchangeQuote
  (Maybe [TargetConfigurationRequest])
getReservedInstancesExchangeQuote_targetConfigurations = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetReservedInstancesExchangeQuote' {Maybe [TargetConfigurationRequest]
targetConfigurations :: Maybe [TargetConfigurationRequest]
$sel:targetConfigurations:GetReservedInstancesExchangeQuote' :: GetReservedInstancesExchangeQuote
-> Maybe [TargetConfigurationRequest]
targetConfigurations} -> Maybe [TargetConfigurationRequest]
targetConfigurations) (\s :: GetReservedInstancesExchangeQuote
s@GetReservedInstancesExchangeQuote' {} Maybe [TargetConfigurationRequest]
a -> GetReservedInstancesExchangeQuote
s {$sel:targetConfigurations:GetReservedInstancesExchangeQuote' :: Maybe [TargetConfigurationRequest]
targetConfigurations = Maybe [TargetConfigurationRequest]
a} :: GetReservedInstancesExchangeQuote) 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 IDs of the Convertible Reserved Instances to exchange.
getReservedInstancesExchangeQuote_reservedInstanceIds :: Lens.Lens' GetReservedInstancesExchangeQuote [Prelude.Text]
getReservedInstancesExchangeQuote_reservedInstanceIds :: Lens' GetReservedInstancesExchangeQuote [Text]
getReservedInstancesExchangeQuote_reservedInstanceIds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetReservedInstancesExchangeQuote' {[Text]
reservedInstanceIds :: [Text]
$sel:reservedInstanceIds:GetReservedInstancesExchangeQuote' :: GetReservedInstancesExchangeQuote -> [Text]
reservedInstanceIds} -> [Text]
reservedInstanceIds) (\s :: GetReservedInstancesExchangeQuote
s@GetReservedInstancesExchangeQuote' {} [Text]
a -> GetReservedInstancesExchangeQuote
s {$sel:reservedInstanceIds:GetReservedInstancesExchangeQuote' :: [Text]
reservedInstanceIds = [Text]
a} :: GetReservedInstancesExchangeQuote) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance
  Core.AWSRequest
    GetReservedInstancesExchangeQuote
  where
  type
    AWSResponse GetReservedInstancesExchangeQuote =
      GetReservedInstancesExchangeQuoteResponse
  request :: (Service -> Service)
-> GetReservedInstancesExchangeQuote
-> Request GetReservedInstancesExchangeQuote
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 GetReservedInstancesExchangeQuote
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse GetReservedInstancesExchangeQuote)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXML
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe Text
-> Maybe Bool
-> Maybe ISO8601
-> Maybe Text
-> Maybe ReservationValue
-> Maybe [ReservedInstanceReservationValue]
-> Maybe ReservationValue
-> Maybe [TargetReservationValue]
-> Maybe Text
-> Int
-> GetReservedInstancesExchangeQuoteResponse
GetReservedInstancesExchangeQuoteResponse'
            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
"currencyCode")
            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
"isValidExchange")
            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
"outputReservedInstancesWillExpireAt")
            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
"paymentDue")
            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
"reservedInstanceValueRollup")
            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
"reservedInstanceValueSet"
                            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
"item")
                        )
            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
"targetConfigurationValueRollup")
            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
"targetConfigurationValueSet"
                            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
"item")
                        )
            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
"validationFailureReason")
            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
    GetReservedInstancesExchangeQuote
  where
  hashWithSalt :: Int -> GetReservedInstancesExchangeQuote -> Int
hashWithSalt
    Int
_salt
    GetReservedInstancesExchangeQuote' {[Text]
Maybe Bool
Maybe [TargetConfigurationRequest]
reservedInstanceIds :: [Text]
targetConfigurations :: Maybe [TargetConfigurationRequest]
dryRun :: Maybe Bool
$sel:reservedInstanceIds:GetReservedInstancesExchangeQuote' :: GetReservedInstancesExchangeQuote -> [Text]
$sel:targetConfigurations:GetReservedInstancesExchangeQuote' :: GetReservedInstancesExchangeQuote
-> Maybe [TargetConfigurationRequest]
$sel:dryRun:GetReservedInstancesExchangeQuote' :: GetReservedInstancesExchangeQuote -> Maybe Bool
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
dryRun
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [TargetConfigurationRequest]
targetConfigurations
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` [Text]
reservedInstanceIds

instance
  Prelude.NFData
    GetReservedInstancesExchangeQuote
  where
  rnf :: GetReservedInstancesExchangeQuote -> ()
rnf GetReservedInstancesExchangeQuote' {[Text]
Maybe Bool
Maybe [TargetConfigurationRequest]
reservedInstanceIds :: [Text]
targetConfigurations :: Maybe [TargetConfigurationRequest]
dryRun :: Maybe Bool
$sel:reservedInstanceIds:GetReservedInstancesExchangeQuote' :: GetReservedInstancesExchangeQuote -> [Text]
$sel:targetConfigurations:GetReservedInstancesExchangeQuote' :: GetReservedInstancesExchangeQuote
-> Maybe [TargetConfigurationRequest]
$sel:dryRun:GetReservedInstancesExchangeQuote' :: GetReservedInstancesExchangeQuote -> Maybe Bool
..} =
    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 [TargetConfigurationRequest]
targetConfigurations
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf [Text]
reservedInstanceIds

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

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

instance
  Data.ToQuery
    GetReservedInstancesExchangeQuote
  where
  toQuery :: GetReservedInstancesExchangeQuote -> QueryString
toQuery GetReservedInstancesExchangeQuote' {[Text]
Maybe Bool
Maybe [TargetConfigurationRequest]
reservedInstanceIds :: [Text]
targetConfigurations :: Maybe [TargetConfigurationRequest]
dryRun :: Maybe Bool
$sel:reservedInstanceIds:GetReservedInstancesExchangeQuote' :: GetReservedInstancesExchangeQuote -> [Text]
$sel:targetConfigurations:GetReservedInstancesExchangeQuote' :: GetReservedInstancesExchangeQuote
-> Maybe [TargetConfigurationRequest]
$sel:dryRun:GetReservedInstancesExchangeQuote' :: GetReservedInstancesExchangeQuote -> Maybe Bool
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: ( ByteString
"GetReservedInstancesExchangeQuote" ::
                      Prelude.ByteString
                  ),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2016-11-15" :: Prelude.ByteString),
        ByteString
"DryRun" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
dryRun,
        forall a. ToQuery a => a -> QueryString
Data.toQuery
          ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"TargetConfiguration"
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [TargetConfigurationRequest]
targetConfigurations
          ),
        forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList
          ByteString
"ReservedInstanceId"
          [Text]
reservedInstanceIds
      ]

-- | Contains the output of GetReservedInstancesExchangeQuote.
--
-- /See:/ 'newGetReservedInstancesExchangeQuoteResponse' smart constructor.
data GetReservedInstancesExchangeQuoteResponse = GetReservedInstancesExchangeQuoteResponse'
  { -- | The currency of the transaction.
    GetReservedInstancesExchangeQuoteResponse -> Maybe Text
currencyCode :: Prelude.Maybe Prelude.Text,
    -- | If @true@, the exchange is valid. If @false@, the exchange cannot be
    -- completed.
    GetReservedInstancesExchangeQuoteResponse -> Maybe Bool
isValidExchange :: Prelude.Maybe Prelude.Bool,
    -- | The new end date of the reservation term.
    GetReservedInstancesExchangeQuoteResponse -> Maybe ISO8601
outputReservedInstancesWillExpireAt :: Prelude.Maybe Data.ISO8601,
    -- | The total true upfront charge for the exchange.
    GetReservedInstancesExchangeQuoteResponse -> Maybe Text
paymentDue :: Prelude.Maybe Prelude.Text,
    -- | The cost associated with the Reserved Instance.
    GetReservedInstancesExchangeQuoteResponse -> Maybe ReservationValue
reservedInstanceValueRollup :: Prelude.Maybe ReservationValue,
    -- | The configuration of your Convertible Reserved Instances.
    GetReservedInstancesExchangeQuoteResponse
-> Maybe [ReservedInstanceReservationValue]
reservedInstanceValueSet :: Prelude.Maybe [ReservedInstanceReservationValue],
    -- | The cost associated with the Reserved Instance.
    GetReservedInstancesExchangeQuoteResponse -> Maybe ReservationValue
targetConfigurationValueRollup :: Prelude.Maybe ReservationValue,
    -- | The values of the target Convertible Reserved Instances.
    GetReservedInstancesExchangeQuoteResponse
-> Maybe [TargetReservationValue]
targetConfigurationValueSet :: Prelude.Maybe [TargetReservationValue],
    -- | Describes the reason why the exchange cannot be completed.
    GetReservedInstancesExchangeQuoteResponse -> Maybe Text
validationFailureReason :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    GetReservedInstancesExchangeQuoteResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (GetReservedInstancesExchangeQuoteResponse
-> GetReservedInstancesExchangeQuoteResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetReservedInstancesExchangeQuoteResponse
-> GetReservedInstancesExchangeQuoteResponse -> Bool
$c/= :: GetReservedInstancesExchangeQuoteResponse
-> GetReservedInstancesExchangeQuoteResponse -> Bool
== :: GetReservedInstancesExchangeQuoteResponse
-> GetReservedInstancesExchangeQuoteResponse -> Bool
$c== :: GetReservedInstancesExchangeQuoteResponse
-> GetReservedInstancesExchangeQuoteResponse -> Bool
Prelude.Eq, ReadPrec [GetReservedInstancesExchangeQuoteResponse]
ReadPrec GetReservedInstancesExchangeQuoteResponse
Int -> ReadS GetReservedInstancesExchangeQuoteResponse
ReadS [GetReservedInstancesExchangeQuoteResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetReservedInstancesExchangeQuoteResponse]
$creadListPrec :: ReadPrec [GetReservedInstancesExchangeQuoteResponse]
readPrec :: ReadPrec GetReservedInstancesExchangeQuoteResponse
$creadPrec :: ReadPrec GetReservedInstancesExchangeQuoteResponse
readList :: ReadS [GetReservedInstancesExchangeQuoteResponse]
$creadList :: ReadS [GetReservedInstancesExchangeQuoteResponse]
readsPrec :: Int -> ReadS GetReservedInstancesExchangeQuoteResponse
$creadsPrec :: Int -> ReadS GetReservedInstancesExchangeQuoteResponse
Prelude.Read, Int -> GetReservedInstancesExchangeQuoteResponse -> ShowS
[GetReservedInstancesExchangeQuoteResponse] -> ShowS
GetReservedInstancesExchangeQuoteResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetReservedInstancesExchangeQuoteResponse] -> ShowS
$cshowList :: [GetReservedInstancesExchangeQuoteResponse] -> ShowS
show :: GetReservedInstancesExchangeQuoteResponse -> String
$cshow :: GetReservedInstancesExchangeQuoteResponse -> String
showsPrec :: Int -> GetReservedInstancesExchangeQuoteResponse -> ShowS
$cshowsPrec :: Int -> GetReservedInstancesExchangeQuoteResponse -> ShowS
Prelude.Show, forall x.
Rep GetReservedInstancesExchangeQuoteResponse x
-> GetReservedInstancesExchangeQuoteResponse
forall x.
GetReservedInstancesExchangeQuoteResponse
-> Rep GetReservedInstancesExchangeQuoteResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetReservedInstancesExchangeQuoteResponse x
-> GetReservedInstancesExchangeQuoteResponse
$cfrom :: forall x.
GetReservedInstancesExchangeQuoteResponse
-> Rep GetReservedInstancesExchangeQuoteResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetReservedInstancesExchangeQuoteResponse' 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:
--
-- 'currencyCode', 'getReservedInstancesExchangeQuoteResponse_currencyCode' - The currency of the transaction.
--
-- 'isValidExchange', 'getReservedInstancesExchangeQuoteResponse_isValidExchange' - If @true@, the exchange is valid. If @false@, the exchange cannot be
-- completed.
--
-- 'outputReservedInstancesWillExpireAt', 'getReservedInstancesExchangeQuoteResponse_outputReservedInstancesWillExpireAt' - The new end date of the reservation term.
--
-- 'paymentDue', 'getReservedInstancesExchangeQuoteResponse_paymentDue' - The total true upfront charge for the exchange.
--
-- 'reservedInstanceValueRollup', 'getReservedInstancesExchangeQuoteResponse_reservedInstanceValueRollup' - The cost associated with the Reserved Instance.
--
-- 'reservedInstanceValueSet', 'getReservedInstancesExchangeQuoteResponse_reservedInstanceValueSet' - The configuration of your Convertible Reserved Instances.
--
-- 'targetConfigurationValueRollup', 'getReservedInstancesExchangeQuoteResponse_targetConfigurationValueRollup' - The cost associated with the Reserved Instance.
--
-- 'targetConfigurationValueSet', 'getReservedInstancesExchangeQuoteResponse_targetConfigurationValueSet' - The values of the target Convertible Reserved Instances.
--
-- 'validationFailureReason', 'getReservedInstancesExchangeQuoteResponse_validationFailureReason' - Describes the reason why the exchange cannot be completed.
--
-- 'httpStatus', 'getReservedInstancesExchangeQuoteResponse_httpStatus' - The response's http status code.
newGetReservedInstancesExchangeQuoteResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetReservedInstancesExchangeQuoteResponse
newGetReservedInstancesExchangeQuoteResponse :: Int -> GetReservedInstancesExchangeQuoteResponse
newGetReservedInstancesExchangeQuoteResponse
  Int
pHttpStatus_ =
    GetReservedInstancesExchangeQuoteResponse'
      { $sel:currencyCode:GetReservedInstancesExchangeQuoteResponse' :: Maybe Text
currencyCode =
          forall a. Maybe a
Prelude.Nothing,
        $sel:isValidExchange:GetReservedInstancesExchangeQuoteResponse' :: Maybe Bool
isValidExchange =
          forall a. Maybe a
Prelude.Nothing,
        $sel:outputReservedInstancesWillExpireAt:GetReservedInstancesExchangeQuoteResponse' :: Maybe ISO8601
outputReservedInstancesWillExpireAt =
          forall a. Maybe a
Prelude.Nothing,
        $sel:paymentDue:GetReservedInstancesExchangeQuoteResponse' :: Maybe Text
paymentDue = forall a. Maybe a
Prelude.Nothing,
        $sel:reservedInstanceValueRollup:GetReservedInstancesExchangeQuoteResponse' :: Maybe ReservationValue
reservedInstanceValueRollup =
          forall a. Maybe a
Prelude.Nothing,
        $sel:reservedInstanceValueSet:GetReservedInstancesExchangeQuoteResponse' :: Maybe [ReservedInstanceReservationValue]
reservedInstanceValueSet =
          forall a. Maybe a
Prelude.Nothing,
        $sel:targetConfigurationValueRollup:GetReservedInstancesExchangeQuoteResponse' :: Maybe ReservationValue
targetConfigurationValueRollup =
          forall a. Maybe a
Prelude.Nothing,
        $sel:targetConfigurationValueSet:GetReservedInstancesExchangeQuoteResponse' :: Maybe [TargetReservationValue]
targetConfigurationValueSet =
          forall a. Maybe a
Prelude.Nothing,
        $sel:validationFailureReason:GetReservedInstancesExchangeQuoteResponse' :: Maybe Text
validationFailureReason =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:GetReservedInstancesExchangeQuoteResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | The currency of the transaction.
getReservedInstancesExchangeQuoteResponse_currencyCode :: Lens.Lens' GetReservedInstancesExchangeQuoteResponse (Prelude.Maybe Prelude.Text)
getReservedInstancesExchangeQuoteResponse_currencyCode :: Lens' GetReservedInstancesExchangeQuoteResponse (Maybe Text)
getReservedInstancesExchangeQuoteResponse_currencyCode = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetReservedInstancesExchangeQuoteResponse' {Maybe Text
currencyCode :: Maybe Text
$sel:currencyCode:GetReservedInstancesExchangeQuoteResponse' :: GetReservedInstancesExchangeQuoteResponse -> Maybe Text
currencyCode} -> Maybe Text
currencyCode) (\s :: GetReservedInstancesExchangeQuoteResponse
s@GetReservedInstancesExchangeQuoteResponse' {} Maybe Text
a -> GetReservedInstancesExchangeQuoteResponse
s {$sel:currencyCode:GetReservedInstancesExchangeQuoteResponse' :: Maybe Text
currencyCode = Maybe Text
a} :: GetReservedInstancesExchangeQuoteResponse)

-- | If @true@, the exchange is valid. If @false@, the exchange cannot be
-- completed.
getReservedInstancesExchangeQuoteResponse_isValidExchange :: Lens.Lens' GetReservedInstancesExchangeQuoteResponse (Prelude.Maybe Prelude.Bool)
getReservedInstancesExchangeQuoteResponse_isValidExchange :: Lens' GetReservedInstancesExchangeQuoteResponse (Maybe Bool)
getReservedInstancesExchangeQuoteResponse_isValidExchange = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetReservedInstancesExchangeQuoteResponse' {Maybe Bool
isValidExchange :: Maybe Bool
$sel:isValidExchange:GetReservedInstancesExchangeQuoteResponse' :: GetReservedInstancesExchangeQuoteResponse -> Maybe Bool
isValidExchange} -> Maybe Bool
isValidExchange) (\s :: GetReservedInstancesExchangeQuoteResponse
s@GetReservedInstancesExchangeQuoteResponse' {} Maybe Bool
a -> GetReservedInstancesExchangeQuoteResponse
s {$sel:isValidExchange:GetReservedInstancesExchangeQuoteResponse' :: Maybe Bool
isValidExchange = Maybe Bool
a} :: GetReservedInstancesExchangeQuoteResponse)

-- | The new end date of the reservation term.
getReservedInstancesExchangeQuoteResponse_outputReservedInstancesWillExpireAt :: Lens.Lens' GetReservedInstancesExchangeQuoteResponse (Prelude.Maybe Prelude.UTCTime)
getReservedInstancesExchangeQuoteResponse_outputReservedInstancesWillExpireAt :: Lens' GetReservedInstancesExchangeQuoteResponse (Maybe UTCTime)
getReservedInstancesExchangeQuoteResponse_outputReservedInstancesWillExpireAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetReservedInstancesExchangeQuoteResponse' {Maybe ISO8601
outputReservedInstancesWillExpireAt :: Maybe ISO8601
$sel:outputReservedInstancesWillExpireAt:GetReservedInstancesExchangeQuoteResponse' :: GetReservedInstancesExchangeQuoteResponse -> Maybe ISO8601
outputReservedInstancesWillExpireAt} -> Maybe ISO8601
outputReservedInstancesWillExpireAt) (\s :: GetReservedInstancesExchangeQuoteResponse
s@GetReservedInstancesExchangeQuoteResponse' {} Maybe ISO8601
a -> GetReservedInstancesExchangeQuoteResponse
s {$sel:outputReservedInstancesWillExpireAt:GetReservedInstancesExchangeQuoteResponse' :: Maybe ISO8601
outputReservedInstancesWillExpireAt = Maybe ISO8601
a} :: GetReservedInstancesExchangeQuoteResponse) 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 (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The total true upfront charge for the exchange.
getReservedInstancesExchangeQuoteResponse_paymentDue :: Lens.Lens' GetReservedInstancesExchangeQuoteResponse (Prelude.Maybe Prelude.Text)
getReservedInstancesExchangeQuoteResponse_paymentDue :: Lens' GetReservedInstancesExchangeQuoteResponse (Maybe Text)
getReservedInstancesExchangeQuoteResponse_paymentDue = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetReservedInstancesExchangeQuoteResponse' {Maybe Text
paymentDue :: Maybe Text
$sel:paymentDue:GetReservedInstancesExchangeQuoteResponse' :: GetReservedInstancesExchangeQuoteResponse -> Maybe Text
paymentDue} -> Maybe Text
paymentDue) (\s :: GetReservedInstancesExchangeQuoteResponse
s@GetReservedInstancesExchangeQuoteResponse' {} Maybe Text
a -> GetReservedInstancesExchangeQuoteResponse
s {$sel:paymentDue:GetReservedInstancesExchangeQuoteResponse' :: Maybe Text
paymentDue = Maybe Text
a} :: GetReservedInstancesExchangeQuoteResponse)

-- | The cost associated with the Reserved Instance.
getReservedInstancesExchangeQuoteResponse_reservedInstanceValueRollup :: Lens.Lens' GetReservedInstancesExchangeQuoteResponse (Prelude.Maybe ReservationValue)
getReservedInstancesExchangeQuoteResponse_reservedInstanceValueRollup :: Lens'
  GetReservedInstancesExchangeQuoteResponse (Maybe ReservationValue)
getReservedInstancesExchangeQuoteResponse_reservedInstanceValueRollup = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetReservedInstancesExchangeQuoteResponse' {Maybe ReservationValue
reservedInstanceValueRollup :: Maybe ReservationValue
$sel:reservedInstanceValueRollup:GetReservedInstancesExchangeQuoteResponse' :: GetReservedInstancesExchangeQuoteResponse -> Maybe ReservationValue
reservedInstanceValueRollup} -> Maybe ReservationValue
reservedInstanceValueRollup) (\s :: GetReservedInstancesExchangeQuoteResponse
s@GetReservedInstancesExchangeQuoteResponse' {} Maybe ReservationValue
a -> GetReservedInstancesExchangeQuoteResponse
s {$sel:reservedInstanceValueRollup:GetReservedInstancesExchangeQuoteResponse' :: Maybe ReservationValue
reservedInstanceValueRollup = Maybe ReservationValue
a} :: GetReservedInstancesExchangeQuoteResponse)

-- | The configuration of your Convertible Reserved Instances.
getReservedInstancesExchangeQuoteResponse_reservedInstanceValueSet :: Lens.Lens' GetReservedInstancesExchangeQuoteResponse (Prelude.Maybe [ReservedInstanceReservationValue])
getReservedInstancesExchangeQuoteResponse_reservedInstanceValueSet :: Lens'
  GetReservedInstancesExchangeQuoteResponse
  (Maybe [ReservedInstanceReservationValue])
getReservedInstancesExchangeQuoteResponse_reservedInstanceValueSet = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetReservedInstancesExchangeQuoteResponse' {Maybe [ReservedInstanceReservationValue]
reservedInstanceValueSet :: Maybe [ReservedInstanceReservationValue]
$sel:reservedInstanceValueSet:GetReservedInstancesExchangeQuoteResponse' :: GetReservedInstancesExchangeQuoteResponse
-> Maybe [ReservedInstanceReservationValue]
reservedInstanceValueSet} -> Maybe [ReservedInstanceReservationValue]
reservedInstanceValueSet) (\s :: GetReservedInstancesExchangeQuoteResponse
s@GetReservedInstancesExchangeQuoteResponse' {} Maybe [ReservedInstanceReservationValue]
a -> GetReservedInstancesExchangeQuoteResponse
s {$sel:reservedInstanceValueSet:GetReservedInstancesExchangeQuoteResponse' :: Maybe [ReservedInstanceReservationValue]
reservedInstanceValueSet = Maybe [ReservedInstanceReservationValue]
a} :: GetReservedInstancesExchangeQuoteResponse) 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 cost associated with the Reserved Instance.
getReservedInstancesExchangeQuoteResponse_targetConfigurationValueRollup :: Lens.Lens' GetReservedInstancesExchangeQuoteResponse (Prelude.Maybe ReservationValue)
getReservedInstancesExchangeQuoteResponse_targetConfigurationValueRollup :: Lens'
  GetReservedInstancesExchangeQuoteResponse (Maybe ReservationValue)
getReservedInstancesExchangeQuoteResponse_targetConfigurationValueRollup = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetReservedInstancesExchangeQuoteResponse' {Maybe ReservationValue
targetConfigurationValueRollup :: Maybe ReservationValue
$sel:targetConfigurationValueRollup:GetReservedInstancesExchangeQuoteResponse' :: GetReservedInstancesExchangeQuoteResponse -> Maybe ReservationValue
targetConfigurationValueRollup} -> Maybe ReservationValue
targetConfigurationValueRollup) (\s :: GetReservedInstancesExchangeQuoteResponse
s@GetReservedInstancesExchangeQuoteResponse' {} Maybe ReservationValue
a -> GetReservedInstancesExchangeQuoteResponse
s {$sel:targetConfigurationValueRollup:GetReservedInstancesExchangeQuoteResponse' :: Maybe ReservationValue
targetConfigurationValueRollup = Maybe ReservationValue
a} :: GetReservedInstancesExchangeQuoteResponse)

-- | The values of the target Convertible Reserved Instances.
getReservedInstancesExchangeQuoteResponse_targetConfigurationValueSet :: Lens.Lens' GetReservedInstancesExchangeQuoteResponse (Prelude.Maybe [TargetReservationValue])
getReservedInstancesExchangeQuoteResponse_targetConfigurationValueSet :: Lens'
  GetReservedInstancesExchangeQuoteResponse
  (Maybe [TargetReservationValue])
getReservedInstancesExchangeQuoteResponse_targetConfigurationValueSet = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetReservedInstancesExchangeQuoteResponse' {Maybe [TargetReservationValue]
targetConfigurationValueSet :: Maybe [TargetReservationValue]
$sel:targetConfigurationValueSet:GetReservedInstancesExchangeQuoteResponse' :: GetReservedInstancesExchangeQuoteResponse
-> Maybe [TargetReservationValue]
targetConfigurationValueSet} -> Maybe [TargetReservationValue]
targetConfigurationValueSet) (\s :: GetReservedInstancesExchangeQuoteResponse
s@GetReservedInstancesExchangeQuoteResponse' {} Maybe [TargetReservationValue]
a -> GetReservedInstancesExchangeQuoteResponse
s {$sel:targetConfigurationValueSet:GetReservedInstancesExchangeQuoteResponse' :: Maybe [TargetReservationValue]
targetConfigurationValueSet = Maybe [TargetReservationValue]
a} :: GetReservedInstancesExchangeQuoteResponse) 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

-- | Describes the reason why the exchange cannot be completed.
getReservedInstancesExchangeQuoteResponse_validationFailureReason :: Lens.Lens' GetReservedInstancesExchangeQuoteResponse (Prelude.Maybe Prelude.Text)
getReservedInstancesExchangeQuoteResponse_validationFailureReason :: Lens' GetReservedInstancesExchangeQuoteResponse (Maybe Text)
getReservedInstancesExchangeQuoteResponse_validationFailureReason = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetReservedInstancesExchangeQuoteResponse' {Maybe Text
validationFailureReason :: Maybe Text
$sel:validationFailureReason:GetReservedInstancesExchangeQuoteResponse' :: GetReservedInstancesExchangeQuoteResponse -> Maybe Text
validationFailureReason} -> Maybe Text
validationFailureReason) (\s :: GetReservedInstancesExchangeQuoteResponse
s@GetReservedInstancesExchangeQuoteResponse' {} Maybe Text
a -> GetReservedInstancesExchangeQuoteResponse
s {$sel:validationFailureReason:GetReservedInstancesExchangeQuoteResponse' :: Maybe Text
validationFailureReason = Maybe Text
a} :: GetReservedInstancesExchangeQuoteResponse)

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

instance
  Prelude.NFData
    GetReservedInstancesExchangeQuoteResponse
  where
  rnf :: GetReservedInstancesExchangeQuoteResponse -> ()
rnf GetReservedInstancesExchangeQuoteResponse' {Int
Maybe Bool
Maybe [ReservedInstanceReservationValue]
Maybe [TargetReservationValue]
Maybe Text
Maybe ISO8601
Maybe ReservationValue
httpStatus :: Int
validationFailureReason :: Maybe Text
targetConfigurationValueSet :: Maybe [TargetReservationValue]
targetConfigurationValueRollup :: Maybe ReservationValue
reservedInstanceValueSet :: Maybe [ReservedInstanceReservationValue]
reservedInstanceValueRollup :: Maybe ReservationValue
paymentDue :: Maybe Text
outputReservedInstancesWillExpireAt :: Maybe ISO8601
isValidExchange :: Maybe Bool
currencyCode :: Maybe Text
$sel:httpStatus:GetReservedInstancesExchangeQuoteResponse' :: GetReservedInstancesExchangeQuoteResponse -> Int
$sel:validationFailureReason:GetReservedInstancesExchangeQuoteResponse' :: GetReservedInstancesExchangeQuoteResponse -> Maybe Text
$sel:targetConfigurationValueSet:GetReservedInstancesExchangeQuoteResponse' :: GetReservedInstancesExchangeQuoteResponse
-> Maybe [TargetReservationValue]
$sel:targetConfigurationValueRollup:GetReservedInstancesExchangeQuoteResponse' :: GetReservedInstancesExchangeQuoteResponse -> Maybe ReservationValue
$sel:reservedInstanceValueSet:GetReservedInstancesExchangeQuoteResponse' :: GetReservedInstancesExchangeQuoteResponse
-> Maybe [ReservedInstanceReservationValue]
$sel:reservedInstanceValueRollup:GetReservedInstancesExchangeQuoteResponse' :: GetReservedInstancesExchangeQuoteResponse -> Maybe ReservationValue
$sel:paymentDue:GetReservedInstancesExchangeQuoteResponse' :: GetReservedInstancesExchangeQuoteResponse -> Maybe Text
$sel:outputReservedInstancesWillExpireAt:GetReservedInstancesExchangeQuoteResponse' :: GetReservedInstancesExchangeQuoteResponse -> Maybe ISO8601
$sel:isValidExchange:GetReservedInstancesExchangeQuoteResponse' :: GetReservedInstancesExchangeQuoteResponse -> Maybe Bool
$sel:currencyCode:GetReservedInstancesExchangeQuoteResponse' :: GetReservedInstancesExchangeQuoteResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
currencyCode
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
isValidExchange
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
outputReservedInstancesWillExpireAt
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
paymentDue
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ReservationValue
reservedInstanceValueRollup
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [ReservedInstanceReservationValue]
reservedInstanceValueSet
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ReservationValue
targetConfigurationValueRollup
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [TargetReservationValue]
targetConfigurationValueSet
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
validationFailureReason
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus