{-# 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.ModifySpotFleetRequest -- Copyright : (c) 2013-2016 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Modifies the specified Spot fleet request. -- -- While the Spot fleet request is being modified, it is in the 'modifying' state. -- -- To scale up your Spot fleet, increase its target capacity. The Spot fleet launches the additional Spot instances according to the allocation strategy for the Spot fleet request. If the allocation strategy is 'lowestPrice', the Spot fleet launches instances using the Spot pool with the lowest price. If the allocation strategy is 'diversified', the Spot fleet distributes the instances across the Spot pools. -- -- To scale down your Spot fleet, decrease its target capacity. First, the Spot fleet cancels any open bids that exceed the new target capacity. You can request that the Spot fleet terminate Spot instances until the size of the fleet no longer exceeds the new target capacity. If the allocation strategy is 'lowestPrice', the Spot fleet terminates the instances with the highest price per unit. If the allocation strategy is 'diversified', the Spot fleet terminates instances across the Spot pools. Alternatively, you can request that the Spot fleet keep the fleet at its current size, but not replace any Spot instances that are interrupted or that you terminate manually. module Network.AWS.EC2.ModifySpotFleetRequest ( -- * Creating a Request modifySpotFleetRequest , ModifySpotFleetRequest -- * Request Lenses , msfrTargetCapacity , msfrExcessCapacityTerminationPolicy , msfrSpotFleetRequestId -- * Destructuring the Response , modifySpotFleetRequestResponse , ModifySpotFleetRequestResponse -- * Response Lenses , msfrrsReturn , msfrrsResponseStatus ) 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 ModifySpotFleetRequest. -- -- /See:/ 'modifySpotFleetRequest' smart constructor. data ModifySpotFleetRequest = ModifySpotFleetRequest' { _msfrTargetCapacity :: !(Maybe Int) , _msfrExcessCapacityTerminationPolicy :: !(Maybe ExcessCapacityTerminationPolicy) , _msfrSpotFleetRequestId :: !Text } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'ModifySpotFleetRequest' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'msfrTargetCapacity' -- -- * 'msfrExcessCapacityTerminationPolicy' -- -- * 'msfrSpotFleetRequestId' modifySpotFleetRequest :: Text -- ^ 'msfrSpotFleetRequestId' -> ModifySpotFleetRequest modifySpotFleetRequest pSpotFleetRequestId_ = ModifySpotFleetRequest' { _msfrTargetCapacity = Nothing , _msfrExcessCapacityTerminationPolicy = Nothing , _msfrSpotFleetRequestId = pSpotFleetRequestId_ } -- | The size of the fleet. msfrTargetCapacity :: Lens' ModifySpotFleetRequest (Maybe Int) msfrTargetCapacity = lens _msfrTargetCapacity (\ s a -> s{_msfrTargetCapacity = a}); -- | Indicates whether running Spot instances should be terminated if the target capacity of the Spot fleet request is decreased below the current size of the Spot fleet. msfrExcessCapacityTerminationPolicy :: Lens' ModifySpotFleetRequest (Maybe ExcessCapacityTerminationPolicy) msfrExcessCapacityTerminationPolicy = lens _msfrExcessCapacityTerminationPolicy (\ s a -> s{_msfrExcessCapacityTerminationPolicy = a}); -- | The ID of the Spot fleet request. msfrSpotFleetRequestId :: Lens' ModifySpotFleetRequest Text msfrSpotFleetRequestId = lens _msfrSpotFleetRequestId (\ s a -> s{_msfrSpotFleetRequestId = a}); instance AWSRequest ModifySpotFleetRequest where type Rs ModifySpotFleetRequest = ModifySpotFleetRequestResponse request = postQuery ec2 response = receiveXML (\ s h x -> ModifySpotFleetRequestResponse' <$> (x .@? "return") <*> (pure (fromEnum s))) instance Hashable ModifySpotFleetRequest instance NFData ModifySpotFleetRequest instance ToHeaders ModifySpotFleetRequest where toHeaders = const mempty instance ToPath ModifySpotFleetRequest where toPath = const "/" instance ToQuery ModifySpotFleetRequest where toQuery ModifySpotFleetRequest'{..} = mconcat ["Action" =: ("ModifySpotFleetRequest" :: ByteString), "Version" =: ("2016-04-01" :: ByteString), "TargetCapacity" =: _msfrTargetCapacity, "ExcessCapacityTerminationPolicy" =: _msfrExcessCapacityTerminationPolicy, "SpotFleetRequestId" =: _msfrSpotFleetRequestId] -- | Contains the output of ModifySpotFleetRequest. -- -- /See:/ 'modifySpotFleetRequestResponse' smart constructor. data ModifySpotFleetRequestResponse = ModifySpotFleetRequestResponse' { _msfrrsReturn :: !(Maybe Bool) , _msfrrsResponseStatus :: !Int } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'ModifySpotFleetRequestResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'msfrrsReturn' -- -- * 'msfrrsResponseStatus' modifySpotFleetRequestResponse :: Int -- ^ 'msfrrsResponseStatus' -> ModifySpotFleetRequestResponse modifySpotFleetRequestResponse pResponseStatus_ = ModifySpotFleetRequestResponse' { _msfrrsReturn = Nothing , _msfrrsResponseStatus = pResponseStatus_ } -- | Is 'true' if the request succeeds, and an error otherwise. msfrrsReturn :: Lens' ModifySpotFleetRequestResponse (Maybe Bool) msfrrsReturn = lens _msfrrsReturn (\ s a -> s{_msfrrsReturn = a}); -- | The response status code. msfrrsResponseStatus :: Lens' ModifySpotFleetRequestResponse Int msfrrsResponseStatus = lens _msfrrsResponseStatus (\ s a -> s{_msfrrsResponseStatus = a}); instance NFData ModifySpotFleetRequestResponse