amazonka-ec2-1.5.0: gen/Network/AWS/EC2/GetReservedInstancesExchangeQuote.hs
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-- Derived from AWS service descriptions, licensed under Apache 2.0.
-- |
-- Module : Network.AWS.EC2.GetReservedInstancesExchangeQuote
-- Copyright : (c) 2013-2017 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- 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 Network.AWS.EC2.GetReservedInstancesExchangeQuote
(
-- * Creating a Request
getReservedInstancesExchangeQuote
, GetReservedInstancesExchangeQuote
-- * Request Lenses
, grieqTargetConfigurations
, grieqDryRun
, grieqReservedInstanceIds
-- * Destructuring the Response
, getReservedInstancesExchangeQuoteResponse
, GetReservedInstancesExchangeQuoteResponse
-- * Response Lenses
, grieqrsValidationFailureReason
, grieqrsTargetConfigurationValueRollup
, grieqrsCurrencyCode
, grieqrsTargetConfigurationValueSet
, grieqrsReservedInstanceValueRollup
, grieqrsOutputReservedInstancesWillExpireAt
, grieqrsReservedInstanceValueSet
, grieqrsIsValidExchange
, grieqrsPaymentDue
, grieqrsResponseStatus
) where
import Network.AWS.EC2.Types
import Network.AWS.EC2.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
-- | Contains the parameters for GetReservedInstanceExchangeQuote.
--
--
--
-- /See:/ 'getReservedInstancesExchangeQuote' smart constructor.
data GetReservedInstancesExchangeQuote = GetReservedInstancesExchangeQuote'
{ _grieqTargetConfigurations :: !(Maybe [TargetConfigurationRequest])
, _grieqDryRun :: !(Maybe Bool)
, _grieqReservedInstanceIds :: ![Text]
} deriving (Eq, Read, Show, Data, Typeable, Generic)
-- | Creates a value of 'GetReservedInstancesExchangeQuote' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'grieqTargetConfigurations' - The configuration of the target Convertible Reserved Instance to exchange for your current Convertible Reserved Instances.
--
-- * 'grieqDryRun' - 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@ .
--
-- * 'grieqReservedInstanceIds' - The IDs of the Convertible Reserved Instances to exchange.
getReservedInstancesExchangeQuote
:: GetReservedInstancesExchangeQuote
getReservedInstancesExchangeQuote =
GetReservedInstancesExchangeQuote'
{ _grieqTargetConfigurations = Nothing
, _grieqDryRun = Nothing
, _grieqReservedInstanceIds = mempty
}
-- | The configuration of the target Convertible Reserved Instance to exchange for your current Convertible Reserved Instances.
grieqTargetConfigurations :: Lens' GetReservedInstancesExchangeQuote [TargetConfigurationRequest]
grieqTargetConfigurations = lens _grieqTargetConfigurations (\ s a -> s{_grieqTargetConfigurations = a}) . _Default . _Coerce;
-- | 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@ .
grieqDryRun :: Lens' GetReservedInstancesExchangeQuote (Maybe Bool)
grieqDryRun = lens _grieqDryRun (\ s a -> s{_grieqDryRun = a});
-- | The IDs of the Convertible Reserved Instances to exchange.
grieqReservedInstanceIds :: Lens' GetReservedInstancesExchangeQuote [Text]
grieqReservedInstanceIds = lens _grieqReservedInstanceIds (\ s a -> s{_grieqReservedInstanceIds = a}) . _Coerce;
instance AWSRequest GetReservedInstancesExchangeQuote
where
type Rs GetReservedInstancesExchangeQuote =
GetReservedInstancesExchangeQuoteResponse
request = postQuery ec2
response
= receiveXML
(\ s h x ->
GetReservedInstancesExchangeQuoteResponse' <$>
(x .@? "validationFailureReason") <*>
(x .@? "targetConfigurationValueRollup")
<*> (x .@? "currencyCode")
<*>
(x .@? "targetConfigurationValueSet" .!@ mempty >>=
may (parseXMLList "item"))
<*> (x .@? "reservedInstanceValueRollup")
<*> (x .@? "outputReservedInstancesWillExpireAt")
<*>
(x .@? "reservedInstanceValueSet" .!@ mempty >>=
may (parseXMLList "item"))
<*> (x .@? "isValidExchange")
<*> (x .@? "paymentDue")
<*> (pure (fromEnum s)))
instance Hashable GetReservedInstancesExchangeQuote
where
instance NFData GetReservedInstancesExchangeQuote
where
instance ToHeaders GetReservedInstancesExchangeQuote
where
toHeaders = const mempty
instance ToPath GetReservedInstancesExchangeQuote
where
toPath = const "/"
instance ToQuery GetReservedInstancesExchangeQuote
where
toQuery GetReservedInstancesExchangeQuote'{..}
= mconcat
["Action" =:
("GetReservedInstancesExchangeQuote" :: ByteString),
"Version" =: ("2016-11-15" :: ByteString),
toQuery
(toQueryList "TargetConfiguration" <$>
_grieqTargetConfigurations),
"DryRun" =: _grieqDryRun,
toQueryList "ReservedInstanceId"
_grieqReservedInstanceIds]
-- | Contains the output of GetReservedInstancesExchangeQuote.
--
--
--
-- /See:/ 'getReservedInstancesExchangeQuoteResponse' smart constructor.
data GetReservedInstancesExchangeQuoteResponse = GetReservedInstancesExchangeQuoteResponse'
{ _grieqrsValidationFailureReason :: !(Maybe Text)
, _grieqrsTargetConfigurationValueRollup :: !(Maybe ReservationValue)
, _grieqrsCurrencyCode :: !(Maybe Text)
, _grieqrsTargetConfigurationValueSet :: !(Maybe [TargetReservationValue])
, _grieqrsReservedInstanceValueRollup :: !(Maybe ReservationValue)
, _grieqrsOutputReservedInstancesWillExpireAt :: !(Maybe ISO8601)
, _grieqrsReservedInstanceValueSet :: !(Maybe [ReservedInstanceReservationValue])
, _grieqrsIsValidExchange :: !(Maybe Bool)
, _grieqrsPaymentDue :: !(Maybe Text)
, _grieqrsResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
-- | Creates a value of 'GetReservedInstancesExchangeQuoteResponse' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'grieqrsValidationFailureReason' - Describes the reason why the exchange cannot be completed.
--
-- * 'grieqrsTargetConfigurationValueRollup' - The cost associated with the Reserved Instance.
--
-- * 'grieqrsCurrencyCode' - The currency of the transaction.
--
-- * 'grieqrsTargetConfigurationValueSet' - The values of the target Convertible Reserved Instances.
--
-- * 'grieqrsReservedInstanceValueRollup' - The cost associated with the Reserved Instance.
--
-- * 'grieqrsOutputReservedInstancesWillExpireAt' - The new end date of the reservation term.
--
-- * 'grieqrsReservedInstanceValueSet' - The configuration of your Convertible Reserved Instances.
--
-- * 'grieqrsIsValidExchange' - If @true@ , the exchange is valid. If @false@ , the exchange cannot be completed.
--
-- * 'grieqrsPaymentDue' - The total true upfront charge for the exchange.
--
-- * 'grieqrsResponseStatus' - -- | The response status code.
getReservedInstancesExchangeQuoteResponse
:: Int -- ^ 'grieqrsResponseStatus'
-> GetReservedInstancesExchangeQuoteResponse
getReservedInstancesExchangeQuoteResponse pResponseStatus_ =
GetReservedInstancesExchangeQuoteResponse'
{ _grieqrsValidationFailureReason = Nothing
, _grieqrsTargetConfigurationValueRollup = Nothing
, _grieqrsCurrencyCode = Nothing
, _grieqrsTargetConfigurationValueSet = Nothing
, _grieqrsReservedInstanceValueRollup = Nothing
, _grieqrsOutputReservedInstancesWillExpireAt = Nothing
, _grieqrsReservedInstanceValueSet = Nothing
, _grieqrsIsValidExchange = Nothing
, _grieqrsPaymentDue = Nothing
, _grieqrsResponseStatus = pResponseStatus_
}
-- | Describes the reason why the exchange cannot be completed.
grieqrsValidationFailureReason :: Lens' GetReservedInstancesExchangeQuoteResponse (Maybe Text)
grieqrsValidationFailureReason = lens _grieqrsValidationFailureReason (\ s a -> s{_grieqrsValidationFailureReason = a});
-- | The cost associated with the Reserved Instance.
grieqrsTargetConfigurationValueRollup :: Lens' GetReservedInstancesExchangeQuoteResponse (Maybe ReservationValue)
grieqrsTargetConfigurationValueRollup = lens _grieqrsTargetConfigurationValueRollup (\ s a -> s{_grieqrsTargetConfigurationValueRollup = a});
-- | The currency of the transaction.
grieqrsCurrencyCode :: Lens' GetReservedInstancesExchangeQuoteResponse (Maybe Text)
grieqrsCurrencyCode = lens _grieqrsCurrencyCode (\ s a -> s{_grieqrsCurrencyCode = a});
-- | The values of the target Convertible Reserved Instances.
grieqrsTargetConfigurationValueSet :: Lens' GetReservedInstancesExchangeQuoteResponse [TargetReservationValue]
grieqrsTargetConfigurationValueSet = lens _grieqrsTargetConfigurationValueSet (\ s a -> s{_grieqrsTargetConfigurationValueSet = a}) . _Default . _Coerce;
-- | The cost associated with the Reserved Instance.
grieqrsReservedInstanceValueRollup :: Lens' GetReservedInstancesExchangeQuoteResponse (Maybe ReservationValue)
grieqrsReservedInstanceValueRollup = lens _grieqrsReservedInstanceValueRollup (\ s a -> s{_grieqrsReservedInstanceValueRollup = a});
-- | The new end date of the reservation term.
grieqrsOutputReservedInstancesWillExpireAt :: Lens' GetReservedInstancesExchangeQuoteResponse (Maybe UTCTime)
grieqrsOutputReservedInstancesWillExpireAt = lens _grieqrsOutputReservedInstancesWillExpireAt (\ s a -> s{_grieqrsOutputReservedInstancesWillExpireAt = a}) . mapping _Time;
-- | The configuration of your Convertible Reserved Instances.
grieqrsReservedInstanceValueSet :: Lens' GetReservedInstancesExchangeQuoteResponse [ReservedInstanceReservationValue]
grieqrsReservedInstanceValueSet = lens _grieqrsReservedInstanceValueSet (\ s a -> s{_grieqrsReservedInstanceValueSet = a}) . _Default . _Coerce;
-- | If @true@ , the exchange is valid. If @false@ , the exchange cannot be completed.
grieqrsIsValidExchange :: Lens' GetReservedInstancesExchangeQuoteResponse (Maybe Bool)
grieqrsIsValidExchange = lens _grieqrsIsValidExchange (\ s a -> s{_grieqrsIsValidExchange = a});
-- | The total true upfront charge for the exchange.
grieqrsPaymentDue :: Lens' GetReservedInstancesExchangeQuoteResponse (Maybe Text)
grieqrsPaymentDue = lens _grieqrsPaymentDue (\ s a -> s{_grieqrsPaymentDue = a});
-- | -- | The response status code.
grieqrsResponseStatus :: Lens' GetReservedInstancesExchangeQuoteResponse Int
grieqrsResponseStatus = lens _grieqrsResponseStatus (\ s a -> s{_grieqrsResponseStatus = a});
instance NFData
GetReservedInstancesExchangeQuoteResponse
where