amazonka-securityhub-2.0: gen/Amazonka/SecurityHub/Types/AwsAutoScalingAutoScalingGroupDetails.hs
{-# 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
-- <https://tools.ietf.org/html/rfc3339#section-5.6 RFC 3339 section 5.6, Internet Date\/Time Format>.
-- 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 <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:
--
-- '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
-- <https://tools.ietf.org/html/rfc3339#section-5.6 RFC 3339 section 5.6, Internet Date\/Time Format>.
-- 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
-- <https://tools.ietf.org/html/rfc3339#section-5.6 RFC 3339 section 5.6, Internet Date\/Time Format>.
-- 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
]
)