{-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} -- Module : Network.AWS.AutoScaling.PutScheduledUpdateGroupAction -- Copyright : (c) 2013-2014 Brendan Hay -- License : This Source Code Form is subject to the terms of -- the Mozilla Public License, v. 2.0. -- A copy of the MPL can be found in the LICENSE file or -- you can obtain it at http://mozilla.org/MPL/2.0/. -- Maintainer : Brendan Hay -- Stability : experimental -- Portability : non-portable (GHC extensions) -- -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | Creates or updates a scheduled scaling action for an Auto Scaling group. -- When updating a scheduled scaling action, if you leave a parameter -- unspecified, the corresponding value remains unchanged in the affected Auto -- Scaling group. -- -- For more information, see in the /Auto Scaling DeveloperGuide/. -- -- Auto Scaling supports the date and time expressed in "YYYY-MM-DDThh:mm:ssZ" -- format in UTC/GMT only. -- -- -- -- module Network.AWS.AutoScaling.PutScheduledUpdateGroupAction ( -- * Request PutScheduledUpdateGroupAction -- ** Request constructor , putScheduledUpdateGroupAction -- ** Request lenses , psugaAutoScalingGroupName , psugaDesiredCapacity , psugaEndTime , psugaMaxSize , psugaMinSize , psugaRecurrence , psugaScheduledActionName , psugaStartTime , psugaTime -- * Response , PutScheduledUpdateGroupActionResponse -- ** Response constructor , putScheduledUpdateGroupActionResponse ) where import Network.AWS.Prelude import Network.AWS.Request.Query import Network.AWS.AutoScaling.Types import qualified GHC.Exts data PutScheduledUpdateGroupAction = PutScheduledUpdateGroupAction { _psugaAutoScalingGroupName :: Text , _psugaDesiredCapacity :: Maybe Int , _psugaEndTime :: Maybe ISO8601 , _psugaMaxSize :: Maybe Int , _psugaMinSize :: Maybe Int , _psugaRecurrence :: Maybe Text , _psugaScheduledActionName :: Text , _psugaStartTime :: Maybe ISO8601 , _psugaTime :: Maybe ISO8601 } deriving (Eq, Ord, Read, Show) -- | 'PutScheduledUpdateGroupAction' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'psugaAutoScalingGroupName' @::@ 'Text' -- -- * 'psugaDesiredCapacity' @::@ 'Maybe' 'Int' -- -- * 'psugaEndTime' @::@ 'Maybe' 'UTCTime' -- -- * 'psugaMaxSize' @::@ 'Maybe' 'Int' -- -- * 'psugaMinSize' @::@ 'Maybe' 'Int' -- -- * 'psugaRecurrence' @::@ 'Maybe' 'Text' -- -- * 'psugaScheduledActionName' @::@ 'Text' -- -- * 'psugaStartTime' @::@ 'Maybe' 'UTCTime' -- -- * 'psugaTime' @::@ 'Maybe' 'UTCTime' -- putScheduledUpdateGroupAction :: Text -- ^ 'psugaAutoScalingGroupName' -> Text -- ^ 'psugaScheduledActionName' -> PutScheduledUpdateGroupAction putScheduledUpdateGroupAction p1 p2 = PutScheduledUpdateGroupAction { _psugaAutoScalingGroupName = p1 , _psugaScheduledActionName = p2 , _psugaTime = Nothing , _psugaStartTime = Nothing , _psugaEndTime = Nothing , _psugaRecurrence = Nothing , _psugaMinSize = Nothing , _psugaMaxSize = Nothing , _psugaDesiredCapacity = Nothing } -- | The name or Amazon Resource Name (ARN) of the Auto Scaling group. psugaAutoScalingGroupName :: Lens' PutScheduledUpdateGroupAction Text psugaAutoScalingGroupName = lens _psugaAutoScalingGroupName (\s a -> s { _psugaAutoScalingGroupName = a }) -- | The number of Amazon EC2 instances that should be running in the group. psugaDesiredCapacity :: Lens' PutScheduledUpdateGroupAction (Maybe Int) psugaDesiredCapacity = lens _psugaDesiredCapacity (\s a -> s { _psugaDesiredCapacity = a }) -- | The time for this action to end. psugaEndTime :: Lens' PutScheduledUpdateGroupAction (Maybe UTCTime) psugaEndTime = lens _psugaEndTime (\s a -> s { _psugaEndTime = a }) . mapping _Time -- | The maximum size for the Auto Scaling group. psugaMaxSize :: Lens' PutScheduledUpdateGroupAction (Maybe Int) psugaMaxSize = lens _psugaMaxSize (\s a -> s { _psugaMaxSize = a }) -- | The minimum size for the new Auto Scaling group. psugaMinSize :: Lens' PutScheduledUpdateGroupAction (Maybe Int) psugaMinSize = lens _psugaMinSize (\s a -> s { _psugaMinSize = a }) -- | The time when recurring future actions will start. Start time is specified -- by the user following the Unix cron syntax format. For information about cron -- syntax, go to . -- -- When 'StartTime' and 'EndTime' are specified with 'Recurrence', they form the -- boundaries of when the recurring action will start and stop. psugaRecurrence :: Lens' PutScheduledUpdateGroupAction (Maybe Text) psugaRecurrence = lens _psugaRecurrence (\s a -> s { _psugaRecurrence = a }) -- | The name of this scaling action. psugaScheduledActionName :: Lens' PutScheduledUpdateGroupAction Text psugaScheduledActionName = lens _psugaScheduledActionName (\s a -> s { _psugaScheduledActionName = a }) -- | The time for this action to start, as in '--start-time 2010-06-01T00:00:00Z'. -- -- If you try to schedule your action in the past, Auto Scaling returns an -- error message. -- -- When 'StartTime' and 'EndTime' are specified with 'Recurrence', they form the -- boundaries of when the recurring action will start and stop. psugaStartTime :: Lens' PutScheduledUpdateGroupAction (Maybe UTCTime) psugaStartTime = lens _psugaStartTime (\s a -> s { _psugaStartTime = a }) . mapping _Time -- | 'Time' is deprecated. -- -- The time for this action to start. 'Time' is an alias for 'StartTime' and can be -- specified instead of 'StartTime', or vice versa. If both 'Time' and 'StartTime' are -- specified, their values should be identical. Otherwise, 'PutScheduledUpdateGroupAction' will return an error. psugaTime :: Lens' PutScheduledUpdateGroupAction (Maybe UTCTime) psugaTime = lens _psugaTime (\s a -> s { _psugaTime = a }) . mapping _Time data PutScheduledUpdateGroupActionResponse = PutScheduledUpdateGroupActionResponse deriving (Eq, Ord, Read, Show, Generic) -- | 'PutScheduledUpdateGroupActionResponse' constructor. putScheduledUpdateGroupActionResponse :: PutScheduledUpdateGroupActionResponse putScheduledUpdateGroupActionResponse = PutScheduledUpdateGroupActionResponse instance ToPath PutScheduledUpdateGroupAction where toPath = const "/" instance ToQuery PutScheduledUpdateGroupAction where toQuery PutScheduledUpdateGroupAction{..} = mconcat [ "AutoScalingGroupName" =? _psugaAutoScalingGroupName , "DesiredCapacity" =? _psugaDesiredCapacity , "EndTime" =? _psugaEndTime , "MaxSize" =? _psugaMaxSize , "MinSize" =? _psugaMinSize , "Recurrence" =? _psugaRecurrence , "ScheduledActionName" =? _psugaScheduledActionName , "StartTime" =? _psugaStartTime , "Time" =? _psugaTime ] instance ToHeaders PutScheduledUpdateGroupAction instance AWSRequest PutScheduledUpdateGroupAction where type Sv PutScheduledUpdateGroupAction = AutoScaling type Rs PutScheduledUpdateGroupAction = PutScheduledUpdateGroupActionResponse request = post "PutScheduledUpdateGroupAction" response = nullResponse PutScheduledUpdateGroupActionResponse