{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE NoImplicitPrelude #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Amazonka.SecurityHub.Types.AwsAutoScalingAutoScalingGroupDetails -- Copyright : (c) 2013-2023 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) module Amazonka.SecurityHub.Types.AwsAutoScalingAutoScalingGroupDetails where import qualified Amazonka.Core as Core import qualified Amazonka.Core.Lens.Internal as Lens import qualified Amazonka.Data as Data import qualified Amazonka.Prelude as Prelude import Amazonka.SecurityHub.Types.AwsAutoScalingAutoScalingGroupAvailabilityZonesListDetails import Amazonka.SecurityHub.Types.AwsAutoScalingAutoScalingGroupLaunchTemplateLaunchTemplateSpecification import Amazonka.SecurityHub.Types.AwsAutoScalingAutoScalingGroupMixedInstancesPolicyDetails -- | Provides details about an auto scaling group. -- -- /See:/ 'newAwsAutoScalingAutoScalingGroupDetails' smart constructor. data AwsAutoScalingAutoScalingGroupDetails = AwsAutoScalingAutoScalingGroupDetails' { -- | The list of Availability Zones for the automatic scaling group. availabilityZones :: Prelude.Maybe [AwsAutoScalingAutoScalingGroupAvailabilityZonesListDetails], -- | Indicates whether capacity rebalancing is enabled. capacityRebalance :: Prelude.Maybe Prelude.Bool, -- | Indicates when the auto scaling group was created. -- -- Uses the @date-time@ format specified in -- . -- The value cannot contain spaces. For example, -- @2020-03-22T13:22:13.933Z@. createdTime :: Prelude.Maybe Prelude.Text, -- | The amount of time, in seconds, that Amazon EC2 Auto Scaling waits -- before it checks the health status of an EC2 instance that has come into -- service. healthCheckGracePeriod :: Prelude.Maybe Prelude.Int, -- | The service to use for the health checks. Valid values are @EC2@ or -- @ELB@. healthCheckType :: Prelude.Maybe Prelude.Text, -- | The name of the launch configuration. launchConfigurationName :: Prelude.Maybe Prelude.Text, -- | The launch template to use. launchTemplate :: Prelude.Maybe AwsAutoScalingAutoScalingGroupLaunchTemplateLaunchTemplateSpecification, -- | The list of load balancers associated with the group. loadBalancerNames :: Prelude.Maybe [Prelude.Text], -- | The mixed instances policy for the automatic scaling group. mixedInstancesPolicy :: Prelude.Maybe AwsAutoScalingAutoScalingGroupMixedInstancesPolicyDetails } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'AwsAutoScalingAutoScalingGroupDetails' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'availabilityZones', 'awsAutoScalingAutoScalingGroupDetails_availabilityZones' - The list of Availability Zones for the automatic scaling group. -- -- 'capacityRebalance', 'awsAutoScalingAutoScalingGroupDetails_capacityRebalance' - Indicates whether capacity rebalancing is enabled. -- -- 'createdTime', 'awsAutoScalingAutoScalingGroupDetails_createdTime' - Indicates when the auto scaling group was created. -- -- Uses the @date-time@ format specified in -- . -- The value cannot contain spaces. For example, -- @2020-03-22T13:22:13.933Z@. -- -- 'healthCheckGracePeriod', 'awsAutoScalingAutoScalingGroupDetails_healthCheckGracePeriod' - The amount of time, in seconds, that Amazon EC2 Auto Scaling waits -- before it checks the health status of an EC2 instance that has come into -- service. -- -- 'healthCheckType', 'awsAutoScalingAutoScalingGroupDetails_healthCheckType' - The service to use for the health checks. Valid values are @EC2@ or -- @ELB@. -- -- 'launchConfigurationName', 'awsAutoScalingAutoScalingGroupDetails_launchConfigurationName' - The name of the launch configuration. -- -- 'launchTemplate', 'awsAutoScalingAutoScalingGroupDetails_launchTemplate' - The launch template to use. -- -- 'loadBalancerNames', 'awsAutoScalingAutoScalingGroupDetails_loadBalancerNames' - The list of load balancers associated with the group. -- -- 'mixedInstancesPolicy', 'awsAutoScalingAutoScalingGroupDetails_mixedInstancesPolicy' - The mixed instances policy for the automatic scaling group. newAwsAutoScalingAutoScalingGroupDetails :: AwsAutoScalingAutoScalingGroupDetails newAwsAutoScalingAutoScalingGroupDetails = AwsAutoScalingAutoScalingGroupDetails' { availabilityZones = Prelude.Nothing, capacityRebalance = Prelude.Nothing, createdTime = Prelude.Nothing, healthCheckGracePeriod = Prelude.Nothing, healthCheckType = Prelude.Nothing, launchConfigurationName = Prelude.Nothing, launchTemplate = Prelude.Nothing, loadBalancerNames = Prelude.Nothing, mixedInstancesPolicy = Prelude.Nothing } -- | The list of Availability Zones for the automatic scaling group. awsAutoScalingAutoScalingGroupDetails_availabilityZones :: Lens.Lens' AwsAutoScalingAutoScalingGroupDetails (Prelude.Maybe [AwsAutoScalingAutoScalingGroupAvailabilityZonesListDetails]) awsAutoScalingAutoScalingGroupDetails_availabilityZones = Lens.lens (\AwsAutoScalingAutoScalingGroupDetails' {availabilityZones} -> availabilityZones) (\s@AwsAutoScalingAutoScalingGroupDetails' {} a -> s {availabilityZones = a} :: AwsAutoScalingAutoScalingGroupDetails) Prelude.. Lens.mapping Lens.coerced -- | Indicates whether capacity rebalancing is enabled. awsAutoScalingAutoScalingGroupDetails_capacityRebalance :: Lens.Lens' AwsAutoScalingAutoScalingGroupDetails (Prelude.Maybe Prelude.Bool) awsAutoScalingAutoScalingGroupDetails_capacityRebalance = Lens.lens (\AwsAutoScalingAutoScalingGroupDetails' {capacityRebalance} -> capacityRebalance) (\s@AwsAutoScalingAutoScalingGroupDetails' {} a -> s {capacityRebalance = a} :: AwsAutoScalingAutoScalingGroupDetails) -- | Indicates when the auto scaling group was created. -- -- Uses the @date-time@ format specified in -- . -- The value cannot contain spaces. For example, -- @2020-03-22T13:22:13.933Z@. awsAutoScalingAutoScalingGroupDetails_createdTime :: Lens.Lens' AwsAutoScalingAutoScalingGroupDetails (Prelude.Maybe Prelude.Text) awsAutoScalingAutoScalingGroupDetails_createdTime = Lens.lens (\AwsAutoScalingAutoScalingGroupDetails' {createdTime} -> createdTime) (\s@AwsAutoScalingAutoScalingGroupDetails' {} a -> s {createdTime = a} :: AwsAutoScalingAutoScalingGroupDetails) -- | The amount of time, in seconds, that Amazon EC2 Auto Scaling waits -- before it checks the health status of an EC2 instance that has come into -- service. awsAutoScalingAutoScalingGroupDetails_healthCheckGracePeriod :: Lens.Lens' AwsAutoScalingAutoScalingGroupDetails (Prelude.Maybe Prelude.Int) awsAutoScalingAutoScalingGroupDetails_healthCheckGracePeriod = Lens.lens (\AwsAutoScalingAutoScalingGroupDetails' {healthCheckGracePeriod} -> healthCheckGracePeriod) (\s@AwsAutoScalingAutoScalingGroupDetails' {} a -> s {healthCheckGracePeriod = a} :: AwsAutoScalingAutoScalingGroupDetails) -- | The service to use for the health checks. Valid values are @EC2@ or -- @ELB@. awsAutoScalingAutoScalingGroupDetails_healthCheckType :: Lens.Lens' AwsAutoScalingAutoScalingGroupDetails (Prelude.Maybe Prelude.Text) awsAutoScalingAutoScalingGroupDetails_healthCheckType = Lens.lens (\AwsAutoScalingAutoScalingGroupDetails' {healthCheckType} -> healthCheckType) (\s@AwsAutoScalingAutoScalingGroupDetails' {} a -> s {healthCheckType = a} :: AwsAutoScalingAutoScalingGroupDetails) -- | The name of the launch configuration. awsAutoScalingAutoScalingGroupDetails_launchConfigurationName :: Lens.Lens' AwsAutoScalingAutoScalingGroupDetails (Prelude.Maybe Prelude.Text) awsAutoScalingAutoScalingGroupDetails_launchConfigurationName = Lens.lens (\AwsAutoScalingAutoScalingGroupDetails' {launchConfigurationName} -> launchConfigurationName) (\s@AwsAutoScalingAutoScalingGroupDetails' {} a -> s {launchConfigurationName = a} :: AwsAutoScalingAutoScalingGroupDetails) -- | The launch template to use. awsAutoScalingAutoScalingGroupDetails_launchTemplate :: Lens.Lens' AwsAutoScalingAutoScalingGroupDetails (Prelude.Maybe AwsAutoScalingAutoScalingGroupLaunchTemplateLaunchTemplateSpecification) awsAutoScalingAutoScalingGroupDetails_launchTemplate = Lens.lens (\AwsAutoScalingAutoScalingGroupDetails' {launchTemplate} -> launchTemplate) (\s@AwsAutoScalingAutoScalingGroupDetails' {} a -> s {launchTemplate = a} :: AwsAutoScalingAutoScalingGroupDetails) -- | The list of load balancers associated with the group. awsAutoScalingAutoScalingGroupDetails_loadBalancerNames :: Lens.Lens' AwsAutoScalingAutoScalingGroupDetails (Prelude.Maybe [Prelude.Text]) awsAutoScalingAutoScalingGroupDetails_loadBalancerNames = Lens.lens (\AwsAutoScalingAutoScalingGroupDetails' {loadBalancerNames} -> loadBalancerNames) (\s@AwsAutoScalingAutoScalingGroupDetails' {} a -> s {loadBalancerNames = a} :: AwsAutoScalingAutoScalingGroupDetails) Prelude.. Lens.mapping Lens.coerced -- | The mixed instances policy for the automatic scaling group. awsAutoScalingAutoScalingGroupDetails_mixedInstancesPolicy :: Lens.Lens' AwsAutoScalingAutoScalingGroupDetails (Prelude.Maybe AwsAutoScalingAutoScalingGroupMixedInstancesPolicyDetails) awsAutoScalingAutoScalingGroupDetails_mixedInstancesPolicy = Lens.lens (\AwsAutoScalingAutoScalingGroupDetails' {mixedInstancesPolicy} -> mixedInstancesPolicy) (\s@AwsAutoScalingAutoScalingGroupDetails' {} a -> s {mixedInstancesPolicy = a} :: AwsAutoScalingAutoScalingGroupDetails) instance Data.FromJSON AwsAutoScalingAutoScalingGroupDetails where parseJSON = Data.withObject "AwsAutoScalingAutoScalingGroupDetails" ( \x -> AwsAutoScalingAutoScalingGroupDetails' Prelude.<$> ( x Data..:? "AvailabilityZones" Data..!= Prelude.mempty ) Prelude.<*> (x Data..:? "CapacityRebalance") Prelude.<*> (x Data..:? "CreatedTime") Prelude.<*> (x Data..:? "HealthCheckGracePeriod") Prelude.<*> (x Data..:? "HealthCheckType") Prelude.<*> (x Data..:? "LaunchConfigurationName") Prelude.<*> (x Data..:? "LaunchTemplate") Prelude.<*> ( x Data..:? "LoadBalancerNames" Data..!= Prelude.mempty ) Prelude.<*> (x Data..:? "MixedInstancesPolicy") ) instance Prelude.Hashable AwsAutoScalingAutoScalingGroupDetails where hashWithSalt _salt AwsAutoScalingAutoScalingGroupDetails' {..} = _salt `Prelude.hashWithSalt` availabilityZones `Prelude.hashWithSalt` capacityRebalance `Prelude.hashWithSalt` createdTime `Prelude.hashWithSalt` healthCheckGracePeriod `Prelude.hashWithSalt` healthCheckType `Prelude.hashWithSalt` launchConfigurationName `Prelude.hashWithSalt` launchTemplate `Prelude.hashWithSalt` loadBalancerNames `Prelude.hashWithSalt` mixedInstancesPolicy instance Prelude.NFData AwsAutoScalingAutoScalingGroupDetails where rnf AwsAutoScalingAutoScalingGroupDetails' {..} = Prelude.rnf availabilityZones `Prelude.seq` Prelude.rnf capacityRebalance `Prelude.seq` Prelude.rnf createdTime `Prelude.seq` Prelude.rnf healthCheckGracePeriod `Prelude.seq` Prelude.rnf healthCheckType `Prelude.seq` Prelude.rnf launchConfigurationName `Prelude.seq` Prelude.rnf launchTemplate `Prelude.seq` Prelude.rnf loadBalancerNames `Prelude.seq` Prelude.rnf mixedInstancesPolicy instance Data.ToJSON AwsAutoScalingAutoScalingGroupDetails where toJSON AwsAutoScalingAutoScalingGroupDetails' {..} = Data.object ( Prelude.catMaybes [ ("AvailabilityZones" Data..=) Prelude.<$> availabilityZones, ("CapacityRebalance" Data..=) Prelude.<$> capacityRebalance, ("CreatedTime" Data..=) Prelude.<$> createdTime, ("HealthCheckGracePeriod" Data..=) Prelude.<$> healthCheckGracePeriod, ("HealthCheckType" Data..=) Prelude.<$> healthCheckType, ("LaunchConfigurationName" Data..=) Prelude.<$> launchConfigurationName, ("LaunchTemplate" Data..=) Prelude.<$> launchTemplate, ("LoadBalancerNames" Data..=) Prelude.<$> loadBalancerNames, ("MixedInstancesPolicy" Data..=) Prelude.<$> mixedInstancesPolicy ] )