packages feed

stratosphere-autoscaling-1.0.0: gen/Stratosphere/AutoScaling/AutoScalingGroup.hs

module Stratosphere.AutoScaling.AutoScalingGroup (
        module Exports, AutoScalingGroup(..), mkAutoScalingGroup
    ) where
import qualified Data.Aeson as JSON
import qualified Stratosphere.Prelude as Prelude
import Stratosphere.Property
import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.AvailabilityZoneDistributionProperty as Exports
import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.AvailabilityZoneImpairmentPolicyProperty as Exports
import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.CapacityReservationSpecificationProperty as Exports
import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.InstanceMaintenancePolicyProperty as Exports
import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.LaunchTemplateSpecificationProperty as Exports
import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.LifecycleHookSpecificationProperty as Exports
import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.MetricsCollectionProperty as Exports
import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.MixedInstancesPolicyProperty as Exports
import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.NotificationConfigurationProperty as Exports
import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.TagPropertyProperty as Exports
import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.TrafficSourceIdentifierProperty as Exports
import Stratosphere.ResourceProperties
import Stratosphere.Value
data AutoScalingGroup
  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html>
    AutoScalingGroup {haddock_workaround_ :: (),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-autoscalinggroupname>
                      autoScalingGroupName :: (Prelude.Maybe (Value Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-availabilityzonedistribution>
                      availabilityZoneDistribution :: (Prelude.Maybe AvailabilityZoneDistributionProperty),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-availabilityzoneimpairmentpolicy>
                      availabilityZoneImpairmentPolicy :: (Prelude.Maybe AvailabilityZoneImpairmentPolicyProperty),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-availabilityzones>
                      availabilityZones :: (Prelude.Maybe (ValueList Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-capacityrebalance>
                      capacityRebalance :: (Prelude.Maybe (Value Prelude.Bool)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-capacityreservationspecification>
                      capacityReservationSpecification :: (Prelude.Maybe CapacityReservationSpecificationProperty),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-context>
                      context :: (Prelude.Maybe (Value Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-cooldown>
                      cooldown :: (Prelude.Maybe (Value Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-defaultinstancewarmup>
                      defaultInstanceWarmup :: (Prelude.Maybe (Value Prelude.Integer)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-desiredcapacity>
                      desiredCapacity :: (Prelude.Maybe (Value Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-desiredcapacitytype>
                      desiredCapacityType :: (Prelude.Maybe (Value Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-healthcheckgraceperiod>
                      healthCheckGracePeriod :: (Prelude.Maybe (Value Prelude.Integer)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-healthchecktype>
                      healthCheckType :: (Prelude.Maybe (Value Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-instanceid>
                      instanceId :: (Prelude.Maybe (Value Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-instancemaintenancepolicy>
                      instanceMaintenancePolicy :: (Prelude.Maybe InstanceMaintenancePolicyProperty),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-launchconfigurationname>
                      launchConfigurationName :: (Prelude.Maybe (Value Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-launchtemplate>
                      launchTemplate :: (Prelude.Maybe LaunchTemplateSpecificationProperty),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-lifecyclehookspecificationlist>
                      lifecycleHookSpecificationList :: (Prelude.Maybe [LifecycleHookSpecificationProperty]),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-loadbalancernames>
                      loadBalancerNames :: (Prelude.Maybe (ValueList Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-maxinstancelifetime>
                      maxInstanceLifetime :: (Prelude.Maybe (Value Prelude.Integer)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-maxsize>
                      maxSize :: (Value Prelude.Text),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-metricscollection>
                      metricsCollection :: (Prelude.Maybe [MetricsCollectionProperty]),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-minsize>
                      minSize :: (Value Prelude.Text),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-mixedinstancespolicy>
                      mixedInstancesPolicy :: (Prelude.Maybe MixedInstancesPolicyProperty),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-newinstancesprotectedfromscalein>
                      newInstancesProtectedFromScaleIn :: (Prelude.Maybe (Value Prelude.Bool)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-notificationconfigurations>
                      notificationConfigurations :: (Prelude.Maybe [NotificationConfigurationProperty]),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-placementgroup>
                      placementGroup :: (Prelude.Maybe (Value Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-servicelinkedrolearn>
                      serviceLinkedRoleARN :: (Prelude.Maybe (Value Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-skipzonalshiftvalidation>
                      skipZonalShiftValidation :: (Prelude.Maybe (Value Prelude.Bool)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-tags>
                      tags :: (Prelude.Maybe [TagPropertyProperty]),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-targetgrouparns>
                      targetGroupARNs :: (Prelude.Maybe (ValueList Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-terminationpolicies>
                      terminationPolicies :: (Prelude.Maybe (ValueList Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-trafficsources>
                      trafficSources :: (Prelude.Maybe [TrafficSourceIdentifierProperty]),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-vpczoneidentifier>
                      vPCZoneIdentifier :: (Prelude.Maybe (ValueList Prelude.Text))}
  deriving stock (Prelude.Eq, Prelude.Show)
mkAutoScalingGroup ::
  Value Prelude.Text -> Value Prelude.Text -> AutoScalingGroup
mkAutoScalingGroup maxSize minSize
  = AutoScalingGroup
      {haddock_workaround_ = (), maxSize = maxSize, minSize = minSize,
       autoScalingGroupName = Prelude.Nothing,
       availabilityZoneDistribution = Prelude.Nothing,
       availabilityZoneImpairmentPolicy = Prelude.Nothing,
       availabilityZones = Prelude.Nothing,
       capacityRebalance = Prelude.Nothing,
       capacityReservationSpecification = Prelude.Nothing,
       context = Prelude.Nothing, cooldown = Prelude.Nothing,
       defaultInstanceWarmup = Prelude.Nothing,
       desiredCapacity = Prelude.Nothing,
       desiredCapacityType = Prelude.Nothing,
       healthCheckGracePeriod = Prelude.Nothing,
       healthCheckType = Prelude.Nothing, instanceId = Prelude.Nothing,
       instanceMaintenancePolicy = Prelude.Nothing,
       launchConfigurationName = Prelude.Nothing,
       launchTemplate = Prelude.Nothing,
       lifecycleHookSpecificationList = Prelude.Nothing,
       loadBalancerNames = Prelude.Nothing,
       maxInstanceLifetime = Prelude.Nothing,
       metricsCollection = Prelude.Nothing,
       mixedInstancesPolicy = Prelude.Nothing,
       newInstancesProtectedFromScaleIn = Prelude.Nothing,
       notificationConfigurations = Prelude.Nothing,
       placementGroup = Prelude.Nothing,
       serviceLinkedRoleARN = Prelude.Nothing,
       skipZonalShiftValidation = Prelude.Nothing, tags = Prelude.Nothing,
       targetGroupARNs = Prelude.Nothing,
       terminationPolicies = Prelude.Nothing,
       trafficSources = Prelude.Nothing,
       vPCZoneIdentifier = Prelude.Nothing}
instance ToResourceProperties AutoScalingGroup where
  toResourceProperties AutoScalingGroup {..}
    = ResourceProperties
        {awsType = "AWS::AutoScaling::AutoScalingGroup",
         supportsTags = Prelude.True,
         properties = Prelude.fromList
                        ((Prelude.<>)
                           ["MaxSize" JSON..= maxSize, "MinSize" JSON..= minSize]
                           (Prelude.catMaybes
                              [(JSON..=) "AutoScalingGroupName" Prelude.<$> autoScalingGroupName,
                               (JSON..=) "AvailabilityZoneDistribution"
                                 Prelude.<$> availabilityZoneDistribution,
                               (JSON..=) "AvailabilityZoneImpairmentPolicy"
                                 Prelude.<$> availabilityZoneImpairmentPolicy,
                               (JSON..=) "AvailabilityZones" Prelude.<$> availabilityZones,
                               (JSON..=) "CapacityRebalance" Prelude.<$> capacityRebalance,
                               (JSON..=) "CapacityReservationSpecification"
                                 Prelude.<$> capacityReservationSpecification,
                               (JSON..=) "Context" Prelude.<$> context,
                               (JSON..=) "Cooldown" Prelude.<$> cooldown,
                               (JSON..=) "DefaultInstanceWarmup"
                                 Prelude.<$> defaultInstanceWarmup,
                               (JSON..=) "DesiredCapacity" Prelude.<$> desiredCapacity,
                               (JSON..=) "DesiredCapacityType" Prelude.<$> desiredCapacityType,
                               (JSON..=) "HealthCheckGracePeriod"
                                 Prelude.<$> healthCheckGracePeriod,
                               (JSON..=) "HealthCheckType" Prelude.<$> healthCheckType,
                               (JSON..=) "InstanceId" Prelude.<$> instanceId,
                               (JSON..=) "InstanceMaintenancePolicy"
                                 Prelude.<$> instanceMaintenancePolicy,
                               (JSON..=) "LaunchConfigurationName"
                                 Prelude.<$> launchConfigurationName,
                               (JSON..=) "LaunchTemplate" Prelude.<$> launchTemplate,
                               (JSON..=) "LifecycleHookSpecificationList"
                                 Prelude.<$> lifecycleHookSpecificationList,
                               (JSON..=) "LoadBalancerNames" Prelude.<$> loadBalancerNames,
                               (JSON..=) "MaxInstanceLifetime" Prelude.<$> maxInstanceLifetime,
                               (JSON..=) "MetricsCollection" Prelude.<$> metricsCollection,
                               (JSON..=) "MixedInstancesPolicy" Prelude.<$> mixedInstancesPolicy,
                               (JSON..=) "NewInstancesProtectedFromScaleIn"
                                 Prelude.<$> newInstancesProtectedFromScaleIn,
                               (JSON..=) "NotificationConfigurations"
                                 Prelude.<$> notificationConfigurations,
                               (JSON..=) "PlacementGroup" Prelude.<$> placementGroup,
                               (JSON..=) "ServiceLinkedRoleARN" Prelude.<$> serviceLinkedRoleARN,
                               (JSON..=) "SkipZonalShiftValidation"
                                 Prelude.<$> skipZonalShiftValidation,
                               (JSON..=) "Tags" Prelude.<$> tags,
                               (JSON..=) "TargetGroupARNs" Prelude.<$> targetGroupARNs,
                               (JSON..=) "TerminationPolicies" Prelude.<$> terminationPolicies,
                               (JSON..=) "TrafficSources" Prelude.<$> trafficSources,
                               (JSON..=) "VPCZoneIdentifier" Prelude.<$> vPCZoneIdentifier]))}
instance JSON.ToJSON AutoScalingGroup where
  toJSON AutoScalingGroup {..}
    = JSON.object
        (Prelude.fromList
           ((Prelude.<>)
              ["MaxSize" JSON..= maxSize, "MinSize" JSON..= minSize]
              (Prelude.catMaybes
                 [(JSON..=) "AutoScalingGroupName" Prelude.<$> autoScalingGroupName,
                  (JSON..=) "AvailabilityZoneDistribution"
                    Prelude.<$> availabilityZoneDistribution,
                  (JSON..=) "AvailabilityZoneImpairmentPolicy"
                    Prelude.<$> availabilityZoneImpairmentPolicy,
                  (JSON..=) "AvailabilityZones" Prelude.<$> availabilityZones,
                  (JSON..=) "CapacityRebalance" Prelude.<$> capacityRebalance,
                  (JSON..=) "CapacityReservationSpecification"
                    Prelude.<$> capacityReservationSpecification,
                  (JSON..=) "Context" Prelude.<$> context,
                  (JSON..=) "Cooldown" Prelude.<$> cooldown,
                  (JSON..=) "DefaultInstanceWarmup"
                    Prelude.<$> defaultInstanceWarmup,
                  (JSON..=) "DesiredCapacity" Prelude.<$> desiredCapacity,
                  (JSON..=) "DesiredCapacityType" Prelude.<$> desiredCapacityType,
                  (JSON..=) "HealthCheckGracePeriod"
                    Prelude.<$> healthCheckGracePeriod,
                  (JSON..=) "HealthCheckType" Prelude.<$> healthCheckType,
                  (JSON..=) "InstanceId" Prelude.<$> instanceId,
                  (JSON..=) "InstanceMaintenancePolicy"
                    Prelude.<$> instanceMaintenancePolicy,
                  (JSON..=) "LaunchConfigurationName"
                    Prelude.<$> launchConfigurationName,
                  (JSON..=) "LaunchTemplate" Prelude.<$> launchTemplate,
                  (JSON..=) "LifecycleHookSpecificationList"
                    Prelude.<$> lifecycleHookSpecificationList,
                  (JSON..=) "LoadBalancerNames" Prelude.<$> loadBalancerNames,
                  (JSON..=) "MaxInstanceLifetime" Prelude.<$> maxInstanceLifetime,
                  (JSON..=) "MetricsCollection" Prelude.<$> metricsCollection,
                  (JSON..=) "MixedInstancesPolicy" Prelude.<$> mixedInstancesPolicy,
                  (JSON..=) "NewInstancesProtectedFromScaleIn"
                    Prelude.<$> newInstancesProtectedFromScaleIn,
                  (JSON..=) "NotificationConfigurations"
                    Prelude.<$> notificationConfigurations,
                  (JSON..=) "PlacementGroup" Prelude.<$> placementGroup,
                  (JSON..=) "ServiceLinkedRoleARN" Prelude.<$> serviceLinkedRoleARN,
                  (JSON..=) "SkipZonalShiftValidation"
                    Prelude.<$> skipZonalShiftValidation,
                  (JSON..=) "Tags" Prelude.<$> tags,
                  (JSON..=) "TargetGroupARNs" Prelude.<$> targetGroupARNs,
                  (JSON..=) "TerminationPolicies" Prelude.<$> terminationPolicies,
                  (JSON..=) "TrafficSources" Prelude.<$> trafficSources,
                  (JSON..=) "VPCZoneIdentifier" Prelude.<$> vPCZoneIdentifier])))
instance Property "AutoScalingGroupName" AutoScalingGroup where
  type PropertyType "AutoScalingGroupName" AutoScalingGroup = Value Prelude.Text
  set newValue AutoScalingGroup {..}
    = AutoScalingGroup
        {autoScalingGroupName = Prelude.pure newValue, ..}
instance Property "AvailabilityZoneDistribution" AutoScalingGroup where
  type PropertyType "AvailabilityZoneDistribution" AutoScalingGroup = AvailabilityZoneDistributionProperty
  set newValue AutoScalingGroup {..}
    = AutoScalingGroup
        {availabilityZoneDistribution = Prelude.pure newValue, ..}
instance Property "AvailabilityZoneImpairmentPolicy" AutoScalingGroup where
  type PropertyType "AvailabilityZoneImpairmentPolicy" AutoScalingGroup = AvailabilityZoneImpairmentPolicyProperty
  set newValue AutoScalingGroup {..}
    = AutoScalingGroup
        {availabilityZoneImpairmentPolicy = Prelude.pure newValue, ..}
instance Property "AvailabilityZones" AutoScalingGroup where
  type PropertyType "AvailabilityZones" AutoScalingGroup = ValueList Prelude.Text
  set newValue AutoScalingGroup {..}
    = AutoScalingGroup {availabilityZones = Prelude.pure newValue, ..}
instance Property "CapacityRebalance" AutoScalingGroup where
  type PropertyType "CapacityRebalance" AutoScalingGroup = Value Prelude.Bool
  set newValue AutoScalingGroup {..}
    = AutoScalingGroup {capacityRebalance = Prelude.pure newValue, ..}
instance Property "CapacityReservationSpecification" AutoScalingGroup where
  type PropertyType "CapacityReservationSpecification" AutoScalingGroup = CapacityReservationSpecificationProperty
  set newValue AutoScalingGroup {..}
    = AutoScalingGroup
        {capacityReservationSpecification = Prelude.pure newValue, ..}
instance Property "Context" AutoScalingGroup where
  type PropertyType "Context" AutoScalingGroup = Value Prelude.Text
  set newValue AutoScalingGroup {..}
    = AutoScalingGroup {context = Prelude.pure newValue, ..}
instance Property "Cooldown" AutoScalingGroup where
  type PropertyType "Cooldown" AutoScalingGroup = Value Prelude.Text
  set newValue AutoScalingGroup {..}
    = AutoScalingGroup {cooldown = Prelude.pure newValue, ..}
instance Property "DefaultInstanceWarmup" AutoScalingGroup where
  type PropertyType "DefaultInstanceWarmup" AutoScalingGroup = Value Prelude.Integer
  set newValue AutoScalingGroup {..}
    = AutoScalingGroup
        {defaultInstanceWarmup = Prelude.pure newValue, ..}
instance Property "DesiredCapacity" AutoScalingGroup where
  type PropertyType "DesiredCapacity" AutoScalingGroup = Value Prelude.Text
  set newValue AutoScalingGroup {..}
    = AutoScalingGroup {desiredCapacity = Prelude.pure newValue, ..}
instance Property "DesiredCapacityType" AutoScalingGroup where
  type PropertyType "DesiredCapacityType" AutoScalingGroup = Value Prelude.Text
  set newValue AutoScalingGroup {..}
    = AutoScalingGroup
        {desiredCapacityType = Prelude.pure newValue, ..}
instance Property "HealthCheckGracePeriod" AutoScalingGroup where
  type PropertyType "HealthCheckGracePeriod" AutoScalingGroup = Value Prelude.Integer
  set newValue AutoScalingGroup {..}
    = AutoScalingGroup
        {healthCheckGracePeriod = Prelude.pure newValue, ..}
instance Property "HealthCheckType" AutoScalingGroup where
  type PropertyType "HealthCheckType" AutoScalingGroup = Value Prelude.Text
  set newValue AutoScalingGroup {..}
    = AutoScalingGroup {healthCheckType = Prelude.pure newValue, ..}
instance Property "InstanceId" AutoScalingGroup where
  type PropertyType "InstanceId" AutoScalingGroup = Value Prelude.Text
  set newValue AutoScalingGroup {..}
    = AutoScalingGroup {instanceId = Prelude.pure newValue, ..}
instance Property "InstanceMaintenancePolicy" AutoScalingGroup where
  type PropertyType "InstanceMaintenancePolicy" AutoScalingGroup = InstanceMaintenancePolicyProperty
  set newValue AutoScalingGroup {..}
    = AutoScalingGroup
        {instanceMaintenancePolicy = Prelude.pure newValue, ..}
instance Property "LaunchConfigurationName" AutoScalingGroup where
  type PropertyType "LaunchConfigurationName" AutoScalingGroup = Value Prelude.Text
  set newValue AutoScalingGroup {..}
    = AutoScalingGroup
        {launchConfigurationName = Prelude.pure newValue, ..}
instance Property "LaunchTemplate" AutoScalingGroup where
  type PropertyType "LaunchTemplate" AutoScalingGroup = LaunchTemplateSpecificationProperty
  set newValue AutoScalingGroup {..}
    = AutoScalingGroup {launchTemplate = Prelude.pure newValue, ..}
instance Property "LifecycleHookSpecificationList" AutoScalingGroup where
  type PropertyType "LifecycleHookSpecificationList" AutoScalingGroup = [LifecycleHookSpecificationProperty]
  set newValue AutoScalingGroup {..}
    = AutoScalingGroup
        {lifecycleHookSpecificationList = Prelude.pure newValue, ..}
instance Property "LoadBalancerNames" AutoScalingGroup where
  type PropertyType "LoadBalancerNames" AutoScalingGroup = ValueList Prelude.Text
  set newValue AutoScalingGroup {..}
    = AutoScalingGroup {loadBalancerNames = Prelude.pure newValue, ..}
instance Property "MaxInstanceLifetime" AutoScalingGroup where
  type PropertyType "MaxInstanceLifetime" AutoScalingGroup = Value Prelude.Integer
  set newValue AutoScalingGroup {..}
    = AutoScalingGroup
        {maxInstanceLifetime = Prelude.pure newValue, ..}
instance Property "MaxSize" AutoScalingGroup where
  type PropertyType "MaxSize" AutoScalingGroup = Value Prelude.Text
  set newValue AutoScalingGroup {..}
    = AutoScalingGroup {maxSize = newValue, ..}
instance Property "MetricsCollection" AutoScalingGroup where
  type PropertyType "MetricsCollection" AutoScalingGroup = [MetricsCollectionProperty]
  set newValue AutoScalingGroup {..}
    = AutoScalingGroup {metricsCollection = Prelude.pure newValue, ..}
instance Property "MinSize" AutoScalingGroup where
  type PropertyType "MinSize" AutoScalingGroup = Value Prelude.Text
  set newValue AutoScalingGroup {..}
    = AutoScalingGroup {minSize = newValue, ..}
instance Property "MixedInstancesPolicy" AutoScalingGroup where
  type PropertyType "MixedInstancesPolicy" AutoScalingGroup = MixedInstancesPolicyProperty
  set newValue AutoScalingGroup {..}
    = AutoScalingGroup
        {mixedInstancesPolicy = Prelude.pure newValue, ..}
instance Property "NewInstancesProtectedFromScaleIn" AutoScalingGroup where
  type PropertyType "NewInstancesProtectedFromScaleIn" AutoScalingGroup = Value Prelude.Bool
  set newValue AutoScalingGroup {..}
    = AutoScalingGroup
        {newInstancesProtectedFromScaleIn = Prelude.pure newValue, ..}
instance Property "NotificationConfigurations" AutoScalingGroup where
  type PropertyType "NotificationConfigurations" AutoScalingGroup = [NotificationConfigurationProperty]
  set newValue AutoScalingGroup {..}
    = AutoScalingGroup
        {notificationConfigurations = Prelude.pure newValue, ..}
instance Property "PlacementGroup" AutoScalingGroup where
  type PropertyType "PlacementGroup" AutoScalingGroup = Value Prelude.Text
  set newValue AutoScalingGroup {..}
    = AutoScalingGroup {placementGroup = Prelude.pure newValue, ..}
instance Property "ServiceLinkedRoleARN" AutoScalingGroup where
  type PropertyType "ServiceLinkedRoleARN" AutoScalingGroup = Value Prelude.Text
  set newValue AutoScalingGroup {..}
    = AutoScalingGroup
        {serviceLinkedRoleARN = Prelude.pure newValue, ..}
instance Property "SkipZonalShiftValidation" AutoScalingGroup where
  type PropertyType "SkipZonalShiftValidation" AutoScalingGroup = Value Prelude.Bool
  set newValue AutoScalingGroup {..}
    = AutoScalingGroup
        {skipZonalShiftValidation = Prelude.pure newValue, ..}
instance Property "Tags" AutoScalingGroup where
  type PropertyType "Tags" AutoScalingGroup = [TagPropertyProperty]
  set newValue AutoScalingGroup {..}
    = AutoScalingGroup {tags = Prelude.pure newValue, ..}
instance Property "TargetGroupARNs" AutoScalingGroup where
  type PropertyType "TargetGroupARNs" AutoScalingGroup = ValueList Prelude.Text
  set newValue AutoScalingGroup {..}
    = AutoScalingGroup {targetGroupARNs = Prelude.pure newValue, ..}
instance Property "TerminationPolicies" AutoScalingGroup where
  type PropertyType "TerminationPolicies" AutoScalingGroup = ValueList Prelude.Text
  set newValue AutoScalingGroup {..}
    = AutoScalingGroup
        {terminationPolicies = Prelude.pure newValue, ..}
instance Property "TrafficSources" AutoScalingGroup where
  type PropertyType "TrafficSources" AutoScalingGroup = [TrafficSourceIdentifierProperty]
  set newValue AutoScalingGroup {..}
    = AutoScalingGroup {trafficSources = Prelude.pure newValue, ..}
instance Property "VPCZoneIdentifier" AutoScalingGroup where
  type PropertyType "VPCZoneIdentifier" AutoScalingGroup = ValueList Prelude.Text
  set newValue AutoScalingGroup {..}
    = AutoScalingGroup {vPCZoneIdentifier = Prelude.pure newValue, ..}