module Stratosphere.Resources.AutoScalingGroup where
import Control.Lens
import Data.Aeson
import Data.Aeson.Types
import Data.Text
import GHC.Generics
import Stratosphere.Values
import Stratosphere.ResourceProperties.AutoScalingMetricsCollection
import Stratosphere.ResourceProperties.AutoScalingNotificationConfigurations
import Stratosphere.ResourceProperties.AutoScalingTags
data AutoScalingGroup =
AutoScalingGroup
{ _autoScalingGroupAvailabilityZones :: Maybe [Val Text]
, _autoScalingGroupCooldown :: Maybe (Val Text)
, _autoScalingGroupDesiredCapacity :: Maybe (Val Text)
, _autoScalingGroupHealthCheckGracePeriod :: Maybe (Val Integer')
, _autoScalingGroupHealthCheckType :: Maybe (Val Text)
, _autoScalingGroupInstanceId :: Maybe (Val Text)
, _autoScalingGroupLaunchConfigurationName :: Maybe (Val Text)
, _autoScalingGroupLoadBalancerNames :: Maybe [Val Text]
, _autoScalingGroupMaxSize :: Val Text
, _autoScalingGroupMetricsCollection :: Maybe [AutoScalingMetricsCollection]
, _autoScalingGroupMinSize :: Val Text
, _autoScalingGroupNotificationConfigurations :: Maybe [AutoScalingNotificationConfigurations]
, _autoScalingGroupPlacementGroup :: Maybe (Val Text)
, _autoScalingGroupTags :: Maybe [AutoScalingTags]
, _autoScalingGroupTerminationPolicies :: Maybe [Val Text]
, _autoScalingGroupVPCZoneIdentifier :: Maybe [Val Text]
} deriving (Show, Generic)
instance ToJSON AutoScalingGroup where
toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 17, omitNothingFields = True }
instance FromJSON AutoScalingGroup where
parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 17, omitNothingFields = True }
autoScalingGroup
:: Val Text
-> Val Text
-> AutoScalingGroup
autoScalingGroup maxSizearg minSizearg =
AutoScalingGroup
{ _autoScalingGroupAvailabilityZones = Nothing
, _autoScalingGroupCooldown = Nothing
, _autoScalingGroupDesiredCapacity = Nothing
, _autoScalingGroupHealthCheckGracePeriod = Nothing
, _autoScalingGroupHealthCheckType = Nothing
, _autoScalingGroupInstanceId = Nothing
, _autoScalingGroupLaunchConfigurationName = Nothing
, _autoScalingGroupLoadBalancerNames = Nothing
, _autoScalingGroupMaxSize = maxSizearg
, _autoScalingGroupMetricsCollection = Nothing
, _autoScalingGroupMinSize = minSizearg
, _autoScalingGroupNotificationConfigurations = Nothing
, _autoScalingGroupPlacementGroup = Nothing
, _autoScalingGroupTags = Nothing
, _autoScalingGroupTerminationPolicies = Nothing
, _autoScalingGroupVPCZoneIdentifier = Nothing
}
asgAvailabilityZones :: Lens' AutoScalingGroup (Maybe [Val Text])
asgAvailabilityZones = lens _autoScalingGroupAvailabilityZones (\s a -> s { _autoScalingGroupAvailabilityZones = a })
asgCooldown :: Lens' AutoScalingGroup (Maybe (Val Text))
asgCooldown = lens _autoScalingGroupCooldown (\s a -> s { _autoScalingGroupCooldown = a })
asgDesiredCapacity :: Lens' AutoScalingGroup (Maybe (Val Text))
asgDesiredCapacity = lens _autoScalingGroupDesiredCapacity (\s a -> s { _autoScalingGroupDesiredCapacity = a })
asgHealthCheckGracePeriod :: Lens' AutoScalingGroup (Maybe (Val Integer'))
asgHealthCheckGracePeriod = lens _autoScalingGroupHealthCheckGracePeriod (\s a -> s { _autoScalingGroupHealthCheckGracePeriod = a })
asgHealthCheckType :: Lens' AutoScalingGroup (Maybe (Val Text))
asgHealthCheckType = lens _autoScalingGroupHealthCheckType (\s a -> s { _autoScalingGroupHealthCheckType = a })
asgInstanceId :: Lens' AutoScalingGroup (Maybe (Val Text))
asgInstanceId = lens _autoScalingGroupInstanceId (\s a -> s { _autoScalingGroupInstanceId = a })
asgLaunchConfigurationName :: Lens' AutoScalingGroup (Maybe (Val Text))
asgLaunchConfigurationName = lens _autoScalingGroupLaunchConfigurationName (\s a -> s { _autoScalingGroupLaunchConfigurationName = a })
asgLoadBalancerNames :: Lens' AutoScalingGroup (Maybe [Val Text])
asgLoadBalancerNames = lens _autoScalingGroupLoadBalancerNames (\s a -> s { _autoScalingGroupLoadBalancerNames = a })
asgMaxSize :: Lens' AutoScalingGroup (Val Text)
asgMaxSize = lens _autoScalingGroupMaxSize (\s a -> s { _autoScalingGroupMaxSize = a })
asgMetricsCollection :: Lens' AutoScalingGroup (Maybe [AutoScalingMetricsCollection])
asgMetricsCollection = lens _autoScalingGroupMetricsCollection (\s a -> s { _autoScalingGroupMetricsCollection = a })
asgMinSize :: Lens' AutoScalingGroup (Val Text)
asgMinSize = lens _autoScalingGroupMinSize (\s a -> s { _autoScalingGroupMinSize = a })
asgNotificationConfigurations :: Lens' AutoScalingGroup (Maybe [AutoScalingNotificationConfigurations])
asgNotificationConfigurations = lens _autoScalingGroupNotificationConfigurations (\s a -> s { _autoScalingGroupNotificationConfigurations = a })
asgPlacementGroup :: Lens' AutoScalingGroup (Maybe (Val Text))
asgPlacementGroup = lens _autoScalingGroupPlacementGroup (\s a -> s { _autoScalingGroupPlacementGroup = a })
asgTags :: Lens' AutoScalingGroup (Maybe [AutoScalingTags])
asgTags = lens _autoScalingGroupTags (\s a -> s { _autoScalingGroupTags = a })
asgTerminationPolicies :: Lens' AutoScalingGroup (Maybe [Val Text])
asgTerminationPolicies = lens _autoScalingGroupTerminationPolicies (\s a -> s { _autoScalingGroupTerminationPolicies = a })
asgVPCZoneIdentifier :: Lens' AutoScalingGroup (Maybe [Val Text])
asgVPCZoneIdentifier = lens _autoScalingGroupVPCZoneIdentifier (\s a -> s { _autoScalingGroupVPCZoneIdentifier = a })