{-# 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.DescribeScheduledInstanceAvailability -- Copyright : (c) 2013-2016 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Finds available schedules that meet the specified criteria. -- -- You can search for an available schedule no more than 3 months in -- advance. You must meet the minimum required duration of 1,200 hours per -- year. For example, the minimum daily schedule is 4 hours, the minimum -- weekly schedule is 24 hours, and the minimum monthly schedule is 100 -- hours. -- -- After you find a schedule that meets your needs, call -- < PurchaseScheduledInstances> to purchase Scheduled Instances with that -- schedule. module Network.AWS.EC2.DescribeScheduledInstanceAvailability ( -- * Creating a Request describeScheduledInstanceAvailability , DescribeScheduledInstanceAvailability -- * Request Lenses , dsiaMinSlotDurationInHours , dsiaFilters , dsiaNextToken , dsiaMaxSlotDurationInHours , dsiaDryRun , dsiaMaxResults , dsiaRecurrence , dsiaFirstSlotStartTimeRange -- * Destructuring the Response , describeScheduledInstanceAvailabilityResponse , DescribeScheduledInstanceAvailabilityResponse -- * Response Lenses , dsiarsScheduledInstanceAvailabilitySet , dsiarsNextToken , dsiarsResponseStatus ) 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 DescribeScheduledInstanceAvailability. -- -- /See:/ 'describeScheduledInstanceAvailability' smart constructor. data DescribeScheduledInstanceAvailability = DescribeScheduledInstanceAvailability' { _dsiaMinSlotDurationInHours :: !(Maybe Int) , _dsiaFilters :: !(Maybe [Filter]) , _dsiaNextToken :: !(Maybe Text) , _dsiaMaxSlotDurationInHours :: !(Maybe Int) , _dsiaDryRun :: !(Maybe Bool) , _dsiaMaxResults :: !(Maybe Int) , _dsiaRecurrence :: !ScheduledInstanceRecurrenceRequest , _dsiaFirstSlotStartTimeRange :: !SlotDateTimeRangeRequest } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'DescribeScheduledInstanceAvailability' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'dsiaMinSlotDurationInHours' -- -- * 'dsiaFilters' -- -- * 'dsiaNextToken' -- -- * 'dsiaMaxSlotDurationInHours' -- -- * 'dsiaDryRun' -- -- * 'dsiaMaxResults' -- -- * 'dsiaRecurrence' -- -- * 'dsiaFirstSlotStartTimeRange' describeScheduledInstanceAvailability :: ScheduledInstanceRecurrenceRequest -- ^ 'dsiaRecurrence' -> SlotDateTimeRangeRequest -- ^ 'dsiaFirstSlotStartTimeRange' -> DescribeScheduledInstanceAvailability describeScheduledInstanceAvailability pRecurrence_ pFirstSlotStartTimeRange_ = DescribeScheduledInstanceAvailability' { _dsiaMinSlotDurationInHours = Nothing , _dsiaFilters = Nothing , _dsiaNextToken = Nothing , _dsiaMaxSlotDurationInHours = Nothing , _dsiaDryRun = Nothing , _dsiaMaxResults = Nothing , _dsiaRecurrence = pRecurrence_ , _dsiaFirstSlotStartTimeRange = pFirstSlotStartTimeRange_ } -- | The minimum available duration, in hours. The minimum required duration -- is 1,200 hours per year. For example, the minimum daily schedule is 4 -- hours, the minimum weekly schedule is 24 hours, and the minimum monthly -- schedule is 100 hours. dsiaMinSlotDurationInHours :: Lens' DescribeScheduledInstanceAvailability (Maybe Int) dsiaMinSlotDurationInHours = lens _dsiaMinSlotDurationInHours (\ s a -> s{_dsiaMinSlotDurationInHours = a}); -- | One or more filters. -- -- - 'availability-zone' - The Availability Zone (for example, -- 'us-west-2a'). -- -- - 'instance-type' - The instance type (for example, 'c4.large'). -- -- - 'network-platform' - The network platform ('EC2-Classic' or -- 'EC2-VPC'). -- -- - 'platform' - The platform ('Linux\/UNIX' or 'Windows'). -- dsiaFilters :: Lens' DescribeScheduledInstanceAvailability [Filter] dsiaFilters = lens _dsiaFilters (\ s a -> s{_dsiaFilters = a}) . _Default . _Coerce; -- | The token for the next set of results. dsiaNextToken :: Lens' DescribeScheduledInstanceAvailability (Maybe Text) dsiaNextToken = lens _dsiaNextToken (\ s a -> s{_dsiaNextToken = a}); -- | The maximum available duration, in hours. This value must be greater -- than 'MinSlotDurationInHours' and less than 1,720. dsiaMaxSlotDurationInHours :: Lens' DescribeScheduledInstanceAvailability (Maybe Int) dsiaMaxSlotDurationInHours = lens _dsiaMaxSlotDurationInHours (\ s a -> s{_dsiaMaxSlotDurationInHours = 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'. dsiaDryRun :: Lens' DescribeScheduledInstanceAvailability (Maybe Bool) dsiaDryRun = lens _dsiaDryRun (\ s a -> s{_dsiaDryRun = a}); -- | The maximum number of results to return in a single call. This value can -- be between 5 and 300. The default value is 300. To retrieve the -- remaining results, make another call with the returned 'NextToken' -- value. dsiaMaxResults :: Lens' DescribeScheduledInstanceAvailability (Maybe Int) dsiaMaxResults = lens _dsiaMaxResults (\ s a -> s{_dsiaMaxResults = a}); -- | The schedule recurrence. dsiaRecurrence :: Lens' DescribeScheduledInstanceAvailability ScheduledInstanceRecurrenceRequest dsiaRecurrence = lens _dsiaRecurrence (\ s a -> s{_dsiaRecurrence = a}); -- | The time period for the first schedule to start. dsiaFirstSlotStartTimeRange :: Lens' DescribeScheduledInstanceAvailability SlotDateTimeRangeRequest dsiaFirstSlotStartTimeRange = lens _dsiaFirstSlotStartTimeRange (\ s a -> s{_dsiaFirstSlotStartTimeRange = a}); instance AWSRequest DescribeScheduledInstanceAvailability where type Rs DescribeScheduledInstanceAvailability = DescribeScheduledInstanceAvailabilityResponse request = postQuery ec2 response = receiveXML (\ s h x -> DescribeScheduledInstanceAvailabilityResponse' <$> (x .@? "scheduledInstanceAvailabilitySet" .!@ mempty >>= may (parseXMLList "item")) <*> (x .@? "nextToken") <*> (pure (fromEnum s))) instance Hashable DescribeScheduledInstanceAvailability instance NFData DescribeScheduledInstanceAvailability instance ToHeaders DescribeScheduledInstanceAvailability where toHeaders = const mempty instance ToPath DescribeScheduledInstanceAvailability where toPath = const "/" instance ToQuery DescribeScheduledInstanceAvailability where toQuery DescribeScheduledInstanceAvailability'{..} = mconcat ["Action" =: ("DescribeScheduledInstanceAvailability" :: ByteString), "Version" =: ("2015-10-01" :: ByteString), "MinSlotDurationInHours" =: _dsiaMinSlotDurationInHours, toQuery (toQueryList "Filter" <$> _dsiaFilters), "NextToken" =: _dsiaNextToken, "MaxSlotDurationInHours" =: _dsiaMaxSlotDurationInHours, "DryRun" =: _dsiaDryRun, "MaxResults" =: _dsiaMaxResults, "Recurrence" =: _dsiaRecurrence, "FirstSlotStartTimeRange" =: _dsiaFirstSlotStartTimeRange] -- | Contains the output of DescribeScheduledInstanceAvailability. -- -- /See:/ 'describeScheduledInstanceAvailabilityResponse' smart constructor. data DescribeScheduledInstanceAvailabilityResponse = DescribeScheduledInstanceAvailabilityResponse' { _dsiarsScheduledInstanceAvailabilitySet :: !(Maybe [ScheduledInstanceAvailability]) , _dsiarsNextToken :: !(Maybe Text) , _dsiarsResponseStatus :: !Int } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'DescribeScheduledInstanceAvailabilityResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'dsiarsScheduledInstanceAvailabilitySet' -- -- * 'dsiarsNextToken' -- -- * 'dsiarsResponseStatus' describeScheduledInstanceAvailabilityResponse :: Int -- ^ 'dsiarsResponseStatus' -> DescribeScheduledInstanceAvailabilityResponse describeScheduledInstanceAvailabilityResponse pResponseStatus_ = DescribeScheduledInstanceAvailabilityResponse' { _dsiarsScheduledInstanceAvailabilitySet = Nothing , _dsiarsNextToken = Nothing , _dsiarsResponseStatus = pResponseStatus_ } -- | Information about the available Scheduled Instances. dsiarsScheduledInstanceAvailabilitySet :: Lens' DescribeScheduledInstanceAvailabilityResponse [ScheduledInstanceAvailability] dsiarsScheduledInstanceAvailabilitySet = lens _dsiarsScheduledInstanceAvailabilitySet (\ s a -> s{_dsiarsScheduledInstanceAvailabilitySet = a}) . _Default . _Coerce; -- | The token required to retrieve the next set of results. This value is -- 'null' when there are no more results to return. dsiarsNextToken :: Lens' DescribeScheduledInstanceAvailabilityResponse (Maybe Text) dsiarsNextToken = lens _dsiarsNextToken (\ s a -> s{_dsiarsNextToken = a}); -- | The response status code. dsiarsResponseStatus :: Lens' DescribeScheduledInstanceAvailabilityResponse Int dsiarsResponseStatus = lens _dsiarsResponseStatus (\ s a -> s{_dsiarsResponseStatus = a}); instance NFData DescribeScheduledInstanceAvailabilityResponse