module Network.AWS.AutoScaling.CreateAutoScalingGroup
(
createAutoScalingGroup
, CreateAutoScalingGroup
, casgInstanceId
, casgTerminationPolicies
, casgHealthCheckGracePeriod
, casgNewInstancesProtectedFromScaleIn
, casgVPCZoneIdentifier
, casgDefaultCooldown
, casgAvailabilityZones
, casgDesiredCapacity
, casgLaunchConfigurationName
, casgHealthCheckType
, casgPlacementGroup
, casgLoadBalancerNames
, casgTags
, casgAutoScalingGroupName
, casgMinSize
, casgMaxSize
, createAutoScalingGroupResponse
, CreateAutoScalingGroupResponse
) where
import Network.AWS.AutoScaling.Types
import Network.AWS.AutoScaling.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
data CreateAutoScalingGroup = CreateAutoScalingGroup'
{ _casgInstanceId :: !(Maybe Text)
, _casgTerminationPolicies :: !(Maybe [Text])
, _casgHealthCheckGracePeriod :: !(Maybe Int)
, _casgNewInstancesProtectedFromScaleIn :: !(Maybe Bool)
, _casgVPCZoneIdentifier :: !(Maybe Text)
, _casgDefaultCooldown :: !(Maybe Int)
, _casgAvailabilityZones :: !(Maybe (List1 Text))
, _casgDesiredCapacity :: !(Maybe Int)
, _casgLaunchConfigurationName :: !(Maybe Text)
, _casgHealthCheckType :: !(Maybe Text)
, _casgPlacementGroup :: !(Maybe Text)
, _casgLoadBalancerNames :: !(Maybe [Text])
, _casgTags :: !(Maybe [Tag])
, _casgAutoScalingGroupName :: !Text
, _casgMinSize :: !Int
, _casgMaxSize :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
createAutoScalingGroup
:: Text
-> Int
-> Int
-> CreateAutoScalingGroup
createAutoScalingGroup pAutoScalingGroupName_ pMinSize_ pMaxSize_ =
CreateAutoScalingGroup'
{ _casgInstanceId = Nothing
, _casgTerminationPolicies = Nothing
, _casgHealthCheckGracePeriod = Nothing
, _casgNewInstancesProtectedFromScaleIn = Nothing
, _casgVPCZoneIdentifier = Nothing
, _casgDefaultCooldown = Nothing
, _casgAvailabilityZones = Nothing
, _casgDesiredCapacity = Nothing
, _casgLaunchConfigurationName = Nothing
, _casgHealthCheckType = Nothing
, _casgPlacementGroup = Nothing
, _casgLoadBalancerNames = Nothing
, _casgTags = Nothing
, _casgAutoScalingGroupName = pAutoScalingGroupName_
, _casgMinSize = pMinSize_
, _casgMaxSize = pMaxSize_
}
casgInstanceId :: Lens' CreateAutoScalingGroup (Maybe Text)
casgInstanceId = lens _casgInstanceId (\ s a -> s{_casgInstanceId = a});
casgTerminationPolicies :: Lens' CreateAutoScalingGroup [Text]
casgTerminationPolicies = lens _casgTerminationPolicies (\ s a -> s{_casgTerminationPolicies = a}) . _Default . _Coerce;
casgHealthCheckGracePeriod :: Lens' CreateAutoScalingGroup (Maybe Int)
casgHealthCheckGracePeriod = lens _casgHealthCheckGracePeriod (\ s a -> s{_casgHealthCheckGracePeriod = a});
casgNewInstancesProtectedFromScaleIn :: Lens' CreateAutoScalingGroup (Maybe Bool)
casgNewInstancesProtectedFromScaleIn = lens _casgNewInstancesProtectedFromScaleIn (\ s a -> s{_casgNewInstancesProtectedFromScaleIn = a});
casgVPCZoneIdentifier :: Lens' CreateAutoScalingGroup (Maybe Text)
casgVPCZoneIdentifier = lens _casgVPCZoneIdentifier (\ s a -> s{_casgVPCZoneIdentifier = a});
casgDefaultCooldown :: Lens' CreateAutoScalingGroup (Maybe Int)
casgDefaultCooldown = lens _casgDefaultCooldown (\ s a -> s{_casgDefaultCooldown = a});
casgAvailabilityZones :: Lens' CreateAutoScalingGroup (Maybe (NonEmpty Text))
casgAvailabilityZones = lens _casgAvailabilityZones (\ s a -> s{_casgAvailabilityZones = a}) . mapping _List1;
casgDesiredCapacity :: Lens' CreateAutoScalingGroup (Maybe Int)
casgDesiredCapacity = lens _casgDesiredCapacity (\ s a -> s{_casgDesiredCapacity = a});
casgLaunchConfigurationName :: Lens' CreateAutoScalingGroup (Maybe Text)
casgLaunchConfigurationName = lens _casgLaunchConfigurationName (\ s a -> s{_casgLaunchConfigurationName = a});
casgHealthCheckType :: Lens' CreateAutoScalingGroup (Maybe Text)
casgHealthCheckType = lens _casgHealthCheckType (\ s a -> s{_casgHealthCheckType = a});
casgPlacementGroup :: Lens' CreateAutoScalingGroup (Maybe Text)
casgPlacementGroup = lens _casgPlacementGroup (\ s a -> s{_casgPlacementGroup = a});
casgLoadBalancerNames :: Lens' CreateAutoScalingGroup [Text]
casgLoadBalancerNames = lens _casgLoadBalancerNames (\ s a -> s{_casgLoadBalancerNames = a}) . _Default . _Coerce;
casgTags :: Lens' CreateAutoScalingGroup [Tag]
casgTags = lens _casgTags (\ s a -> s{_casgTags = a}) . _Default . _Coerce;
casgAutoScalingGroupName :: Lens' CreateAutoScalingGroup Text
casgAutoScalingGroupName = lens _casgAutoScalingGroupName (\ s a -> s{_casgAutoScalingGroupName = a});
casgMinSize :: Lens' CreateAutoScalingGroup Int
casgMinSize = lens _casgMinSize (\ s a -> s{_casgMinSize = a});
casgMaxSize :: Lens' CreateAutoScalingGroup Int
casgMaxSize = lens _casgMaxSize (\ s a -> s{_casgMaxSize = a});
instance AWSRequest CreateAutoScalingGroup where
type Rs CreateAutoScalingGroup =
CreateAutoScalingGroupResponse
request = postQuery autoScaling
response
= receiveNull CreateAutoScalingGroupResponse'
instance Hashable CreateAutoScalingGroup
instance NFData CreateAutoScalingGroup
instance ToHeaders CreateAutoScalingGroup where
toHeaders = const mempty
instance ToPath CreateAutoScalingGroup where
toPath = const "/"
instance ToQuery CreateAutoScalingGroup where
toQuery CreateAutoScalingGroup'{..}
= mconcat
["Action" =:
("CreateAutoScalingGroup" :: ByteString),
"Version" =: ("2011-01-01" :: ByteString),
"InstanceId" =: _casgInstanceId,
"TerminationPolicies" =:
toQuery
(toQueryList "member" <$> _casgTerminationPolicies),
"HealthCheckGracePeriod" =:
_casgHealthCheckGracePeriod,
"NewInstancesProtectedFromScaleIn" =:
_casgNewInstancesProtectedFromScaleIn,
"VPCZoneIdentifier" =: _casgVPCZoneIdentifier,
"DefaultCooldown" =: _casgDefaultCooldown,
"AvailabilityZones" =:
toQuery
(toQueryList "member" <$> _casgAvailabilityZones),
"DesiredCapacity" =: _casgDesiredCapacity,
"LaunchConfigurationName" =:
_casgLaunchConfigurationName,
"HealthCheckType" =: _casgHealthCheckType,
"PlacementGroup" =: _casgPlacementGroup,
"LoadBalancerNames" =:
toQuery
(toQueryList "member" <$> _casgLoadBalancerNames),
"Tags" =:
toQuery (toQueryList "member" <$> _casgTags),
"AutoScalingGroupName" =: _casgAutoScalingGroupName,
"MinSize" =: _casgMinSize, "MaxSize" =: _casgMaxSize]
data CreateAutoScalingGroupResponse =
CreateAutoScalingGroupResponse'
deriving (Eq,Read,Show,Data,Typeable,Generic)
createAutoScalingGroupResponse
:: CreateAutoScalingGroupResponse
createAutoScalingGroupResponse = CreateAutoScalingGroupResponse'
instance NFData CreateAutoScalingGroupResponse