{-# 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.CreateReservedInstancesListing -- Copyright : (c) 2013-2016 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Creates a listing for Amazon EC2 Reserved Instances to be sold in the Reserved Instance Marketplace. You can submit one Reserved Instance listing at a time. To get a list of your Reserved Instances, you can use the < DescribeReservedInstances> operation. -- -- The Reserved Instance Marketplace matches sellers who want to resell Reserved Instance capacity that they no longer need with buyers who want to purchase additional capacity. Reserved Instances bought and sold through the Reserved Instance Marketplace work like any other Reserved Instances. -- -- To sell your Reserved Instances, you must first register as a seller in the Reserved Instance Marketplace. After completing the registration process, you can create a Reserved Instance Marketplace listing of some or all of your Reserved Instances, and specify the upfront price to receive for them. Your Reserved Instance listings then become available for purchase. To view the details of your Reserved Instance listing, you can use the < DescribeReservedInstancesListings> operation. -- -- For more information, see in the /Amazon Elastic Compute Cloud User Guide/. module Network.AWS.EC2.CreateReservedInstancesListing ( -- * Creating a Request createReservedInstancesListing , CreateReservedInstancesListing -- * Request Lenses , crilReservedInstancesId , crilInstanceCount , crilPriceSchedules , crilClientToken -- * Destructuring the Response , createReservedInstancesListingResponse , CreateReservedInstancesListingResponse -- * Response Lenses , crersReservedInstancesListings , crersResponseStatus ) 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 CreateReservedInstancesListing. -- -- /See:/ 'createReservedInstancesListing' smart constructor. data CreateReservedInstancesListing = CreateReservedInstancesListing' { _crilReservedInstancesId :: !Text , _crilInstanceCount :: !Int , _crilPriceSchedules :: ![PriceScheduleSpecification] , _crilClientToken :: !Text } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'CreateReservedInstancesListing' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'crilReservedInstancesId' -- -- * 'crilInstanceCount' -- -- * 'crilPriceSchedules' -- -- * 'crilClientToken' createReservedInstancesListing :: Text -- ^ 'crilReservedInstancesId' -> Int -- ^ 'crilInstanceCount' -> Text -- ^ 'crilClientToken' -> CreateReservedInstancesListing createReservedInstancesListing pReservedInstancesId_ pInstanceCount_ pClientToken_ = CreateReservedInstancesListing' { _crilReservedInstancesId = pReservedInstancesId_ , _crilInstanceCount = pInstanceCount_ , _crilPriceSchedules = mempty , _crilClientToken = pClientToken_ } -- | The ID of the active Reserved Instance. crilReservedInstancesId :: Lens' CreateReservedInstancesListing Text crilReservedInstancesId = lens _crilReservedInstancesId (\ s a -> s{_crilReservedInstancesId = a}); -- | The number of instances that are a part of a Reserved Instance account to be listed in the Reserved Instance Marketplace. This number should be less than or equal to the instance count associated with the Reserved Instance ID specified in this call. crilInstanceCount :: Lens' CreateReservedInstancesListing Int crilInstanceCount = lens _crilInstanceCount (\ s a -> s{_crilInstanceCount = a}); -- | A list specifying the price of the Reserved Instance for each month remaining in the Reserved Instance term. crilPriceSchedules :: Lens' CreateReservedInstancesListing [PriceScheduleSpecification] crilPriceSchedules = lens _crilPriceSchedules (\ s a -> s{_crilPriceSchedules = a}) . _Coerce; -- | Unique, case-sensitive identifier you provide to ensure idempotency of your listings. This helps avoid duplicate listings. For more information, see . crilClientToken :: Lens' CreateReservedInstancesListing Text crilClientToken = lens _crilClientToken (\ s a -> s{_crilClientToken = a}); instance AWSRequest CreateReservedInstancesListing where type Rs CreateReservedInstancesListing = CreateReservedInstancesListingResponse request = postQuery ec2 response = receiveXML (\ s h x -> CreateReservedInstancesListingResponse' <$> (x .@? "reservedInstancesListingsSet" .!@ mempty >>= may (parseXMLList "item")) <*> (pure (fromEnum s))) instance Hashable CreateReservedInstancesListing instance NFData CreateReservedInstancesListing instance ToHeaders CreateReservedInstancesListing where toHeaders = const mempty instance ToPath CreateReservedInstancesListing where toPath = const "/" instance ToQuery CreateReservedInstancesListing where toQuery CreateReservedInstancesListing'{..} = mconcat ["Action" =: ("CreateReservedInstancesListing" :: ByteString), "Version" =: ("2016-04-01" :: ByteString), "ReservedInstancesId" =: _crilReservedInstancesId, "InstanceCount" =: _crilInstanceCount, toQueryList "PriceSchedules" _crilPriceSchedules, "ClientToken" =: _crilClientToken] -- | Contains the output of CreateReservedInstancesListing. -- -- /See:/ 'createReservedInstancesListingResponse' smart constructor. data CreateReservedInstancesListingResponse = CreateReservedInstancesListingResponse' { _crersReservedInstancesListings :: !(Maybe [ReservedInstancesListing]) , _crersResponseStatus :: !Int } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'CreateReservedInstancesListingResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'crersReservedInstancesListings' -- -- * 'crersResponseStatus' createReservedInstancesListingResponse :: Int -- ^ 'crersResponseStatus' -> CreateReservedInstancesListingResponse createReservedInstancesListingResponse pResponseStatus_ = CreateReservedInstancesListingResponse' { _crersReservedInstancesListings = Nothing , _crersResponseStatus = pResponseStatus_ } -- | Information about the Reserved Instance listing. crersReservedInstancesListings :: Lens' CreateReservedInstancesListingResponse [ReservedInstancesListing] crersReservedInstancesListings = lens _crersReservedInstancesListings (\ s a -> s{_crersReservedInstancesListings = a}) . _Default . _Coerce; -- | The response status code. crersResponseStatus :: Lens' CreateReservedInstancesListingResponse Int crersResponseStatus = lens _crersResponseStatus (\ s a -> s{_crersResponseStatus = a}); instance NFData CreateReservedInstancesListingResponse