{-# 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 #-}
module Network.AWS.EC2.RequestSpotInstances
(
requestSpotInstances
, RequestSpotInstances
, rsisBlockDurationMinutes
, rsisClientToken
, rsisInstanceCount
, rsisLaunchSpecification
, rsisAvailabilityZoneGroup
, rsisValidUntil
, rsisLaunchGroup
, rsisType
, rsisValidFrom
, rsisDryRun
, rsisSpotPrice
, requestSpotInstancesResponse
, RequestSpotInstancesResponse
, rsirsSpotInstanceRequests
, rsirsResponseStatus
) 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
data RequestSpotInstances = RequestSpotInstances'
{ _rsisBlockDurationMinutes :: !(Maybe Int)
, _rsisClientToken :: !(Maybe Text)
, _rsisInstanceCount :: !(Maybe Int)
, _rsisLaunchSpecification :: !(Maybe RequestSpotLaunchSpecification)
, _rsisAvailabilityZoneGroup :: !(Maybe Text)
, _rsisValidUntil :: !(Maybe ISO8601)
, _rsisLaunchGroup :: !(Maybe Text)
, _rsisType :: !(Maybe SpotInstanceType)
, _rsisValidFrom :: !(Maybe ISO8601)
, _rsisDryRun :: !(Maybe Bool)
, _rsisSpotPrice :: !Text
} deriving (Eq,Read,Show,Data,Typeable,Generic)
requestSpotInstances
:: Text
-> RequestSpotInstances
requestSpotInstances pSpotPrice_ =
RequestSpotInstances'
{ _rsisBlockDurationMinutes = Nothing
, _rsisClientToken = Nothing
, _rsisInstanceCount = Nothing
, _rsisLaunchSpecification = Nothing
, _rsisAvailabilityZoneGroup = Nothing
, _rsisValidUntil = Nothing
, _rsisLaunchGroup = Nothing
, _rsisType = Nothing
, _rsisValidFrom = Nothing
, _rsisDryRun = Nothing
, _rsisSpotPrice = pSpotPrice_
}
rsisBlockDurationMinutes :: Lens' RequestSpotInstances (Maybe Int)
rsisBlockDurationMinutes = lens _rsisBlockDurationMinutes (\ s a -> s{_rsisBlockDurationMinutes = a});
rsisClientToken :: Lens' RequestSpotInstances (Maybe Text)
rsisClientToken = lens _rsisClientToken (\ s a -> s{_rsisClientToken = a});
rsisInstanceCount :: Lens' RequestSpotInstances (Maybe Int)
rsisInstanceCount = lens _rsisInstanceCount (\ s a -> s{_rsisInstanceCount = a});
rsisLaunchSpecification :: Lens' RequestSpotInstances (Maybe RequestSpotLaunchSpecification)
rsisLaunchSpecification = lens _rsisLaunchSpecification (\ s a -> s{_rsisLaunchSpecification = a});
rsisAvailabilityZoneGroup :: Lens' RequestSpotInstances (Maybe Text)
rsisAvailabilityZoneGroup = lens _rsisAvailabilityZoneGroup (\ s a -> s{_rsisAvailabilityZoneGroup = a});
rsisValidUntil :: Lens' RequestSpotInstances (Maybe UTCTime)
rsisValidUntil = lens _rsisValidUntil (\ s a -> s{_rsisValidUntil = a}) . mapping _Time;
rsisLaunchGroup :: Lens' RequestSpotInstances (Maybe Text)
rsisLaunchGroup = lens _rsisLaunchGroup (\ s a -> s{_rsisLaunchGroup = a});
rsisType :: Lens' RequestSpotInstances (Maybe SpotInstanceType)
rsisType = lens _rsisType (\ s a -> s{_rsisType = a});
rsisValidFrom :: Lens' RequestSpotInstances (Maybe UTCTime)
rsisValidFrom = lens _rsisValidFrom (\ s a -> s{_rsisValidFrom = a}) . mapping _Time;
rsisDryRun :: Lens' RequestSpotInstances (Maybe Bool)
rsisDryRun = lens _rsisDryRun (\ s a -> s{_rsisDryRun = a});
rsisSpotPrice :: Lens' RequestSpotInstances Text
rsisSpotPrice = lens _rsisSpotPrice (\ s a -> s{_rsisSpotPrice = a});
instance AWSRequest RequestSpotInstances where
type Rs RequestSpotInstances =
RequestSpotInstancesResponse
request = postQuery ec2
response
= receiveXML
(\ s h x ->
RequestSpotInstancesResponse' <$>
(x .@? "spotInstanceRequestSet" .!@ mempty >>=
may (parseXMLList "item"))
<*> (pure (fromEnum s)))
instance Hashable RequestSpotInstances
instance NFData RequestSpotInstances
instance ToHeaders RequestSpotInstances where
toHeaders = const mempty
instance ToPath RequestSpotInstances where
toPath = const "/"
instance ToQuery RequestSpotInstances where
toQuery RequestSpotInstances'{..}
= mconcat
["Action" =: ("RequestSpotInstances" :: ByteString),
"Version" =: ("2016-04-01" :: ByteString),
"BlockDurationMinutes" =: _rsisBlockDurationMinutes,
"ClientToken" =: _rsisClientToken,
"InstanceCount" =: _rsisInstanceCount,
"LaunchSpecification" =: _rsisLaunchSpecification,
"AvailabilityZoneGroup" =:
_rsisAvailabilityZoneGroup,
"ValidUntil" =: _rsisValidUntil,
"LaunchGroup" =: _rsisLaunchGroup,
"Type" =: _rsisType, "ValidFrom" =: _rsisValidFrom,
"DryRun" =: _rsisDryRun,
"SpotPrice" =: _rsisSpotPrice]
data RequestSpotInstancesResponse = RequestSpotInstancesResponse'
{ _rsirsSpotInstanceRequests :: !(Maybe [SpotInstanceRequest])
, _rsirsResponseStatus :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
requestSpotInstancesResponse
:: Int
-> RequestSpotInstancesResponse
requestSpotInstancesResponse pResponseStatus_ =
RequestSpotInstancesResponse'
{ _rsirsSpotInstanceRequests = Nothing
, _rsirsResponseStatus = pResponseStatus_
}
rsirsSpotInstanceRequests :: Lens' RequestSpotInstancesResponse [SpotInstanceRequest]
rsirsSpotInstanceRequests = lens _rsirsSpotInstanceRequests (\ s a -> s{_rsirsSpotInstanceRequests = a}) . _Default . _Coerce;
rsirsResponseStatus :: Lens' RequestSpotInstancesResponse Int
rsirsResponseStatus = lens _rsirsResponseStatus (\ s a -> s{_rsirsResponseStatus = a});
instance NFData RequestSpotInstancesResponse