module Network.AWS.ApplicationAutoScaling.Types.Product where
import Network.AWS.ApplicationAutoScaling.Types.Sum
import Network.AWS.Lens
import Network.AWS.Prelude
data Alarm = Alarm'
{ _aAlarmName :: !Text
, _aAlarmARN :: !Text
} deriving (Eq,Read,Show,Data,Typeable,Generic)
alarm
:: Text
-> Text
-> Alarm
alarm pAlarmName_ pAlarmARN_ =
Alarm'
{ _aAlarmName = pAlarmName_
, _aAlarmARN = pAlarmARN_
}
aAlarmName :: Lens' Alarm Text
aAlarmName = lens _aAlarmName (\ s a -> s{_aAlarmName = a});
aAlarmARN :: Lens' Alarm Text
aAlarmARN = lens _aAlarmARN (\ s a -> s{_aAlarmARN = a});
instance FromJSON Alarm where
parseJSON
= withObject "Alarm"
(\ x ->
Alarm' <$> (x .: "AlarmName") <*> (x .: "AlarmARN"))
instance Hashable Alarm
instance NFData Alarm
data ScalableTarget = ScalableTarget'
{ _stServiceNamespace :: !ServiceNamespace
, _stResourceId :: !Text
, _stScalableDimension :: !ScalableDimension
, _stMinCapacity :: !Int
, _stMaxCapacity :: !Int
, _stRoleARN :: !Text
, _stCreationTime :: !POSIX
} deriving (Eq,Read,Show,Data,Typeable,Generic)
scalableTarget
:: ServiceNamespace
-> Text
-> ScalableDimension
-> Int
-> Int
-> Text
-> UTCTime
-> ScalableTarget
scalableTarget pServiceNamespace_ pResourceId_ pScalableDimension_ pMinCapacity_ pMaxCapacity_ pRoleARN_ pCreationTime_ =
ScalableTarget'
{ _stServiceNamespace = pServiceNamespace_
, _stResourceId = pResourceId_
, _stScalableDimension = pScalableDimension_
, _stMinCapacity = pMinCapacity_
, _stMaxCapacity = pMaxCapacity_
, _stRoleARN = pRoleARN_
, _stCreationTime = _Time # pCreationTime_
}
stServiceNamespace :: Lens' ScalableTarget ServiceNamespace
stServiceNamespace = lens _stServiceNamespace (\ s a -> s{_stServiceNamespace = a});
stResourceId :: Lens' ScalableTarget Text
stResourceId = lens _stResourceId (\ s a -> s{_stResourceId = a});
stScalableDimension :: Lens' ScalableTarget ScalableDimension
stScalableDimension = lens _stScalableDimension (\ s a -> s{_stScalableDimension = a});
stMinCapacity :: Lens' ScalableTarget Int
stMinCapacity = lens _stMinCapacity (\ s a -> s{_stMinCapacity = a});
stMaxCapacity :: Lens' ScalableTarget Int
stMaxCapacity = lens _stMaxCapacity (\ s a -> s{_stMaxCapacity = a});
stRoleARN :: Lens' ScalableTarget Text
stRoleARN = lens _stRoleARN (\ s a -> s{_stRoleARN = a});
stCreationTime :: Lens' ScalableTarget UTCTime
stCreationTime = lens _stCreationTime (\ s a -> s{_stCreationTime = a}) . _Time;
instance FromJSON ScalableTarget where
parseJSON
= withObject "ScalableTarget"
(\ x ->
ScalableTarget' <$>
(x .: "ServiceNamespace") <*> (x .: "ResourceId") <*>
(x .: "ScalableDimension")
<*> (x .: "MinCapacity")
<*> (x .: "MaxCapacity")
<*> (x .: "RoleARN")
<*> (x .: "CreationTime"))
instance Hashable ScalableTarget
instance NFData ScalableTarget
data ScalingActivity = ScalingActivity'
{ _saStatusMessage :: !(Maybe Text)
, _saEndTime :: !(Maybe POSIX)
, _saDetails :: !(Maybe Text)
, _saActivityId :: !Text
, _saServiceNamespace :: !ServiceNamespace
, _saResourceId :: !Text
, _saScalableDimension :: !ScalableDimension
, _saDescription :: !Text
, _saCause :: !Text
, _saStartTime :: !POSIX
, _saStatusCode :: !ScalingActivityStatusCode
} deriving (Eq,Read,Show,Data,Typeable,Generic)
scalingActivity
:: Text
-> ServiceNamespace
-> Text
-> ScalableDimension
-> Text
-> Text
-> UTCTime
-> ScalingActivityStatusCode
-> ScalingActivity
scalingActivity pActivityId_ pServiceNamespace_ pResourceId_ pScalableDimension_ pDescription_ pCause_ pStartTime_ pStatusCode_ =
ScalingActivity'
{ _saStatusMessage = Nothing
, _saEndTime = Nothing
, _saDetails = Nothing
, _saActivityId = pActivityId_
, _saServiceNamespace = pServiceNamespace_
, _saResourceId = pResourceId_
, _saScalableDimension = pScalableDimension_
, _saDescription = pDescription_
, _saCause = pCause_
, _saStartTime = _Time # pStartTime_
, _saStatusCode = pStatusCode_
}
saStatusMessage :: Lens' ScalingActivity (Maybe Text)
saStatusMessage = lens _saStatusMessage (\ s a -> s{_saStatusMessage = a});
saEndTime :: Lens' ScalingActivity (Maybe UTCTime)
saEndTime = lens _saEndTime (\ s a -> s{_saEndTime = a}) . mapping _Time;
saDetails :: Lens' ScalingActivity (Maybe Text)
saDetails = lens _saDetails (\ s a -> s{_saDetails = a});
saActivityId :: Lens' ScalingActivity Text
saActivityId = lens _saActivityId (\ s a -> s{_saActivityId = a});
saServiceNamespace :: Lens' ScalingActivity ServiceNamespace
saServiceNamespace = lens _saServiceNamespace (\ s a -> s{_saServiceNamespace = a});
saResourceId :: Lens' ScalingActivity Text
saResourceId = lens _saResourceId (\ s a -> s{_saResourceId = a});
saScalableDimension :: Lens' ScalingActivity ScalableDimension
saScalableDimension = lens _saScalableDimension (\ s a -> s{_saScalableDimension = a});
saDescription :: Lens' ScalingActivity Text
saDescription = lens _saDescription (\ s a -> s{_saDescription = a});
saCause :: Lens' ScalingActivity Text
saCause = lens _saCause (\ s a -> s{_saCause = a});
saStartTime :: Lens' ScalingActivity UTCTime
saStartTime = lens _saStartTime (\ s a -> s{_saStartTime = a}) . _Time;
saStatusCode :: Lens' ScalingActivity ScalingActivityStatusCode
saStatusCode = lens _saStatusCode (\ s a -> s{_saStatusCode = a});
instance FromJSON ScalingActivity where
parseJSON
= withObject "ScalingActivity"
(\ x ->
ScalingActivity' <$>
(x .:? "StatusMessage") <*> (x .:? "EndTime") <*>
(x .:? "Details")
<*> (x .: "ActivityId")
<*> (x .: "ServiceNamespace")
<*> (x .: "ResourceId")
<*> (x .: "ScalableDimension")
<*> (x .: "Description")
<*> (x .: "Cause")
<*> (x .: "StartTime")
<*> (x .: "StatusCode"))
instance Hashable ScalingActivity
instance NFData ScalingActivity
data ScalingPolicy = ScalingPolicy'
{ _spStepScalingPolicyConfiguration :: !(Maybe StepScalingPolicyConfiguration)
, _spAlarms :: !(Maybe [Alarm])
, _spPolicyARN :: !Text
, _spPolicyName :: !Text
, _spServiceNamespace :: !ServiceNamespace
, _spResourceId :: !Text
, _spScalableDimension :: !ScalableDimension
, _spPolicyType :: !PolicyType
, _spCreationTime :: !POSIX
} deriving (Eq,Read,Show,Data,Typeable,Generic)
scalingPolicy
:: Text
-> Text
-> ServiceNamespace
-> Text
-> ScalableDimension
-> PolicyType
-> UTCTime
-> ScalingPolicy
scalingPolicy pPolicyARN_ pPolicyName_ pServiceNamespace_ pResourceId_ pScalableDimension_ pPolicyType_ pCreationTime_ =
ScalingPolicy'
{ _spStepScalingPolicyConfiguration = Nothing
, _spAlarms = Nothing
, _spPolicyARN = pPolicyARN_
, _spPolicyName = pPolicyName_
, _spServiceNamespace = pServiceNamespace_
, _spResourceId = pResourceId_
, _spScalableDimension = pScalableDimension_
, _spPolicyType = pPolicyType_
, _spCreationTime = _Time # pCreationTime_
}
spStepScalingPolicyConfiguration :: Lens' ScalingPolicy (Maybe StepScalingPolicyConfiguration)
spStepScalingPolicyConfiguration = lens _spStepScalingPolicyConfiguration (\ s a -> s{_spStepScalingPolicyConfiguration = a});
spAlarms :: Lens' ScalingPolicy [Alarm]
spAlarms = lens _spAlarms (\ s a -> s{_spAlarms = a}) . _Default . _Coerce;
spPolicyARN :: Lens' ScalingPolicy Text
spPolicyARN = lens _spPolicyARN (\ s a -> s{_spPolicyARN = a});
spPolicyName :: Lens' ScalingPolicy Text
spPolicyName = lens _spPolicyName (\ s a -> s{_spPolicyName = a});
spServiceNamespace :: Lens' ScalingPolicy ServiceNamespace
spServiceNamespace = lens _spServiceNamespace (\ s a -> s{_spServiceNamespace = a});
spResourceId :: Lens' ScalingPolicy Text
spResourceId = lens _spResourceId (\ s a -> s{_spResourceId = a});
spScalableDimension :: Lens' ScalingPolicy ScalableDimension
spScalableDimension = lens _spScalableDimension (\ s a -> s{_spScalableDimension = a});
spPolicyType :: Lens' ScalingPolicy PolicyType
spPolicyType = lens _spPolicyType (\ s a -> s{_spPolicyType = a});
spCreationTime :: Lens' ScalingPolicy UTCTime
spCreationTime = lens _spCreationTime (\ s a -> s{_spCreationTime = a}) . _Time;
instance FromJSON ScalingPolicy where
parseJSON
= withObject "ScalingPolicy"
(\ x ->
ScalingPolicy' <$>
(x .:? "StepScalingPolicyConfiguration") <*>
(x .:? "Alarms" .!= mempty)
<*> (x .: "PolicyARN")
<*> (x .: "PolicyName")
<*> (x .: "ServiceNamespace")
<*> (x .: "ResourceId")
<*> (x .: "ScalableDimension")
<*> (x .: "PolicyType")
<*> (x .: "CreationTime"))
instance Hashable ScalingPolicy
instance NFData ScalingPolicy
data StepAdjustment = StepAdjustment'
{ _saMetricIntervalLowerBound :: !(Maybe Double)
, _saMetricIntervalUpperBound :: !(Maybe Double)
, _saScalingAdjustment :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
stepAdjustment
:: Int
-> StepAdjustment
stepAdjustment pScalingAdjustment_ =
StepAdjustment'
{ _saMetricIntervalLowerBound = Nothing
, _saMetricIntervalUpperBound = Nothing
, _saScalingAdjustment = pScalingAdjustment_
}
saMetricIntervalLowerBound :: Lens' StepAdjustment (Maybe Double)
saMetricIntervalLowerBound = lens _saMetricIntervalLowerBound (\ s a -> s{_saMetricIntervalLowerBound = a});
saMetricIntervalUpperBound :: Lens' StepAdjustment (Maybe Double)
saMetricIntervalUpperBound = lens _saMetricIntervalUpperBound (\ s a -> s{_saMetricIntervalUpperBound = a});
saScalingAdjustment :: Lens' StepAdjustment Int
saScalingAdjustment = lens _saScalingAdjustment (\ s a -> s{_saScalingAdjustment = a});
instance FromJSON StepAdjustment where
parseJSON
= withObject "StepAdjustment"
(\ x ->
StepAdjustment' <$>
(x .:? "MetricIntervalLowerBound") <*>
(x .:? "MetricIntervalUpperBound")
<*> (x .: "ScalingAdjustment"))
instance Hashable StepAdjustment
instance NFData StepAdjustment
instance ToJSON StepAdjustment where
toJSON StepAdjustment'{..}
= object
(catMaybes
[("MetricIntervalLowerBound" .=) <$>
_saMetricIntervalLowerBound,
("MetricIntervalUpperBound" .=) <$>
_saMetricIntervalUpperBound,
Just ("ScalingAdjustment" .= _saScalingAdjustment)])
data StepScalingPolicyConfiguration = StepScalingPolicyConfiguration'
{ _sspcStepAdjustments :: !(Maybe [StepAdjustment])
, _sspcAdjustmentType :: !(Maybe AdjustmentType)
, _sspcCooldown :: !(Maybe Int)
, _sspcMetricAggregationType :: !(Maybe MetricAggregationType)
, _sspcMinAdjustmentMagnitude :: !(Maybe Int)
} deriving (Eq,Read,Show,Data,Typeable,Generic)
stepScalingPolicyConfiguration
:: StepScalingPolicyConfiguration
stepScalingPolicyConfiguration =
StepScalingPolicyConfiguration'
{ _sspcStepAdjustments = Nothing
, _sspcAdjustmentType = Nothing
, _sspcCooldown = Nothing
, _sspcMetricAggregationType = Nothing
, _sspcMinAdjustmentMagnitude = Nothing
}
sspcStepAdjustments :: Lens' StepScalingPolicyConfiguration [StepAdjustment]
sspcStepAdjustments = lens _sspcStepAdjustments (\ s a -> s{_sspcStepAdjustments = a}) . _Default . _Coerce;
sspcAdjustmentType :: Lens' StepScalingPolicyConfiguration (Maybe AdjustmentType)
sspcAdjustmentType = lens _sspcAdjustmentType (\ s a -> s{_sspcAdjustmentType = a});
sspcCooldown :: Lens' StepScalingPolicyConfiguration (Maybe Int)
sspcCooldown = lens _sspcCooldown (\ s a -> s{_sspcCooldown = a});
sspcMetricAggregationType :: Lens' StepScalingPolicyConfiguration (Maybe MetricAggregationType)
sspcMetricAggregationType = lens _sspcMetricAggregationType (\ s a -> s{_sspcMetricAggregationType = a});
sspcMinAdjustmentMagnitude :: Lens' StepScalingPolicyConfiguration (Maybe Int)
sspcMinAdjustmentMagnitude = lens _sspcMinAdjustmentMagnitude (\ s a -> s{_sspcMinAdjustmentMagnitude = a});
instance FromJSON StepScalingPolicyConfiguration
where
parseJSON
= withObject "StepScalingPolicyConfiguration"
(\ x ->
StepScalingPolicyConfiguration' <$>
(x .:? "StepAdjustments" .!= mempty) <*>
(x .:? "AdjustmentType")
<*> (x .:? "Cooldown")
<*> (x .:? "MetricAggregationType")
<*> (x .:? "MinAdjustmentMagnitude"))
instance Hashable StepScalingPolicyConfiguration
instance NFData StepScalingPolicyConfiguration
instance ToJSON StepScalingPolicyConfiguration where
toJSON StepScalingPolicyConfiguration'{..}
= object
(catMaybes
[("StepAdjustments" .=) <$> _sspcStepAdjustments,
("AdjustmentType" .=) <$> _sspcAdjustmentType,
("Cooldown" .=) <$> _sspcCooldown,
("MetricAggregationType" .=) <$>
_sspcMetricAggregationType,
("MinAdjustmentMagnitude" .=) <$>
_sspcMinAdjustmentMagnitude])