{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.AutoScaling.UpdateAutoScalingGroup
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- __We strongly recommend that all Auto Scaling groups use launch
-- templates to ensure full functionality for Amazon EC2 Auto Scaling and
-- Amazon EC2.__
--
-- Updates the configuration for the specified Auto Scaling group.
--
-- To update an Auto Scaling group, specify the name of the group and the
-- parameter that you want to change. Any parameters that you don\'t
-- specify are not changed by this update request. The new settings take
-- effect on any scaling activities after this call returns.
--
-- If you associate a new launch configuration or template with an Auto
-- Scaling group, all new instances will get the updated configuration.
-- Existing instances continue to run with the configuration that they were
-- originally launched with. When you update a group to specify a mixed
-- instances policy instead of a launch configuration or template, existing
-- instances may be replaced to match the new purchasing options that you
-- specified in the policy. For example, if the group currently has 100%
-- On-Demand capacity and the policy specifies 50% Spot capacity, this
-- means that half of your instances will be gradually terminated and
-- relaunched as Spot Instances. When replacing instances, Amazon EC2 Auto
-- Scaling launches new instances before terminating the old ones, so that
-- updating your group does not compromise the performance or availability
-- of your application.
--
-- Note the following about changing @DesiredCapacity@, @MaxSize@, or
-- @MinSize@:
--
-- -   If a scale-in activity occurs as a result of a new @DesiredCapacity@
--     value that is lower than the current size of the group, the Auto
--     Scaling group uses its termination policy to determine which
--     instances to terminate.
--
-- -   If you specify a new value for @MinSize@ without specifying a value
--     for @DesiredCapacity@, and the new @MinSize@ is larger than the
--     current size of the group, this sets the group\'s @DesiredCapacity@
--     to the new @MinSize@ value.
--
-- -   If you specify a new value for @MaxSize@ without specifying a value
--     for @DesiredCapacity@, and the new @MaxSize@ is smaller than the
--     current size of the group, this sets the group\'s @DesiredCapacity@
--     to the new @MaxSize@ value.
--
-- To see which parameters have been set, call the
-- DescribeAutoScalingGroups API. To view the scaling policies for an Auto
-- Scaling group, call the DescribePolicies API. If the group has scaling
-- policies, you can update them by calling the PutScalingPolicy API.
module Amazonka.AutoScaling.UpdateAutoScalingGroup
  ( -- * Creating a Request
    UpdateAutoScalingGroup (..),
    newUpdateAutoScalingGroup,

    -- * Request Lenses
    updateAutoScalingGroup_context,
    updateAutoScalingGroup_terminationPolicies,
    updateAutoScalingGroup_healthCheckGracePeriod,
    updateAutoScalingGroup_serviceLinkedRoleARN,
    updateAutoScalingGroup_newInstancesProtectedFromScaleIn,
    updateAutoScalingGroup_vPCZoneIdentifier,
    updateAutoScalingGroup_maxInstanceLifetime,
    updateAutoScalingGroup_defaultCooldown,
    updateAutoScalingGroup_maxSize,
    updateAutoScalingGroup_availabilityZones,
    updateAutoScalingGroup_desiredCapacity,
    updateAutoScalingGroup_mixedInstancesPolicy,
    updateAutoScalingGroup_minSize,
    updateAutoScalingGroup_launchConfigurationName,
    updateAutoScalingGroup_healthCheckType,
    updateAutoScalingGroup_launchTemplate,
    updateAutoScalingGroup_capacityRebalance,
    updateAutoScalingGroup_placementGroup,
    updateAutoScalingGroup_autoScalingGroupName,

    -- * Destructuring the Response
    UpdateAutoScalingGroupResponse (..),
    newUpdateAutoScalingGroupResponse,
  )
where

import Amazonka.AutoScaling.Types
import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newUpdateAutoScalingGroup' smart constructor.
data UpdateAutoScalingGroup = UpdateAutoScalingGroup'
  { -- | Reserved.
    UpdateAutoScalingGroup -> Maybe Text
context :: Prelude.Maybe Prelude.Text,
    -- | A policy or a list of policies that are used to select the instances to
    -- terminate. The policies are executed in the order that you list them.
    -- For more information, see
    -- <https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-instance-termination.html Controlling which Auto Scaling instances terminate during scale in>
    -- in the /Amazon EC2 Auto Scaling User Guide/.
    UpdateAutoScalingGroup -> Maybe [Text]
terminationPolicies :: Prelude.Maybe [Prelude.Text],
    -- | The amount of time, in seconds, that Amazon EC2 Auto Scaling waits
    -- before checking the health status of an EC2 instance that has come into
    -- service. The default value is @0@. For more information, see
    -- <https://docs.aws.amazon.com/autoscaling/ec2/userguide/healthcheck.html#health-check-grace-period Health check grace period>
    -- in the /Amazon EC2 Auto Scaling User Guide/.
    --
    -- Conditional: Required if you are adding an @ELB@ health check.
    UpdateAutoScalingGroup -> Maybe Int
healthCheckGracePeriod :: Prelude.Maybe Prelude.Int,
    -- | The Amazon Resource Name (ARN) of the service-linked role that the Auto
    -- Scaling group uses to call other Amazon Web Services on your behalf. For
    -- more information, see
    -- <https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-service-linked-role.html Service-linked roles>
    -- in the /Amazon EC2 Auto Scaling User Guide/.
    UpdateAutoScalingGroup -> Maybe Text
serviceLinkedRoleARN :: Prelude.Maybe Prelude.Text,
    -- | Indicates whether newly launched instances are protected from
    -- termination by Amazon EC2 Auto Scaling when scaling in. For more
    -- information about preventing instances from terminating on scale in, see
    -- <https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-instance-termination.html#instance-protection Instance scale-in protection>
    -- in the /Amazon EC2 Auto Scaling User Guide/.
    UpdateAutoScalingGroup -> Maybe Bool
newInstancesProtectedFromScaleIn' :: Prelude.Maybe Prelude.Bool,
    -- | A comma-separated list of subnet IDs for a virtual private cloud (VPC).
    -- If you specify @VPCZoneIdentifier@ with @AvailabilityZones@, the subnets
    -- that you specify for this parameter must reside in those Availability
    -- Zones.
    UpdateAutoScalingGroup -> Maybe Text
vPCZoneIdentifier :: Prelude.Maybe Prelude.Text,
    -- | The maximum amount of time, in seconds, that an instance can be in
    -- service. The default is null. If specified, the value must be either 0
    -- or a number equal to or greater than 86,400 seconds (1 day). To clear a
    -- previously set value, specify a new value of 0. For more information,
    -- see
    -- <https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-max-instance-lifetime.html Replacing Auto Scaling instances based on maximum instance lifetime>
    -- in the /Amazon EC2 Auto Scaling User Guide/.
    UpdateAutoScalingGroup -> Maybe Int
maxInstanceLifetime :: Prelude.Maybe Prelude.Int,
    -- | The amount of time, in seconds, after a scaling activity completes
    -- before another scaling activity can start. The default value is @300@.
    -- This setting applies when using simple scaling policies, but not when
    -- using other scaling policies or scheduled scaling. For more information,
    -- see
    -- <https://docs.aws.amazon.com/autoscaling/ec2/userguide/Cooldown.html Scaling cooldowns for Amazon EC2 Auto Scaling>
    -- in the /Amazon EC2 Auto Scaling User Guide/.
    UpdateAutoScalingGroup -> Maybe Int
defaultCooldown :: Prelude.Maybe Prelude.Int,
    -- | The maximum size of the Auto Scaling group.
    --
    -- With a mixed instances policy that uses instance weighting, Amazon EC2
    -- Auto Scaling may need to go above @MaxSize@ to meet your capacity
    -- requirements. In this event, Amazon EC2 Auto Scaling will never go above
    -- @MaxSize@ by more than your largest instance weight (weights that define
    -- how many units each instance contributes to the desired capacity of the
    -- group).
    UpdateAutoScalingGroup -> Maybe Int
maxSize :: Prelude.Maybe Prelude.Int,
    -- | One or more Availability Zones for the group.
    UpdateAutoScalingGroup -> Maybe [Text]
availabilityZones :: Prelude.Maybe [Prelude.Text],
    -- | The desired capacity is the initial capacity of the Auto Scaling group
    -- after this operation completes and the capacity it attempts to maintain.
    -- This number must be greater than or equal to the minimum size of the
    -- group and less than or equal to the maximum size of the group.
    UpdateAutoScalingGroup -> Maybe Int
desiredCapacity :: Prelude.Maybe Prelude.Int,
    -- | An embedded object that specifies a mixed instances policy. When you
    -- make changes to an existing policy, all optional properties are left
    -- unchanged if not specified. For more information, see
    -- <https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-purchase-options.html Auto Scaling groups with multiple instance types and purchase options>
    -- in the /Amazon EC2 Auto Scaling User Guide/.
    UpdateAutoScalingGroup -> Maybe MixedInstancesPolicy
mixedInstancesPolicy :: Prelude.Maybe MixedInstancesPolicy,
    -- | The minimum size of the Auto Scaling group.
    UpdateAutoScalingGroup -> Maybe Int
minSize :: Prelude.Maybe Prelude.Int,
    -- | The name of the launch configuration. If you specify
    -- @LaunchConfigurationName@ in your update request, you can\'t specify
    -- @LaunchTemplate@ or @MixedInstancesPolicy@.
    UpdateAutoScalingGroup -> Maybe Text
launchConfigurationName :: Prelude.Maybe Prelude.Text,
    -- | The service to use for the health checks. The valid values are @EC2@ and
    -- @ELB@. If you configure an Auto Scaling group to use @ELB@ health
    -- checks, it considers the instance unhealthy if it fails either the EC2
    -- status checks or the load balancer health checks.
    UpdateAutoScalingGroup -> Maybe Text
healthCheckType :: Prelude.Maybe Prelude.Text,
    -- | The launch template and version to use to specify the updates. If you
    -- specify @LaunchTemplate@ in your update request, you can\'t specify
    -- @LaunchConfigurationName@ or @MixedInstancesPolicy@.
    UpdateAutoScalingGroup -> Maybe LaunchTemplateSpecification
launchTemplate :: Prelude.Maybe LaunchTemplateSpecification,
    -- | Enables or disables Capacity Rebalancing. For more information, see
    -- <https://docs.aws.amazon.com/autoscaling/ec2/userguide/capacity-rebalance.html Amazon EC2 Auto Scaling Capacity Rebalancing>
    -- in the /Amazon EC2 Auto Scaling User Guide/.
    UpdateAutoScalingGroup -> Maybe Bool
capacityRebalance :: Prelude.Maybe Prelude.Bool,
    -- | The name of an existing placement group into which to launch your
    -- instances, if any. A placement group is a logical grouping of instances
    -- within a single Availability Zone. You cannot specify multiple
    -- Availability Zones and a placement group. For more information, see
    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html Placement Groups>
    -- in the /Amazon EC2 User Guide for Linux Instances/.
    UpdateAutoScalingGroup -> Maybe Text
placementGroup :: Prelude.Maybe Prelude.Text,
    -- | The name of the Auto Scaling group.
    UpdateAutoScalingGroup -> Text
autoScalingGroupName :: Prelude.Text
  }
  deriving (UpdateAutoScalingGroup -> UpdateAutoScalingGroup -> Bool
(UpdateAutoScalingGroup -> UpdateAutoScalingGroup -> Bool)
-> (UpdateAutoScalingGroup -> UpdateAutoScalingGroup -> Bool)
-> Eq UpdateAutoScalingGroup
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateAutoScalingGroup -> UpdateAutoScalingGroup -> Bool
$c/= :: UpdateAutoScalingGroup -> UpdateAutoScalingGroup -> Bool
== :: UpdateAutoScalingGroup -> UpdateAutoScalingGroup -> Bool
$c== :: UpdateAutoScalingGroup -> UpdateAutoScalingGroup -> Bool
Prelude.Eq, ReadPrec [UpdateAutoScalingGroup]
ReadPrec UpdateAutoScalingGroup
Int -> ReadS UpdateAutoScalingGroup
ReadS [UpdateAutoScalingGroup]
(Int -> ReadS UpdateAutoScalingGroup)
-> ReadS [UpdateAutoScalingGroup]
-> ReadPrec UpdateAutoScalingGroup
-> ReadPrec [UpdateAutoScalingGroup]
-> Read UpdateAutoScalingGroup
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateAutoScalingGroup]
$creadListPrec :: ReadPrec [UpdateAutoScalingGroup]
readPrec :: ReadPrec UpdateAutoScalingGroup
$creadPrec :: ReadPrec UpdateAutoScalingGroup
readList :: ReadS [UpdateAutoScalingGroup]
$creadList :: ReadS [UpdateAutoScalingGroup]
readsPrec :: Int -> ReadS UpdateAutoScalingGroup
$creadsPrec :: Int -> ReadS UpdateAutoScalingGroup
Prelude.Read, Int -> UpdateAutoScalingGroup -> ShowS
[UpdateAutoScalingGroup] -> ShowS
UpdateAutoScalingGroup -> String
(Int -> UpdateAutoScalingGroup -> ShowS)
-> (UpdateAutoScalingGroup -> String)
-> ([UpdateAutoScalingGroup] -> ShowS)
-> Show UpdateAutoScalingGroup
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateAutoScalingGroup] -> ShowS
$cshowList :: [UpdateAutoScalingGroup] -> ShowS
show :: UpdateAutoScalingGroup -> String
$cshow :: UpdateAutoScalingGroup -> String
showsPrec :: Int -> UpdateAutoScalingGroup -> ShowS
$cshowsPrec :: Int -> UpdateAutoScalingGroup -> ShowS
Prelude.Show, (forall x. UpdateAutoScalingGroup -> Rep UpdateAutoScalingGroup x)
-> (forall x.
    Rep UpdateAutoScalingGroup x -> UpdateAutoScalingGroup)
-> Generic UpdateAutoScalingGroup
forall x. Rep UpdateAutoScalingGroup x -> UpdateAutoScalingGroup
forall x. UpdateAutoScalingGroup -> Rep UpdateAutoScalingGroup x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep UpdateAutoScalingGroup x -> UpdateAutoScalingGroup
$cfrom :: forall x. UpdateAutoScalingGroup -> Rep UpdateAutoScalingGroup x
Prelude.Generic)

-- |
-- Create a value of 'UpdateAutoScalingGroup' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'context', 'updateAutoScalingGroup_context' - Reserved.
--
-- 'terminationPolicies', 'updateAutoScalingGroup_terminationPolicies' - A policy or a list of policies that are used to select the instances to
-- terminate. The policies are executed in the order that you list them.
-- For more information, see
-- <https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-instance-termination.html Controlling which Auto Scaling instances terminate during scale in>
-- in the /Amazon EC2 Auto Scaling User Guide/.
--
-- 'healthCheckGracePeriod', 'updateAutoScalingGroup_healthCheckGracePeriod' - The amount of time, in seconds, that Amazon EC2 Auto Scaling waits
-- before checking the health status of an EC2 instance that has come into
-- service. The default value is @0@. For more information, see
-- <https://docs.aws.amazon.com/autoscaling/ec2/userguide/healthcheck.html#health-check-grace-period Health check grace period>
-- in the /Amazon EC2 Auto Scaling User Guide/.
--
-- Conditional: Required if you are adding an @ELB@ health check.
--
-- 'serviceLinkedRoleARN', 'updateAutoScalingGroup_serviceLinkedRoleARN' - The Amazon Resource Name (ARN) of the service-linked role that the Auto
-- Scaling group uses to call other Amazon Web Services on your behalf. For
-- more information, see
-- <https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-service-linked-role.html Service-linked roles>
-- in the /Amazon EC2 Auto Scaling User Guide/.
--
-- 'newInstancesProtectedFromScaleIn'', 'updateAutoScalingGroup_newInstancesProtectedFromScaleIn' - Indicates whether newly launched instances are protected from
-- termination by Amazon EC2 Auto Scaling when scaling in. For more
-- information about preventing instances from terminating on scale in, see
-- <https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-instance-termination.html#instance-protection Instance scale-in protection>
-- in the /Amazon EC2 Auto Scaling User Guide/.
--
-- 'vPCZoneIdentifier', 'updateAutoScalingGroup_vPCZoneIdentifier' - A comma-separated list of subnet IDs for a virtual private cloud (VPC).
-- If you specify @VPCZoneIdentifier@ with @AvailabilityZones@, the subnets
-- that you specify for this parameter must reside in those Availability
-- Zones.
--
-- 'maxInstanceLifetime', 'updateAutoScalingGroup_maxInstanceLifetime' - The maximum amount of time, in seconds, that an instance can be in
-- service. The default is null. If specified, the value must be either 0
-- or a number equal to or greater than 86,400 seconds (1 day). To clear a
-- previously set value, specify a new value of 0. For more information,
-- see
-- <https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-max-instance-lifetime.html Replacing Auto Scaling instances based on maximum instance lifetime>
-- in the /Amazon EC2 Auto Scaling User Guide/.
--
-- 'defaultCooldown', 'updateAutoScalingGroup_defaultCooldown' - The amount of time, in seconds, after a scaling activity completes
-- before another scaling activity can start. The default value is @300@.
-- This setting applies when using simple scaling policies, but not when
-- using other scaling policies or scheduled scaling. For more information,
-- see
-- <https://docs.aws.amazon.com/autoscaling/ec2/userguide/Cooldown.html Scaling cooldowns for Amazon EC2 Auto Scaling>
-- in the /Amazon EC2 Auto Scaling User Guide/.
--
-- 'maxSize', 'updateAutoScalingGroup_maxSize' - The maximum size of the Auto Scaling group.
--
-- With a mixed instances policy that uses instance weighting, Amazon EC2
-- Auto Scaling may need to go above @MaxSize@ to meet your capacity
-- requirements. In this event, Amazon EC2 Auto Scaling will never go above
-- @MaxSize@ by more than your largest instance weight (weights that define
-- how many units each instance contributes to the desired capacity of the
-- group).
--
-- 'availabilityZones', 'updateAutoScalingGroup_availabilityZones' - One or more Availability Zones for the group.
--
-- 'desiredCapacity', 'updateAutoScalingGroup_desiredCapacity' - The desired capacity is the initial capacity of the Auto Scaling group
-- after this operation completes and the capacity it attempts to maintain.
-- This number must be greater than or equal to the minimum size of the
-- group and less than or equal to the maximum size of the group.
--
-- 'mixedInstancesPolicy', 'updateAutoScalingGroup_mixedInstancesPolicy' - An embedded object that specifies a mixed instances policy. When you
-- make changes to an existing policy, all optional properties are left
-- unchanged if not specified. For more information, see
-- <https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-purchase-options.html Auto Scaling groups with multiple instance types and purchase options>
-- in the /Amazon EC2 Auto Scaling User Guide/.
--
-- 'minSize', 'updateAutoScalingGroup_minSize' - The minimum size of the Auto Scaling group.
--
-- 'launchConfigurationName', 'updateAutoScalingGroup_launchConfigurationName' - The name of the launch configuration. If you specify
-- @LaunchConfigurationName@ in your update request, you can\'t specify
-- @LaunchTemplate@ or @MixedInstancesPolicy@.
--
-- 'healthCheckType', 'updateAutoScalingGroup_healthCheckType' - The service to use for the health checks. The valid values are @EC2@ and
-- @ELB@. If you configure an Auto Scaling group to use @ELB@ health
-- checks, it considers the instance unhealthy if it fails either the EC2
-- status checks or the load balancer health checks.
--
-- 'launchTemplate', 'updateAutoScalingGroup_launchTemplate' - The launch template and version to use to specify the updates. If you
-- specify @LaunchTemplate@ in your update request, you can\'t specify
-- @LaunchConfigurationName@ or @MixedInstancesPolicy@.
--
-- 'capacityRebalance', 'updateAutoScalingGroup_capacityRebalance' - Enables or disables Capacity Rebalancing. For more information, see
-- <https://docs.aws.amazon.com/autoscaling/ec2/userguide/capacity-rebalance.html Amazon EC2 Auto Scaling Capacity Rebalancing>
-- in the /Amazon EC2 Auto Scaling User Guide/.
--
-- 'placementGroup', 'updateAutoScalingGroup_placementGroup' - The name of an existing placement group into which to launch your
-- instances, if any. A placement group is a logical grouping of instances
-- within a single Availability Zone. You cannot specify multiple
-- Availability Zones and a placement group. For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html Placement Groups>
-- in the /Amazon EC2 User Guide for Linux Instances/.
--
-- 'autoScalingGroupName', 'updateAutoScalingGroup_autoScalingGroupName' - The name of the Auto Scaling group.
newUpdateAutoScalingGroup ::
  -- | 'autoScalingGroupName'
  Prelude.Text ->
  UpdateAutoScalingGroup
newUpdateAutoScalingGroup :: Text -> UpdateAutoScalingGroup
newUpdateAutoScalingGroup Text
pAutoScalingGroupName_ =
  UpdateAutoScalingGroup' :: Maybe Text
-> Maybe [Text]
-> Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Int
-> Maybe Int
-> Maybe Int
-> Maybe [Text]
-> Maybe Int
-> Maybe MixedInstancesPolicy
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Maybe LaunchTemplateSpecification
-> Maybe Bool
-> Maybe Text
-> Text
-> UpdateAutoScalingGroup
UpdateAutoScalingGroup'
    { $sel:context:UpdateAutoScalingGroup' :: Maybe Text
context = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:terminationPolicies:UpdateAutoScalingGroup' :: Maybe [Text]
terminationPolicies = Maybe [Text]
forall a. Maybe a
Prelude.Nothing,
      $sel:healthCheckGracePeriod:UpdateAutoScalingGroup' :: Maybe Int
healthCheckGracePeriod = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:serviceLinkedRoleARN:UpdateAutoScalingGroup' :: Maybe Text
serviceLinkedRoleARN = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:newInstancesProtectedFromScaleIn':UpdateAutoScalingGroup' :: Maybe Bool
newInstancesProtectedFromScaleIn' = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:vPCZoneIdentifier:UpdateAutoScalingGroup' :: Maybe Text
vPCZoneIdentifier = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:maxInstanceLifetime:UpdateAutoScalingGroup' :: Maybe Int
maxInstanceLifetime = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:defaultCooldown:UpdateAutoScalingGroup' :: Maybe Int
defaultCooldown = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:maxSize:UpdateAutoScalingGroup' :: Maybe Int
maxSize = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:availabilityZones:UpdateAutoScalingGroup' :: Maybe [Text]
availabilityZones = Maybe [Text]
forall a. Maybe a
Prelude.Nothing,
      $sel:desiredCapacity:UpdateAutoScalingGroup' :: Maybe Int
desiredCapacity = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:mixedInstancesPolicy:UpdateAutoScalingGroup' :: Maybe MixedInstancesPolicy
mixedInstancesPolicy = Maybe MixedInstancesPolicy
forall a. Maybe a
Prelude.Nothing,
      $sel:minSize:UpdateAutoScalingGroup' :: Maybe Int
minSize = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:launchConfigurationName:UpdateAutoScalingGroup' :: Maybe Text
launchConfigurationName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:healthCheckType:UpdateAutoScalingGroup' :: Maybe Text
healthCheckType = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:launchTemplate:UpdateAutoScalingGroup' :: Maybe LaunchTemplateSpecification
launchTemplate = Maybe LaunchTemplateSpecification
forall a. Maybe a
Prelude.Nothing,
      $sel:capacityRebalance:UpdateAutoScalingGroup' :: Maybe Bool
capacityRebalance = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:placementGroup:UpdateAutoScalingGroup' :: Maybe Text
placementGroup = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:autoScalingGroupName:UpdateAutoScalingGroup' :: Text
autoScalingGroupName = Text
pAutoScalingGroupName_
    }

-- | Reserved.
updateAutoScalingGroup_context :: Lens.Lens' UpdateAutoScalingGroup (Prelude.Maybe Prelude.Text)
updateAutoScalingGroup_context :: (Maybe Text -> f (Maybe Text))
-> UpdateAutoScalingGroup -> f UpdateAutoScalingGroup
updateAutoScalingGroup_context = (UpdateAutoScalingGroup -> Maybe Text)
-> (UpdateAutoScalingGroup -> Maybe Text -> UpdateAutoScalingGroup)
-> Lens
     UpdateAutoScalingGroup
     UpdateAutoScalingGroup
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateAutoScalingGroup' {Maybe Text
context :: Maybe Text
$sel:context:UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Maybe Text
context} -> Maybe Text
context) (\s :: UpdateAutoScalingGroup
s@UpdateAutoScalingGroup' {} Maybe Text
a -> UpdateAutoScalingGroup
s {$sel:context:UpdateAutoScalingGroup' :: Maybe Text
context = Maybe Text
a} :: UpdateAutoScalingGroup)

-- | A policy or a list of policies that are used to select the instances to
-- terminate. The policies are executed in the order that you list them.
-- For more information, see
-- <https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-instance-termination.html Controlling which Auto Scaling instances terminate during scale in>
-- in the /Amazon EC2 Auto Scaling User Guide/.
updateAutoScalingGroup_terminationPolicies :: Lens.Lens' UpdateAutoScalingGroup (Prelude.Maybe [Prelude.Text])
updateAutoScalingGroup_terminationPolicies :: (Maybe [Text] -> f (Maybe [Text]))
-> UpdateAutoScalingGroup -> f UpdateAutoScalingGroup
updateAutoScalingGroup_terminationPolicies = (UpdateAutoScalingGroup -> Maybe [Text])
-> (UpdateAutoScalingGroup
    -> Maybe [Text] -> UpdateAutoScalingGroup)
-> Lens
     UpdateAutoScalingGroup
     UpdateAutoScalingGroup
     (Maybe [Text])
     (Maybe [Text])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateAutoScalingGroup' {Maybe [Text]
terminationPolicies :: Maybe [Text]
$sel:terminationPolicies:UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Maybe [Text]
terminationPolicies} -> Maybe [Text]
terminationPolicies) (\s :: UpdateAutoScalingGroup
s@UpdateAutoScalingGroup' {} Maybe [Text]
a -> UpdateAutoScalingGroup
s {$sel:terminationPolicies:UpdateAutoScalingGroup' :: Maybe [Text]
terminationPolicies = Maybe [Text]
a} :: UpdateAutoScalingGroup) ((Maybe [Text] -> f (Maybe [Text]))
 -> UpdateAutoScalingGroup -> f UpdateAutoScalingGroup)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> UpdateAutoScalingGroup
-> f UpdateAutoScalingGroup
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Text] [Text] [Text] [Text]
-> Iso (Maybe [Text]) (Maybe [Text]) (Maybe [Text]) (Maybe [Text])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso [Text] [Text] [Text] [Text]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The amount of time, in seconds, that Amazon EC2 Auto Scaling waits
-- before checking the health status of an EC2 instance that has come into
-- service. The default value is @0@. For more information, see
-- <https://docs.aws.amazon.com/autoscaling/ec2/userguide/healthcheck.html#health-check-grace-period Health check grace period>
-- in the /Amazon EC2 Auto Scaling User Guide/.
--
-- Conditional: Required if you are adding an @ELB@ health check.
updateAutoScalingGroup_healthCheckGracePeriod :: Lens.Lens' UpdateAutoScalingGroup (Prelude.Maybe Prelude.Int)
updateAutoScalingGroup_healthCheckGracePeriod :: (Maybe Int -> f (Maybe Int))
-> UpdateAutoScalingGroup -> f UpdateAutoScalingGroup
updateAutoScalingGroup_healthCheckGracePeriod = (UpdateAutoScalingGroup -> Maybe Int)
-> (UpdateAutoScalingGroup -> Maybe Int -> UpdateAutoScalingGroup)
-> Lens
     UpdateAutoScalingGroup
     UpdateAutoScalingGroup
     (Maybe Int)
     (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateAutoScalingGroup' {Maybe Int
healthCheckGracePeriod :: Maybe Int
$sel:healthCheckGracePeriod:UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Maybe Int
healthCheckGracePeriod} -> Maybe Int
healthCheckGracePeriod) (\s :: UpdateAutoScalingGroup
s@UpdateAutoScalingGroup' {} Maybe Int
a -> UpdateAutoScalingGroup
s {$sel:healthCheckGracePeriod:UpdateAutoScalingGroup' :: Maybe Int
healthCheckGracePeriod = Maybe Int
a} :: UpdateAutoScalingGroup)

-- | The Amazon Resource Name (ARN) of the service-linked role that the Auto
-- Scaling group uses to call other Amazon Web Services on your behalf. For
-- more information, see
-- <https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-service-linked-role.html Service-linked roles>
-- in the /Amazon EC2 Auto Scaling User Guide/.
updateAutoScalingGroup_serviceLinkedRoleARN :: Lens.Lens' UpdateAutoScalingGroup (Prelude.Maybe Prelude.Text)
updateAutoScalingGroup_serviceLinkedRoleARN :: (Maybe Text -> f (Maybe Text))
-> UpdateAutoScalingGroup -> f UpdateAutoScalingGroup
updateAutoScalingGroup_serviceLinkedRoleARN = (UpdateAutoScalingGroup -> Maybe Text)
-> (UpdateAutoScalingGroup -> Maybe Text -> UpdateAutoScalingGroup)
-> Lens
     UpdateAutoScalingGroup
     UpdateAutoScalingGroup
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateAutoScalingGroup' {Maybe Text
serviceLinkedRoleARN :: Maybe Text
$sel:serviceLinkedRoleARN:UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Maybe Text
serviceLinkedRoleARN} -> Maybe Text
serviceLinkedRoleARN) (\s :: UpdateAutoScalingGroup
s@UpdateAutoScalingGroup' {} Maybe Text
a -> UpdateAutoScalingGroup
s {$sel:serviceLinkedRoleARN:UpdateAutoScalingGroup' :: Maybe Text
serviceLinkedRoleARN = Maybe Text
a} :: UpdateAutoScalingGroup)

-- | Indicates whether newly launched instances are protected from
-- termination by Amazon EC2 Auto Scaling when scaling in. For more
-- information about preventing instances from terminating on scale in, see
-- <https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-instance-termination.html#instance-protection Instance scale-in protection>
-- in the /Amazon EC2 Auto Scaling User Guide/.
updateAutoScalingGroup_newInstancesProtectedFromScaleIn :: Lens.Lens' UpdateAutoScalingGroup (Prelude.Maybe Prelude.Bool)
updateAutoScalingGroup_newInstancesProtectedFromScaleIn :: (Maybe Bool -> f (Maybe Bool))
-> UpdateAutoScalingGroup -> f UpdateAutoScalingGroup
updateAutoScalingGroup_newInstancesProtectedFromScaleIn = (UpdateAutoScalingGroup -> Maybe Bool)
-> (UpdateAutoScalingGroup -> Maybe Bool -> UpdateAutoScalingGroup)
-> Lens
     UpdateAutoScalingGroup
     UpdateAutoScalingGroup
     (Maybe Bool)
     (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateAutoScalingGroup' {Maybe Bool
newInstancesProtectedFromScaleIn' :: Maybe Bool
$sel:newInstancesProtectedFromScaleIn':UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Maybe Bool
newInstancesProtectedFromScaleIn'} -> Maybe Bool
newInstancesProtectedFromScaleIn') (\s :: UpdateAutoScalingGroup
s@UpdateAutoScalingGroup' {} Maybe Bool
a -> UpdateAutoScalingGroup
s {$sel:newInstancesProtectedFromScaleIn':UpdateAutoScalingGroup' :: Maybe Bool
newInstancesProtectedFromScaleIn' = Maybe Bool
a} :: UpdateAutoScalingGroup)

-- | A comma-separated list of subnet IDs for a virtual private cloud (VPC).
-- If you specify @VPCZoneIdentifier@ with @AvailabilityZones@, the subnets
-- that you specify for this parameter must reside in those Availability
-- Zones.
updateAutoScalingGroup_vPCZoneIdentifier :: Lens.Lens' UpdateAutoScalingGroup (Prelude.Maybe Prelude.Text)
updateAutoScalingGroup_vPCZoneIdentifier :: (Maybe Text -> f (Maybe Text))
-> UpdateAutoScalingGroup -> f UpdateAutoScalingGroup
updateAutoScalingGroup_vPCZoneIdentifier = (UpdateAutoScalingGroup -> Maybe Text)
-> (UpdateAutoScalingGroup -> Maybe Text -> UpdateAutoScalingGroup)
-> Lens
     UpdateAutoScalingGroup
     UpdateAutoScalingGroup
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateAutoScalingGroup' {Maybe Text
vPCZoneIdentifier :: Maybe Text
$sel:vPCZoneIdentifier:UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Maybe Text
vPCZoneIdentifier} -> Maybe Text
vPCZoneIdentifier) (\s :: UpdateAutoScalingGroup
s@UpdateAutoScalingGroup' {} Maybe Text
a -> UpdateAutoScalingGroup
s {$sel:vPCZoneIdentifier:UpdateAutoScalingGroup' :: Maybe Text
vPCZoneIdentifier = Maybe Text
a} :: UpdateAutoScalingGroup)

-- | The maximum amount of time, in seconds, that an instance can be in
-- service. The default is null. If specified, the value must be either 0
-- or a number equal to or greater than 86,400 seconds (1 day). To clear a
-- previously set value, specify a new value of 0. For more information,
-- see
-- <https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-max-instance-lifetime.html Replacing Auto Scaling instances based on maximum instance lifetime>
-- in the /Amazon EC2 Auto Scaling User Guide/.
updateAutoScalingGroup_maxInstanceLifetime :: Lens.Lens' UpdateAutoScalingGroup (Prelude.Maybe Prelude.Int)
updateAutoScalingGroup_maxInstanceLifetime :: (Maybe Int -> f (Maybe Int))
-> UpdateAutoScalingGroup -> f UpdateAutoScalingGroup
updateAutoScalingGroup_maxInstanceLifetime = (UpdateAutoScalingGroup -> Maybe Int)
-> (UpdateAutoScalingGroup -> Maybe Int -> UpdateAutoScalingGroup)
-> Lens
     UpdateAutoScalingGroup
     UpdateAutoScalingGroup
     (Maybe Int)
     (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateAutoScalingGroup' {Maybe Int
maxInstanceLifetime :: Maybe Int
$sel:maxInstanceLifetime:UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Maybe Int
maxInstanceLifetime} -> Maybe Int
maxInstanceLifetime) (\s :: UpdateAutoScalingGroup
s@UpdateAutoScalingGroup' {} Maybe Int
a -> UpdateAutoScalingGroup
s {$sel:maxInstanceLifetime:UpdateAutoScalingGroup' :: Maybe Int
maxInstanceLifetime = Maybe Int
a} :: UpdateAutoScalingGroup)

-- | The amount of time, in seconds, after a scaling activity completes
-- before another scaling activity can start. The default value is @300@.
-- This setting applies when using simple scaling policies, but not when
-- using other scaling policies or scheduled scaling. For more information,
-- see
-- <https://docs.aws.amazon.com/autoscaling/ec2/userguide/Cooldown.html Scaling cooldowns for Amazon EC2 Auto Scaling>
-- in the /Amazon EC2 Auto Scaling User Guide/.
updateAutoScalingGroup_defaultCooldown :: Lens.Lens' UpdateAutoScalingGroup (Prelude.Maybe Prelude.Int)
updateAutoScalingGroup_defaultCooldown :: (Maybe Int -> f (Maybe Int))
-> UpdateAutoScalingGroup -> f UpdateAutoScalingGroup
updateAutoScalingGroup_defaultCooldown = (UpdateAutoScalingGroup -> Maybe Int)
-> (UpdateAutoScalingGroup -> Maybe Int -> UpdateAutoScalingGroup)
-> Lens
     UpdateAutoScalingGroup
     UpdateAutoScalingGroup
     (Maybe Int)
     (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateAutoScalingGroup' {Maybe Int
defaultCooldown :: Maybe Int
$sel:defaultCooldown:UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Maybe Int
defaultCooldown} -> Maybe Int
defaultCooldown) (\s :: UpdateAutoScalingGroup
s@UpdateAutoScalingGroup' {} Maybe Int
a -> UpdateAutoScalingGroup
s {$sel:defaultCooldown:UpdateAutoScalingGroup' :: Maybe Int
defaultCooldown = Maybe Int
a} :: UpdateAutoScalingGroup)

-- | The maximum size of the Auto Scaling group.
--
-- With a mixed instances policy that uses instance weighting, Amazon EC2
-- Auto Scaling may need to go above @MaxSize@ to meet your capacity
-- requirements. In this event, Amazon EC2 Auto Scaling will never go above
-- @MaxSize@ by more than your largest instance weight (weights that define
-- how many units each instance contributes to the desired capacity of the
-- group).
updateAutoScalingGroup_maxSize :: Lens.Lens' UpdateAutoScalingGroup (Prelude.Maybe Prelude.Int)
updateAutoScalingGroup_maxSize :: (Maybe Int -> f (Maybe Int))
-> UpdateAutoScalingGroup -> f UpdateAutoScalingGroup
updateAutoScalingGroup_maxSize = (UpdateAutoScalingGroup -> Maybe Int)
-> (UpdateAutoScalingGroup -> Maybe Int -> UpdateAutoScalingGroup)
-> Lens
     UpdateAutoScalingGroup
     UpdateAutoScalingGroup
     (Maybe Int)
     (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateAutoScalingGroup' {Maybe Int
maxSize :: Maybe Int
$sel:maxSize:UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Maybe Int
maxSize} -> Maybe Int
maxSize) (\s :: UpdateAutoScalingGroup
s@UpdateAutoScalingGroup' {} Maybe Int
a -> UpdateAutoScalingGroup
s {$sel:maxSize:UpdateAutoScalingGroup' :: Maybe Int
maxSize = Maybe Int
a} :: UpdateAutoScalingGroup)

-- | One or more Availability Zones for the group.
updateAutoScalingGroup_availabilityZones :: Lens.Lens' UpdateAutoScalingGroup (Prelude.Maybe [Prelude.Text])
updateAutoScalingGroup_availabilityZones :: (Maybe [Text] -> f (Maybe [Text]))
-> UpdateAutoScalingGroup -> f UpdateAutoScalingGroup
updateAutoScalingGroup_availabilityZones = (UpdateAutoScalingGroup -> Maybe [Text])
-> (UpdateAutoScalingGroup
    -> Maybe [Text] -> UpdateAutoScalingGroup)
-> Lens
     UpdateAutoScalingGroup
     UpdateAutoScalingGroup
     (Maybe [Text])
     (Maybe [Text])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateAutoScalingGroup' {Maybe [Text]
availabilityZones :: Maybe [Text]
$sel:availabilityZones:UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Maybe [Text]
availabilityZones} -> Maybe [Text]
availabilityZones) (\s :: UpdateAutoScalingGroup
s@UpdateAutoScalingGroup' {} Maybe [Text]
a -> UpdateAutoScalingGroup
s {$sel:availabilityZones:UpdateAutoScalingGroup' :: Maybe [Text]
availabilityZones = Maybe [Text]
a} :: UpdateAutoScalingGroup) ((Maybe [Text] -> f (Maybe [Text]))
 -> UpdateAutoScalingGroup -> f UpdateAutoScalingGroup)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> UpdateAutoScalingGroup
-> f UpdateAutoScalingGroup
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Text] [Text] [Text] [Text]
-> Iso (Maybe [Text]) (Maybe [Text]) (Maybe [Text]) (Maybe [Text])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso [Text] [Text] [Text] [Text]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The desired capacity is the initial capacity of the Auto Scaling group
-- after this operation completes and the capacity it attempts to maintain.
-- This number must be greater than or equal to the minimum size of the
-- group and less than or equal to the maximum size of the group.
updateAutoScalingGroup_desiredCapacity :: Lens.Lens' UpdateAutoScalingGroup (Prelude.Maybe Prelude.Int)
updateAutoScalingGroup_desiredCapacity :: (Maybe Int -> f (Maybe Int))
-> UpdateAutoScalingGroup -> f UpdateAutoScalingGroup
updateAutoScalingGroup_desiredCapacity = (UpdateAutoScalingGroup -> Maybe Int)
-> (UpdateAutoScalingGroup -> Maybe Int -> UpdateAutoScalingGroup)
-> Lens
     UpdateAutoScalingGroup
     UpdateAutoScalingGroup
     (Maybe Int)
     (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateAutoScalingGroup' {Maybe Int
desiredCapacity :: Maybe Int
$sel:desiredCapacity:UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Maybe Int
desiredCapacity} -> Maybe Int
desiredCapacity) (\s :: UpdateAutoScalingGroup
s@UpdateAutoScalingGroup' {} Maybe Int
a -> UpdateAutoScalingGroup
s {$sel:desiredCapacity:UpdateAutoScalingGroup' :: Maybe Int
desiredCapacity = Maybe Int
a} :: UpdateAutoScalingGroup)

-- | An embedded object that specifies a mixed instances policy. When you
-- make changes to an existing policy, all optional properties are left
-- unchanged if not specified. For more information, see
-- <https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-purchase-options.html Auto Scaling groups with multiple instance types and purchase options>
-- in the /Amazon EC2 Auto Scaling User Guide/.
updateAutoScalingGroup_mixedInstancesPolicy :: Lens.Lens' UpdateAutoScalingGroup (Prelude.Maybe MixedInstancesPolicy)
updateAutoScalingGroup_mixedInstancesPolicy :: (Maybe MixedInstancesPolicy -> f (Maybe MixedInstancesPolicy))
-> UpdateAutoScalingGroup -> f UpdateAutoScalingGroup
updateAutoScalingGroup_mixedInstancesPolicy = (UpdateAutoScalingGroup -> Maybe MixedInstancesPolicy)
-> (UpdateAutoScalingGroup
    -> Maybe MixedInstancesPolicy -> UpdateAutoScalingGroup)
-> Lens
     UpdateAutoScalingGroup
     UpdateAutoScalingGroup
     (Maybe MixedInstancesPolicy)
     (Maybe MixedInstancesPolicy)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateAutoScalingGroup' {Maybe MixedInstancesPolicy
mixedInstancesPolicy :: Maybe MixedInstancesPolicy
$sel:mixedInstancesPolicy:UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Maybe MixedInstancesPolicy
mixedInstancesPolicy} -> Maybe MixedInstancesPolicy
mixedInstancesPolicy) (\s :: UpdateAutoScalingGroup
s@UpdateAutoScalingGroup' {} Maybe MixedInstancesPolicy
a -> UpdateAutoScalingGroup
s {$sel:mixedInstancesPolicy:UpdateAutoScalingGroup' :: Maybe MixedInstancesPolicy
mixedInstancesPolicy = Maybe MixedInstancesPolicy
a} :: UpdateAutoScalingGroup)

-- | The minimum size of the Auto Scaling group.
updateAutoScalingGroup_minSize :: Lens.Lens' UpdateAutoScalingGroup (Prelude.Maybe Prelude.Int)
updateAutoScalingGroup_minSize :: (Maybe Int -> f (Maybe Int))
-> UpdateAutoScalingGroup -> f UpdateAutoScalingGroup
updateAutoScalingGroup_minSize = (UpdateAutoScalingGroup -> Maybe Int)
-> (UpdateAutoScalingGroup -> Maybe Int -> UpdateAutoScalingGroup)
-> Lens
     UpdateAutoScalingGroup
     UpdateAutoScalingGroup
     (Maybe Int)
     (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateAutoScalingGroup' {Maybe Int
minSize :: Maybe Int
$sel:minSize:UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Maybe Int
minSize} -> Maybe Int
minSize) (\s :: UpdateAutoScalingGroup
s@UpdateAutoScalingGroup' {} Maybe Int
a -> UpdateAutoScalingGroup
s {$sel:minSize:UpdateAutoScalingGroup' :: Maybe Int
minSize = Maybe Int
a} :: UpdateAutoScalingGroup)

-- | The name of the launch configuration. If you specify
-- @LaunchConfigurationName@ in your update request, you can\'t specify
-- @LaunchTemplate@ or @MixedInstancesPolicy@.
updateAutoScalingGroup_launchConfigurationName :: Lens.Lens' UpdateAutoScalingGroup (Prelude.Maybe Prelude.Text)
updateAutoScalingGroup_launchConfigurationName :: (Maybe Text -> f (Maybe Text))
-> UpdateAutoScalingGroup -> f UpdateAutoScalingGroup
updateAutoScalingGroup_launchConfigurationName = (UpdateAutoScalingGroup -> Maybe Text)
-> (UpdateAutoScalingGroup -> Maybe Text -> UpdateAutoScalingGroup)
-> Lens
     UpdateAutoScalingGroup
     UpdateAutoScalingGroup
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateAutoScalingGroup' {Maybe Text
launchConfigurationName :: Maybe Text
$sel:launchConfigurationName:UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Maybe Text
launchConfigurationName} -> Maybe Text
launchConfigurationName) (\s :: UpdateAutoScalingGroup
s@UpdateAutoScalingGroup' {} Maybe Text
a -> UpdateAutoScalingGroup
s {$sel:launchConfigurationName:UpdateAutoScalingGroup' :: Maybe Text
launchConfigurationName = Maybe Text
a} :: UpdateAutoScalingGroup)

-- | The service to use for the health checks. The valid values are @EC2@ and
-- @ELB@. If you configure an Auto Scaling group to use @ELB@ health
-- checks, it considers the instance unhealthy if it fails either the EC2
-- status checks or the load balancer health checks.
updateAutoScalingGroup_healthCheckType :: Lens.Lens' UpdateAutoScalingGroup (Prelude.Maybe Prelude.Text)
updateAutoScalingGroup_healthCheckType :: (Maybe Text -> f (Maybe Text))
-> UpdateAutoScalingGroup -> f UpdateAutoScalingGroup
updateAutoScalingGroup_healthCheckType = (UpdateAutoScalingGroup -> Maybe Text)
-> (UpdateAutoScalingGroup -> Maybe Text -> UpdateAutoScalingGroup)
-> Lens
     UpdateAutoScalingGroup
     UpdateAutoScalingGroup
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateAutoScalingGroup' {Maybe Text
healthCheckType :: Maybe Text
$sel:healthCheckType:UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Maybe Text
healthCheckType} -> Maybe Text
healthCheckType) (\s :: UpdateAutoScalingGroup
s@UpdateAutoScalingGroup' {} Maybe Text
a -> UpdateAutoScalingGroup
s {$sel:healthCheckType:UpdateAutoScalingGroup' :: Maybe Text
healthCheckType = Maybe Text
a} :: UpdateAutoScalingGroup)

-- | The launch template and version to use to specify the updates. If you
-- specify @LaunchTemplate@ in your update request, you can\'t specify
-- @LaunchConfigurationName@ or @MixedInstancesPolicy@.
updateAutoScalingGroup_launchTemplate :: Lens.Lens' UpdateAutoScalingGroup (Prelude.Maybe LaunchTemplateSpecification)
updateAutoScalingGroup_launchTemplate :: (Maybe LaunchTemplateSpecification
 -> f (Maybe LaunchTemplateSpecification))
-> UpdateAutoScalingGroup -> f UpdateAutoScalingGroup
updateAutoScalingGroup_launchTemplate = (UpdateAutoScalingGroup -> Maybe LaunchTemplateSpecification)
-> (UpdateAutoScalingGroup
    -> Maybe LaunchTemplateSpecification -> UpdateAutoScalingGroup)
-> Lens
     UpdateAutoScalingGroup
     UpdateAutoScalingGroup
     (Maybe LaunchTemplateSpecification)
     (Maybe LaunchTemplateSpecification)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateAutoScalingGroup' {Maybe LaunchTemplateSpecification
launchTemplate :: Maybe LaunchTemplateSpecification
$sel:launchTemplate:UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Maybe LaunchTemplateSpecification
launchTemplate} -> Maybe LaunchTemplateSpecification
launchTemplate) (\s :: UpdateAutoScalingGroup
s@UpdateAutoScalingGroup' {} Maybe LaunchTemplateSpecification
a -> UpdateAutoScalingGroup
s {$sel:launchTemplate:UpdateAutoScalingGroup' :: Maybe LaunchTemplateSpecification
launchTemplate = Maybe LaunchTemplateSpecification
a} :: UpdateAutoScalingGroup)

-- | Enables or disables Capacity Rebalancing. For more information, see
-- <https://docs.aws.amazon.com/autoscaling/ec2/userguide/capacity-rebalance.html Amazon EC2 Auto Scaling Capacity Rebalancing>
-- in the /Amazon EC2 Auto Scaling User Guide/.
updateAutoScalingGroup_capacityRebalance :: Lens.Lens' UpdateAutoScalingGroup (Prelude.Maybe Prelude.Bool)
updateAutoScalingGroup_capacityRebalance :: (Maybe Bool -> f (Maybe Bool))
-> UpdateAutoScalingGroup -> f UpdateAutoScalingGroup
updateAutoScalingGroup_capacityRebalance = (UpdateAutoScalingGroup -> Maybe Bool)
-> (UpdateAutoScalingGroup -> Maybe Bool -> UpdateAutoScalingGroup)
-> Lens
     UpdateAutoScalingGroup
     UpdateAutoScalingGroup
     (Maybe Bool)
     (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateAutoScalingGroup' {Maybe Bool
capacityRebalance :: Maybe Bool
$sel:capacityRebalance:UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Maybe Bool
capacityRebalance} -> Maybe Bool
capacityRebalance) (\s :: UpdateAutoScalingGroup
s@UpdateAutoScalingGroup' {} Maybe Bool
a -> UpdateAutoScalingGroup
s {$sel:capacityRebalance:UpdateAutoScalingGroup' :: Maybe Bool
capacityRebalance = Maybe Bool
a} :: UpdateAutoScalingGroup)

-- | The name of an existing placement group into which to launch your
-- instances, if any. A placement group is a logical grouping of instances
-- within a single Availability Zone. You cannot specify multiple
-- Availability Zones and a placement group. For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html Placement Groups>
-- in the /Amazon EC2 User Guide for Linux Instances/.
updateAutoScalingGroup_placementGroup :: Lens.Lens' UpdateAutoScalingGroup (Prelude.Maybe Prelude.Text)
updateAutoScalingGroup_placementGroup :: (Maybe Text -> f (Maybe Text))
-> UpdateAutoScalingGroup -> f UpdateAutoScalingGroup
updateAutoScalingGroup_placementGroup = (UpdateAutoScalingGroup -> Maybe Text)
-> (UpdateAutoScalingGroup -> Maybe Text -> UpdateAutoScalingGroup)
-> Lens
     UpdateAutoScalingGroup
     UpdateAutoScalingGroup
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateAutoScalingGroup' {Maybe Text
placementGroup :: Maybe Text
$sel:placementGroup:UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Maybe Text
placementGroup} -> Maybe Text
placementGroup) (\s :: UpdateAutoScalingGroup
s@UpdateAutoScalingGroup' {} Maybe Text
a -> UpdateAutoScalingGroup
s {$sel:placementGroup:UpdateAutoScalingGroup' :: Maybe Text
placementGroup = Maybe Text
a} :: UpdateAutoScalingGroup)

-- | The name of the Auto Scaling group.
updateAutoScalingGroup_autoScalingGroupName :: Lens.Lens' UpdateAutoScalingGroup Prelude.Text
updateAutoScalingGroup_autoScalingGroupName :: (Text -> f Text)
-> UpdateAutoScalingGroup -> f UpdateAutoScalingGroup
updateAutoScalingGroup_autoScalingGroupName = (UpdateAutoScalingGroup -> Text)
-> (UpdateAutoScalingGroup -> Text -> UpdateAutoScalingGroup)
-> Lens UpdateAutoScalingGroup UpdateAutoScalingGroup Text Text
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateAutoScalingGroup' {Text
autoScalingGroupName :: Text
$sel:autoScalingGroupName:UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Text
autoScalingGroupName} -> Text
autoScalingGroupName) (\s :: UpdateAutoScalingGroup
s@UpdateAutoScalingGroup' {} Text
a -> UpdateAutoScalingGroup
s {$sel:autoScalingGroupName:UpdateAutoScalingGroup' :: Text
autoScalingGroupName = Text
a} :: UpdateAutoScalingGroup)

instance Core.AWSRequest UpdateAutoScalingGroup where
  type
    AWSResponse UpdateAutoScalingGroup =
      UpdateAutoScalingGroupResponse
  request :: UpdateAutoScalingGroup -> Request UpdateAutoScalingGroup
request = Service -> UpdateAutoScalingGroup -> Request UpdateAutoScalingGroup
forall a. ToRequest a => Service -> a -> Request a
Request.postQuery Service
defaultService
  response :: Logger
-> Service
-> Proxy UpdateAutoScalingGroup
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse UpdateAutoScalingGroup)))
response =
    AWSResponse UpdateAutoScalingGroup
-> Logger
-> Service
-> Proxy UpdateAutoScalingGroup
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse UpdateAutoScalingGroup)))
forall (m :: * -> *) a.
MonadResource m =>
AWSResponse a
-> Logger
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveNull
      AWSResponse UpdateAutoScalingGroup
UpdateAutoScalingGroupResponse
UpdateAutoScalingGroupResponse'

instance Prelude.Hashable UpdateAutoScalingGroup

instance Prelude.NFData UpdateAutoScalingGroup

instance Core.ToHeaders UpdateAutoScalingGroup where
  toHeaders :: UpdateAutoScalingGroup -> [Header]
toHeaders = [Header] -> UpdateAutoScalingGroup -> [Header]
forall a b. a -> b -> a
Prelude.const [Header]
forall a. Monoid a => a
Prelude.mempty

instance Core.ToPath UpdateAutoScalingGroup where
  toPath :: UpdateAutoScalingGroup -> ByteString
toPath = ByteString -> UpdateAutoScalingGroup -> ByteString
forall a b. a -> b -> a
Prelude.const ByteString
"/"

instance Core.ToQuery UpdateAutoScalingGroup where
  toQuery :: UpdateAutoScalingGroup -> QueryString
toQuery UpdateAutoScalingGroup' {Maybe Bool
Maybe Int
Maybe [Text]
Maybe Text
Maybe LaunchTemplateSpecification
Maybe MixedInstancesPolicy
Text
autoScalingGroupName :: Text
placementGroup :: Maybe Text
capacityRebalance :: Maybe Bool
launchTemplate :: Maybe LaunchTemplateSpecification
healthCheckType :: Maybe Text
launchConfigurationName :: Maybe Text
minSize :: Maybe Int
mixedInstancesPolicy :: Maybe MixedInstancesPolicy
desiredCapacity :: Maybe Int
availabilityZones :: Maybe [Text]
maxSize :: Maybe Int
defaultCooldown :: Maybe Int
maxInstanceLifetime :: Maybe Int
vPCZoneIdentifier :: Maybe Text
newInstancesProtectedFromScaleIn' :: Maybe Bool
serviceLinkedRoleARN :: Maybe Text
healthCheckGracePeriod :: Maybe Int
terminationPolicies :: Maybe [Text]
context :: Maybe Text
$sel:autoScalingGroupName:UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Text
$sel:placementGroup:UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Maybe Text
$sel:capacityRebalance:UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Maybe Bool
$sel:launchTemplate:UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Maybe LaunchTemplateSpecification
$sel:healthCheckType:UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Maybe Text
$sel:launchConfigurationName:UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Maybe Text
$sel:minSize:UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Maybe Int
$sel:mixedInstancesPolicy:UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Maybe MixedInstancesPolicy
$sel:desiredCapacity:UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Maybe Int
$sel:availabilityZones:UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Maybe [Text]
$sel:maxSize:UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Maybe Int
$sel:defaultCooldown:UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Maybe Int
$sel:maxInstanceLifetime:UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Maybe Int
$sel:vPCZoneIdentifier:UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Maybe Text
$sel:newInstancesProtectedFromScaleIn':UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Maybe Bool
$sel:serviceLinkedRoleARN:UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Maybe Text
$sel:healthCheckGracePeriod:UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Maybe Int
$sel:terminationPolicies:UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Maybe [Text]
$sel:context:UpdateAutoScalingGroup' :: UpdateAutoScalingGroup -> Maybe Text
..} =
    [QueryString] -> QueryString
forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          ByteString -> ByteString -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: (ByteString
"UpdateAutoScalingGroup" :: Prelude.ByteString),
        ByteString
"Version"
          ByteString -> ByteString -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: (ByteString
"2011-01-01" :: Prelude.ByteString),
        ByteString
"Context" ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Text
context,
        ByteString
"TerminationPolicies"
          ByteString -> QueryString -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe QueryString -> QueryString
forall a. ToQuery a => a -> QueryString
Core.toQuery
            ( ByteString -> [Text] -> QueryString
forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Core.toQueryList ByteString
"member"
                ([Text] -> QueryString) -> Maybe [Text] -> Maybe QueryString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
terminationPolicies
            ),
        ByteString
"HealthCheckGracePeriod"
          ByteString -> Maybe Int -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Int
healthCheckGracePeriod,
        ByteString
"ServiceLinkedRoleARN" ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Text
serviceLinkedRoleARN,
        ByteString
"NewInstancesProtectedFromScaleIn"
          ByteString -> Maybe Bool -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Bool
newInstancesProtectedFromScaleIn',
        ByteString
"VPCZoneIdentifier" ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Text
vPCZoneIdentifier,
        ByteString
"MaxInstanceLifetime" ByteString -> Maybe Int -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Int
maxInstanceLifetime,
        ByteString
"DefaultCooldown" ByteString -> Maybe Int -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Int
defaultCooldown,
        ByteString
"MaxSize" ByteString -> Maybe Int -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Int
maxSize,
        ByteString
"AvailabilityZones"
          ByteString -> QueryString -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe QueryString -> QueryString
forall a. ToQuery a => a -> QueryString
Core.toQuery
            ( ByteString -> [Text] -> QueryString
forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Core.toQueryList ByteString
"member"
                ([Text] -> QueryString) -> Maybe [Text] -> Maybe QueryString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
availabilityZones
            ),
        ByteString
"DesiredCapacity" ByteString -> Maybe Int -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Int
desiredCapacity,
        ByteString
"MixedInstancesPolicy" ByteString -> Maybe MixedInstancesPolicy -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe MixedInstancesPolicy
mixedInstancesPolicy,
        ByteString
"MinSize" ByteString -> Maybe Int -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Int
minSize,
        ByteString
"LaunchConfigurationName"
          ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Text
launchConfigurationName,
        ByteString
"HealthCheckType" ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Text
healthCheckType,
        ByteString
"LaunchTemplate" ByteString -> Maybe LaunchTemplateSpecification -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe LaunchTemplateSpecification
launchTemplate,
        ByteString
"CapacityRebalance" ByteString -> Maybe Bool -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Bool
capacityRebalance,
        ByteString
"PlacementGroup" ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Text
placementGroup,
        ByteString
"AutoScalingGroupName" ByteString -> Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Text
autoScalingGroupName
      ]

-- | /See:/ 'newUpdateAutoScalingGroupResponse' smart constructor.
data UpdateAutoScalingGroupResponse = UpdateAutoScalingGroupResponse'
  {
  }
  deriving (UpdateAutoScalingGroupResponse
-> UpdateAutoScalingGroupResponse -> Bool
(UpdateAutoScalingGroupResponse
 -> UpdateAutoScalingGroupResponse -> Bool)
-> (UpdateAutoScalingGroupResponse
    -> UpdateAutoScalingGroupResponse -> Bool)
-> Eq UpdateAutoScalingGroupResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateAutoScalingGroupResponse
-> UpdateAutoScalingGroupResponse -> Bool
$c/= :: UpdateAutoScalingGroupResponse
-> UpdateAutoScalingGroupResponse -> Bool
== :: UpdateAutoScalingGroupResponse
-> UpdateAutoScalingGroupResponse -> Bool
$c== :: UpdateAutoScalingGroupResponse
-> UpdateAutoScalingGroupResponse -> Bool
Prelude.Eq, ReadPrec [UpdateAutoScalingGroupResponse]
ReadPrec UpdateAutoScalingGroupResponse
Int -> ReadS UpdateAutoScalingGroupResponse
ReadS [UpdateAutoScalingGroupResponse]
(Int -> ReadS UpdateAutoScalingGroupResponse)
-> ReadS [UpdateAutoScalingGroupResponse]
-> ReadPrec UpdateAutoScalingGroupResponse
-> ReadPrec [UpdateAutoScalingGroupResponse]
-> Read UpdateAutoScalingGroupResponse
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateAutoScalingGroupResponse]
$creadListPrec :: ReadPrec [UpdateAutoScalingGroupResponse]
readPrec :: ReadPrec UpdateAutoScalingGroupResponse
$creadPrec :: ReadPrec UpdateAutoScalingGroupResponse
readList :: ReadS [UpdateAutoScalingGroupResponse]
$creadList :: ReadS [UpdateAutoScalingGroupResponse]
readsPrec :: Int -> ReadS UpdateAutoScalingGroupResponse
$creadsPrec :: Int -> ReadS UpdateAutoScalingGroupResponse
Prelude.Read, Int -> UpdateAutoScalingGroupResponse -> ShowS
[UpdateAutoScalingGroupResponse] -> ShowS
UpdateAutoScalingGroupResponse -> String
(Int -> UpdateAutoScalingGroupResponse -> ShowS)
-> (UpdateAutoScalingGroupResponse -> String)
-> ([UpdateAutoScalingGroupResponse] -> ShowS)
-> Show UpdateAutoScalingGroupResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateAutoScalingGroupResponse] -> ShowS
$cshowList :: [UpdateAutoScalingGroupResponse] -> ShowS
show :: UpdateAutoScalingGroupResponse -> String
$cshow :: UpdateAutoScalingGroupResponse -> String
showsPrec :: Int -> UpdateAutoScalingGroupResponse -> ShowS
$cshowsPrec :: Int -> UpdateAutoScalingGroupResponse -> ShowS
Prelude.Show, (forall x.
 UpdateAutoScalingGroupResponse
 -> Rep UpdateAutoScalingGroupResponse x)
-> (forall x.
    Rep UpdateAutoScalingGroupResponse x
    -> UpdateAutoScalingGroupResponse)
-> Generic UpdateAutoScalingGroupResponse
forall x.
Rep UpdateAutoScalingGroupResponse x
-> UpdateAutoScalingGroupResponse
forall x.
UpdateAutoScalingGroupResponse
-> Rep UpdateAutoScalingGroupResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep UpdateAutoScalingGroupResponse x
-> UpdateAutoScalingGroupResponse
$cfrom :: forall x.
UpdateAutoScalingGroupResponse
-> Rep UpdateAutoScalingGroupResponse x
Prelude.Generic)

-- |
-- Create a value of 'UpdateAutoScalingGroupResponse' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
newUpdateAutoScalingGroupResponse ::
  UpdateAutoScalingGroupResponse
newUpdateAutoScalingGroupResponse :: UpdateAutoScalingGroupResponse
newUpdateAutoScalingGroupResponse =
  UpdateAutoScalingGroupResponse
UpdateAutoScalingGroupResponse'

instance
  Prelude.NFData
    UpdateAutoScalingGroupResponse