{-# 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.PurchaseScheduledInstances -- Copyright : (c) 2013-2016 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Purchases one or more Scheduled Instances with the specified schedule. -- -- Scheduled Instances enable you to purchase Amazon EC2 compute capacity -- by the hour for a one-year term. Before you can purchase a Scheduled -- Instance, you must call < DescribeScheduledInstanceAvailability> to -- check for available schedules and obtain a purchase token. module Network.AWS.EC2.PurchaseScheduledInstances ( -- * Creating a Request purchaseScheduledInstances , PurchaseScheduledInstances -- * Request Lenses , psiClientToken , psiDryRun , psiPurchaseRequests -- * Destructuring the Response , purchaseScheduledInstancesResponse , PurchaseScheduledInstancesResponse -- * Response Lenses , psirsScheduledInstanceSet , psirsResponseStatus ) 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 PurchaseScheduledInstances. -- -- /See:/ 'purchaseScheduledInstances' smart constructor. data PurchaseScheduledInstances = PurchaseScheduledInstances' { _psiClientToken :: !(Maybe Text) , _psiDryRun :: !(Maybe Bool) , _psiPurchaseRequests :: !(List1 PurchaseRequest) } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'PurchaseScheduledInstances' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'psiClientToken' -- -- * 'psiDryRun' -- -- * 'psiPurchaseRequests' purchaseScheduledInstances :: NonEmpty PurchaseRequest -- ^ 'psiPurchaseRequests' -> PurchaseScheduledInstances purchaseScheduledInstances pPurchaseRequests_ = PurchaseScheduledInstances' { _psiClientToken = Nothing , _psiDryRun = Nothing , _psiPurchaseRequests = _List1 # pPurchaseRequests_ } -- | Unique, case-sensitive identifier that ensures the idempotency of the -- request. For more information, see -- . psiClientToken :: Lens' PurchaseScheduledInstances (Maybe Text) psiClientToken = lens _psiClientToken (\ s a -> s{_psiClientToken = a}); -- | 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'. psiDryRun :: Lens' PurchaseScheduledInstances (Maybe Bool) psiDryRun = lens _psiDryRun (\ s a -> s{_psiDryRun = a}); -- | One or more purchase requests. psiPurchaseRequests :: Lens' PurchaseScheduledInstances (NonEmpty PurchaseRequest) psiPurchaseRequests = lens _psiPurchaseRequests (\ s a -> s{_psiPurchaseRequests = a}) . _List1; instance AWSRequest PurchaseScheduledInstances where type Rs PurchaseScheduledInstances = PurchaseScheduledInstancesResponse request = postQuery ec2 response = receiveXML (\ s h x -> PurchaseScheduledInstancesResponse' <$> (x .@? "scheduledInstanceSet" .!@ mempty >>= may (parseXMLList "item")) <*> (pure (fromEnum s))) instance Hashable PurchaseScheduledInstances instance ToHeaders PurchaseScheduledInstances where toHeaders = const mempty instance ToPath PurchaseScheduledInstances where toPath = const "/" instance ToQuery PurchaseScheduledInstances where toQuery PurchaseScheduledInstances'{..} = mconcat ["Action" =: ("PurchaseScheduledInstances" :: ByteString), "Version" =: ("2015-10-01" :: ByteString), "ClientToken" =: _psiClientToken, "DryRun" =: _psiDryRun, toQueryList "PurchaseRequest" _psiPurchaseRequests] -- | Contains the output of PurchaseScheduledInstances. -- -- /See:/ 'purchaseScheduledInstancesResponse' smart constructor. data PurchaseScheduledInstancesResponse = PurchaseScheduledInstancesResponse' { _psirsScheduledInstanceSet :: !(Maybe [ScheduledInstance]) , _psirsResponseStatus :: !Int } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'PurchaseScheduledInstancesResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'psirsScheduledInstanceSet' -- -- * 'psirsResponseStatus' purchaseScheduledInstancesResponse :: Int -- ^ 'psirsResponseStatus' -> PurchaseScheduledInstancesResponse purchaseScheduledInstancesResponse pResponseStatus_ = PurchaseScheduledInstancesResponse' { _psirsScheduledInstanceSet = Nothing , _psirsResponseStatus = pResponseStatus_ } -- | Information about the Scheduled Instances. psirsScheduledInstanceSet :: Lens' PurchaseScheduledInstancesResponse [ScheduledInstance] psirsScheduledInstanceSet = lens _psirsScheduledInstanceSet (\ s a -> s{_psirsScheduledInstanceSet = a}) . _Default . _Coerce; -- | The response status code. psirsResponseStatus :: Lens' PurchaseScheduledInstancesResponse Int psirsResponseStatus = lens _psirsResponseStatus (\ s a -> s{_psirsResponseStatus = a});