stratosphere-0.15.2: library-gen/Stratosphere/ResourceProperties/ApplicationAutoScalingScalableTargetScheduledAction.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TupleSections #-}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalabletarget-scheduledaction.html
module Stratosphere.ResourceProperties.ApplicationAutoScalingScalableTargetScheduledAction where
import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.ApplicationAutoScalingScalableTargetScalableTargetAction
-- | Full data type definition for
-- ApplicationAutoScalingScalableTargetScheduledAction. See
-- 'applicationAutoScalingScalableTargetScheduledAction' for a more
-- convenient constructor.
data ApplicationAutoScalingScalableTargetScheduledAction =
ApplicationAutoScalingScalableTargetScheduledAction
{ _applicationAutoScalingScalableTargetScheduledActionEndTime :: Maybe (Val Text)
, _applicationAutoScalingScalableTargetScheduledActionScalableTargetAction :: Maybe ApplicationAutoScalingScalableTargetScalableTargetAction
, _applicationAutoScalingScalableTargetScheduledActionSchedule :: Val Text
, _applicationAutoScalingScalableTargetScheduledActionScheduledActionName :: Val Text
, _applicationAutoScalingScalableTargetScheduledActionStartTime :: Maybe (Val Text)
} deriving (Show, Eq)
instance ToJSON ApplicationAutoScalingScalableTargetScheduledAction where
toJSON ApplicationAutoScalingScalableTargetScheduledAction{..} =
object $
catMaybes
[ fmap (("EndTime",) . toJSON) _applicationAutoScalingScalableTargetScheduledActionEndTime
, fmap (("ScalableTargetAction",) . toJSON) _applicationAutoScalingScalableTargetScheduledActionScalableTargetAction
, (Just . ("Schedule",) . toJSON) _applicationAutoScalingScalableTargetScheduledActionSchedule
, (Just . ("ScheduledActionName",) . toJSON) _applicationAutoScalingScalableTargetScheduledActionScheduledActionName
, fmap (("StartTime",) . toJSON) _applicationAutoScalingScalableTargetScheduledActionStartTime
]
instance FromJSON ApplicationAutoScalingScalableTargetScheduledAction where
parseJSON (Object obj) =
ApplicationAutoScalingScalableTargetScheduledAction <$>
(obj .:? "EndTime") <*>
(obj .:? "ScalableTargetAction") <*>
(obj .: "Schedule") <*>
(obj .: "ScheduledActionName") <*>
(obj .:? "StartTime")
parseJSON _ = mempty
-- | Constructor for 'ApplicationAutoScalingScalableTargetScheduledAction'
-- containing required fields as arguments.
applicationAutoScalingScalableTargetScheduledAction
:: Val Text -- ^ 'aasstsaSchedule'
-> Val Text -- ^ 'aasstsaScheduledActionName'
-> ApplicationAutoScalingScalableTargetScheduledAction
applicationAutoScalingScalableTargetScheduledAction schedulearg scheduledActionNamearg =
ApplicationAutoScalingScalableTargetScheduledAction
{ _applicationAutoScalingScalableTargetScheduledActionEndTime = Nothing
, _applicationAutoScalingScalableTargetScheduledActionScalableTargetAction = Nothing
, _applicationAutoScalingScalableTargetScheduledActionSchedule = schedulearg
, _applicationAutoScalingScalableTargetScheduledActionScheduledActionName = scheduledActionNamearg
, _applicationAutoScalingScalableTargetScheduledActionStartTime = Nothing
}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalabletarget-scheduledaction.html#cfn-applicationautoscaling-scalabletarget-scheduledaction-endtime
aasstsaEndTime :: Lens' ApplicationAutoScalingScalableTargetScheduledAction (Maybe (Val Text))
aasstsaEndTime = lens _applicationAutoScalingScalableTargetScheduledActionEndTime (\s a -> s { _applicationAutoScalingScalableTargetScheduledActionEndTime = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalabletarget-scheduledaction.html#cfn-applicationautoscaling-scalabletarget-scheduledaction-scalabletargetaction
aasstsaScalableTargetAction :: Lens' ApplicationAutoScalingScalableTargetScheduledAction (Maybe ApplicationAutoScalingScalableTargetScalableTargetAction)
aasstsaScalableTargetAction = lens _applicationAutoScalingScalableTargetScheduledActionScalableTargetAction (\s a -> s { _applicationAutoScalingScalableTargetScheduledActionScalableTargetAction = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalabletarget-scheduledaction.html#cfn-applicationautoscaling-scalabletarget-scheduledaction-schedule
aasstsaSchedule :: Lens' ApplicationAutoScalingScalableTargetScheduledAction (Val Text)
aasstsaSchedule = lens _applicationAutoScalingScalableTargetScheduledActionSchedule (\s a -> s { _applicationAutoScalingScalableTargetScheduledActionSchedule = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalabletarget-scheduledaction.html#cfn-applicationautoscaling-scalabletarget-scheduledaction-scheduledactionname
aasstsaScheduledActionName :: Lens' ApplicationAutoScalingScalableTargetScheduledAction (Val Text)
aasstsaScheduledActionName = lens _applicationAutoScalingScalableTargetScheduledActionScheduledActionName (\s a -> s { _applicationAutoScalingScalableTargetScheduledActionScheduledActionName = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalabletarget-scheduledaction.html#cfn-applicationautoscaling-scalabletarget-scheduledaction-starttime
aasstsaStartTime :: Lens' ApplicationAutoScalingScalableTargetScheduledAction (Maybe (Val Text))
aasstsaStartTime = lens _applicationAutoScalingScalableTargetScheduledActionStartTime (\s a -> s { _applicationAutoScalingScalableTargetScheduledActionStartTime = a })