amazonka-ec2-1.4.4: gen/Network/AWS/EC2/GetHostReservationPurchasePreview.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.GetHostReservationPurchasePreview
-- Copyright : (c) 2013-2016 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Preview a reservation purchase with configurations that match those of your Dedicated Host. You must have active Dedicated Hosts in your account before you purchase a reservation.
--
-- This is a preview of the < PurchaseHostReservation> action and does not result in the offering being purchased.
module Network.AWS.EC2.GetHostReservationPurchasePreview
(
-- * Creating a Request
getHostReservationPurchasePreview
, GetHostReservationPurchasePreview
-- * Request Lenses
, ghrppOfferingId
, ghrppHostIdSet
-- * Destructuring the Response
, getHostReservationPurchasePreviewResponse
, GetHostReservationPurchasePreviewResponse
-- * Response Lenses
, ghrpprsCurrencyCode
, ghrpprsTotalHourlyPrice
, ghrpprsTotalUpfrontPrice
, ghrpprsPurchase
, ghrpprsResponseStatus
) 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
-- | /See:/ 'getHostReservationPurchasePreview' smart constructor.
data GetHostReservationPurchasePreview = GetHostReservationPurchasePreview'
{ _ghrppOfferingId :: !Text
, _ghrppHostIdSet :: ![Text]
} deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'GetHostReservationPurchasePreview' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'ghrppOfferingId'
--
-- * 'ghrppHostIdSet'
getHostReservationPurchasePreview
:: Text -- ^ 'ghrppOfferingId'
-> GetHostReservationPurchasePreview
getHostReservationPurchasePreview pOfferingId_ =
GetHostReservationPurchasePreview'
{ _ghrppOfferingId = pOfferingId_
, _ghrppHostIdSet = mempty
}
-- | The offering ID of the reservation.
ghrppOfferingId :: Lens' GetHostReservationPurchasePreview Text
ghrppOfferingId = lens _ghrppOfferingId (\ s a -> s{_ghrppOfferingId = a});
-- | The ID\/s of the Dedicated Host\/s that the reservation will be associated with.
ghrppHostIdSet :: Lens' GetHostReservationPurchasePreview [Text]
ghrppHostIdSet = lens _ghrppHostIdSet (\ s a -> s{_ghrppHostIdSet = a}) . _Coerce;
instance AWSRequest GetHostReservationPurchasePreview
where
type Rs GetHostReservationPurchasePreview =
GetHostReservationPurchasePreviewResponse
request = postQuery ec2
response
= receiveXML
(\ s h x ->
GetHostReservationPurchasePreviewResponse' <$>
(x .@? "currencyCode") <*> (x .@? "totalHourlyPrice")
<*> (x .@? "totalUpfrontPrice")
<*>
(x .@? "purchase" .!@ mempty >>=
may (parseXMLList "member"))
<*> (pure (fromEnum s)))
instance Hashable GetHostReservationPurchasePreview
instance NFData GetHostReservationPurchasePreview
instance ToHeaders GetHostReservationPurchasePreview
where
toHeaders = const mempty
instance ToPath GetHostReservationPurchasePreview
where
toPath = const "/"
instance ToQuery GetHostReservationPurchasePreview
where
toQuery GetHostReservationPurchasePreview'{..}
= mconcat
["Action" =:
("GetHostReservationPurchasePreview" :: ByteString),
"Version" =: ("2016-04-01" :: ByteString),
"OfferingId" =: _ghrppOfferingId,
toQueryList "HostIdSet" _ghrppHostIdSet]
-- | /See:/ 'getHostReservationPurchasePreviewResponse' smart constructor.
data GetHostReservationPurchasePreviewResponse = GetHostReservationPurchasePreviewResponse'
{ _ghrpprsCurrencyCode :: !(Maybe CurrencyCodeValues)
, _ghrpprsTotalHourlyPrice :: !(Maybe Text)
, _ghrpprsTotalUpfrontPrice :: !(Maybe Text)
, _ghrpprsPurchase :: !(Maybe [Purchase])
, _ghrpprsResponseStatus :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'GetHostReservationPurchasePreviewResponse' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'ghrpprsCurrencyCode'
--
-- * 'ghrpprsTotalHourlyPrice'
--
-- * 'ghrpprsTotalUpfrontPrice'
--
-- * 'ghrpprsPurchase'
--
-- * 'ghrpprsResponseStatus'
getHostReservationPurchasePreviewResponse
:: Int -- ^ 'ghrpprsResponseStatus'
-> GetHostReservationPurchasePreviewResponse
getHostReservationPurchasePreviewResponse pResponseStatus_ =
GetHostReservationPurchasePreviewResponse'
{ _ghrpprsCurrencyCode = Nothing
, _ghrpprsTotalHourlyPrice = Nothing
, _ghrpprsTotalUpfrontPrice = Nothing
, _ghrpprsPurchase = Nothing
, _ghrpprsResponseStatus = pResponseStatus_
}
-- | The currency in which the 'totalUpfrontPrice' and 'totalHourlyPrice' amounts are specified. At this time, the only supported currency is 'USD'.
ghrpprsCurrencyCode :: Lens' GetHostReservationPurchasePreviewResponse (Maybe CurrencyCodeValues)
ghrpprsCurrencyCode = lens _ghrpprsCurrencyCode (\ s a -> s{_ghrpprsCurrencyCode = a});
-- | The potential total hourly price of the reservation per hour.
ghrpprsTotalHourlyPrice :: Lens' GetHostReservationPurchasePreviewResponse (Maybe Text)
ghrpprsTotalHourlyPrice = lens _ghrpprsTotalHourlyPrice (\ s a -> s{_ghrpprsTotalHourlyPrice = a});
-- | The potential total upfront price. This is billed immediately.
ghrpprsTotalUpfrontPrice :: Lens' GetHostReservationPurchasePreviewResponse (Maybe Text)
ghrpprsTotalUpfrontPrice = lens _ghrpprsTotalUpfrontPrice (\ s a -> s{_ghrpprsTotalUpfrontPrice = a});
-- | The purchase information of the Dedicated Host Reservation and the Dedicated Hosts associated with it.
ghrpprsPurchase :: Lens' GetHostReservationPurchasePreviewResponse [Purchase]
ghrpprsPurchase = lens _ghrpprsPurchase (\ s a -> s{_ghrpprsPurchase = a}) . _Default . _Coerce;
-- | The response status code.
ghrpprsResponseStatus :: Lens' GetHostReservationPurchasePreviewResponse Int
ghrpprsResponseStatus = lens _ghrpprsResponseStatus (\ s a -> s{_ghrpprsResponseStatus = a});
instance NFData
GetHostReservationPurchasePreviewResponse