module Network.AWS.ApplicationAutoScaling.PutScalingPolicy
(
putScalingPolicy
, PutScalingPolicy
, pspPolicyType
, pspStepScalingPolicyConfiguration
, pspPolicyName
, pspServiceNamespace
, pspResourceId
, pspScalableDimension
, putScalingPolicyResponse
, PutScalingPolicyResponse
, psprsResponseStatus
, psprsPolicyARN
) where
import Network.AWS.ApplicationAutoScaling.Types
import Network.AWS.ApplicationAutoScaling.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
data PutScalingPolicy = PutScalingPolicy'
{ _pspPolicyType :: !(Maybe PolicyType)
, _pspStepScalingPolicyConfiguration :: !(Maybe StepScalingPolicyConfiguration)
, _pspPolicyName :: !Text
, _pspServiceNamespace :: !ServiceNamespace
, _pspResourceId :: !Text
, _pspScalableDimension :: !ScalableDimension
} deriving (Eq,Read,Show,Data,Typeable,Generic)
putScalingPolicy
:: Text
-> ServiceNamespace
-> Text
-> ScalableDimension
-> PutScalingPolicy
putScalingPolicy pPolicyName_ pServiceNamespace_ pResourceId_ pScalableDimension_ =
PutScalingPolicy'
{ _pspPolicyType = Nothing
, _pspStepScalingPolicyConfiguration = Nothing
, _pspPolicyName = pPolicyName_
, _pspServiceNamespace = pServiceNamespace_
, _pspResourceId = pResourceId_
, _pspScalableDimension = pScalableDimension_
}
pspPolicyType :: Lens' PutScalingPolicy (Maybe PolicyType)
pspPolicyType = lens _pspPolicyType (\ s a -> s{_pspPolicyType = a});
pspStepScalingPolicyConfiguration :: Lens' PutScalingPolicy (Maybe StepScalingPolicyConfiguration)
pspStepScalingPolicyConfiguration = lens _pspStepScalingPolicyConfiguration (\ s a -> s{_pspStepScalingPolicyConfiguration = a});
pspPolicyName :: Lens' PutScalingPolicy Text
pspPolicyName = lens _pspPolicyName (\ s a -> s{_pspPolicyName = a});
pspServiceNamespace :: Lens' PutScalingPolicy ServiceNamespace
pspServiceNamespace = lens _pspServiceNamespace (\ s a -> s{_pspServiceNamespace = a});
pspResourceId :: Lens' PutScalingPolicy Text
pspResourceId = lens _pspResourceId (\ s a -> s{_pspResourceId = a});
pspScalableDimension :: Lens' PutScalingPolicy ScalableDimension
pspScalableDimension = lens _pspScalableDimension (\ s a -> s{_pspScalableDimension = a});
instance AWSRequest PutScalingPolicy where
type Rs PutScalingPolicy = PutScalingPolicyResponse
request = postJSON applicationAutoScaling
response
= receiveJSON
(\ s h x ->
PutScalingPolicyResponse' <$>
(pure (fromEnum s)) <*> (x .:> "PolicyARN"))
instance Hashable PutScalingPolicy
instance NFData PutScalingPolicy
instance ToHeaders PutScalingPolicy where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("AnyScaleFrontendService.PutScalingPolicy" ::
ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON PutScalingPolicy where
toJSON PutScalingPolicy'{..}
= object
(catMaybes
[("PolicyType" .=) <$> _pspPolicyType,
("StepScalingPolicyConfiguration" .=) <$>
_pspStepScalingPolicyConfiguration,
Just ("PolicyName" .= _pspPolicyName),
Just ("ServiceNamespace" .= _pspServiceNamespace),
Just ("ResourceId" .= _pspResourceId),
Just ("ScalableDimension" .= _pspScalableDimension)])
instance ToPath PutScalingPolicy where
toPath = const "/"
instance ToQuery PutScalingPolicy where
toQuery = const mempty
data PutScalingPolicyResponse = PutScalingPolicyResponse'
{ _psprsResponseStatus :: !Int
, _psprsPolicyARN :: !Text
} deriving (Eq,Read,Show,Data,Typeable,Generic)
putScalingPolicyResponse
:: Int
-> Text
-> PutScalingPolicyResponse
putScalingPolicyResponse pResponseStatus_ pPolicyARN_ =
PutScalingPolicyResponse'
{ _psprsResponseStatus = pResponseStatus_
, _psprsPolicyARN = pPolicyARN_
}
psprsResponseStatus :: Lens' PutScalingPolicyResponse Int
psprsResponseStatus = lens _psprsResponseStatus (\ s a -> s{_psprsResponseStatus = a});
psprsPolicyARN :: Lens' PutScalingPolicyResponse Text
psprsPolicyARN = lens _psprsPolicyARN (\ s a -> s{_psprsPolicyARN = a});
instance NFData PutScalingPolicyResponse