module Stratosphere.AutoScalingPlans.ScalingPlan.ScalingInstructionProperty ( module Exports, ScalingInstructionProperty(..), mkScalingInstructionProperty ) where import qualified Data.Aeson as JSON import qualified Stratosphere.Prelude as Prelude import Stratosphere.Property import {-# SOURCE #-} Stratosphere.AutoScalingPlans.ScalingPlan.CustomizedLoadMetricSpecificationProperty as Exports import {-# SOURCE #-} Stratosphere.AutoScalingPlans.ScalingPlan.PredefinedLoadMetricSpecificationProperty as Exports import {-# SOURCE #-} Stratosphere.AutoScalingPlans.ScalingPlan.TargetTrackingConfigurationProperty as Exports import Stratosphere.ResourceProperties import Stratosphere.Value data ScalingInstructionProperty = -- | See: ScalingInstructionProperty {haddock_workaround_ :: (), -- | See: customizedLoadMetricSpecification :: (Prelude.Maybe CustomizedLoadMetricSpecificationProperty), -- | See: disableDynamicScaling :: (Prelude.Maybe (Value Prelude.Bool)), -- | See: maxCapacity :: (Value Prelude.Integer), -- | See: minCapacity :: (Value Prelude.Integer), -- | See: predefinedLoadMetricSpecification :: (Prelude.Maybe PredefinedLoadMetricSpecificationProperty), -- | See: predictiveScalingMaxCapacityBehavior :: (Prelude.Maybe (Value Prelude.Text)), -- | See: predictiveScalingMaxCapacityBuffer :: (Prelude.Maybe (Value Prelude.Integer)), -- | See: predictiveScalingMode :: (Prelude.Maybe (Value Prelude.Text)), -- | See: resourceId :: (Value Prelude.Text), -- | See: scalableDimension :: (Value Prelude.Text), -- | See: scalingPolicyUpdateBehavior :: (Prelude.Maybe (Value Prelude.Text)), -- | See: scheduledActionBufferTime :: (Prelude.Maybe (Value Prelude.Integer)), -- | See: serviceNamespace :: (Value Prelude.Text), -- | See: targetTrackingConfigurations :: [TargetTrackingConfigurationProperty]} deriving stock (Prelude.Eq, Prelude.Show) mkScalingInstructionProperty :: Value Prelude.Integer -> Value Prelude.Integer -> Value Prelude.Text -> Value Prelude.Text -> Value Prelude.Text -> [TargetTrackingConfigurationProperty] -> ScalingInstructionProperty mkScalingInstructionProperty maxCapacity minCapacity resourceId scalableDimension serviceNamespace targetTrackingConfigurations = ScalingInstructionProperty {haddock_workaround_ = (), maxCapacity = maxCapacity, minCapacity = minCapacity, resourceId = resourceId, scalableDimension = scalableDimension, serviceNamespace = serviceNamespace, targetTrackingConfigurations = targetTrackingConfigurations, customizedLoadMetricSpecification = Prelude.Nothing, disableDynamicScaling = Prelude.Nothing, predefinedLoadMetricSpecification = Prelude.Nothing, predictiveScalingMaxCapacityBehavior = Prelude.Nothing, predictiveScalingMaxCapacityBuffer = Prelude.Nothing, predictiveScalingMode = Prelude.Nothing, scalingPolicyUpdateBehavior = Prelude.Nothing, scheduledActionBufferTime = Prelude.Nothing} instance ToResourceProperties ScalingInstructionProperty where toResourceProperties ScalingInstructionProperty {..} = ResourceProperties {awsType = "AWS::AutoScalingPlans::ScalingPlan.ScalingInstruction", supportsTags = Prelude.False, properties = Prelude.fromList ((Prelude.<>) ["MaxCapacity" JSON..= maxCapacity, "MinCapacity" JSON..= minCapacity, "ResourceId" JSON..= resourceId, "ScalableDimension" JSON..= scalableDimension, "ServiceNamespace" JSON..= serviceNamespace, "TargetTrackingConfigurations" JSON..= targetTrackingConfigurations] (Prelude.catMaybes [(JSON..=) "CustomizedLoadMetricSpecification" Prelude.<$> customizedLoadMetricSpecification, (JSON..=) "DisableDynamicScaling" Prelude.<$> disableDynamicScaling, (JSON..=) "PredefinedLoadMetricSpecification" Prelude.<$> predefinedLoadMetricSpecification, (JSON..=) "PredictiveScalingMaxCapacityBehavior" Prelude.<$> predictiveScalingMaxCapacityBehavior, (JSON..=) "PredictiveScalingMaxCapacityBuffer" Prelude.<$> predictiveScalingMaxCapacityBuffer, (JSON..=) "PredictiveScalingMode" Prelude.<$> predictiveScalingMode, (JSON..=) "ScalingPolicyUpdateBehavior" Prelude.<$> scalingPolicyUpdateBehavior, (JSON..=) "ScheduledActionBufferTime" Prelude.<$> scheduledActionBufferTime]))} instance JSON.ToJSON ScalingInstructionProperty where toJSON ScalingInstructionProperty {..} = JSON.object (Prelude.fromList ((Prelude.<>) ["MaxCapacity" JSON..= maxCapacity, "MinCapacity" JSON..= minCapacity, "ResourceId" JSON..= resourceId, "ScalableDimension" JSON..= scalableDimension, "ServiceNamespace" JSON..= serviceNamespace, "TargetTrackingConfigurations" JSON..= targetTrackingConfigurations] (Prelude.catMaybes [(JSON..=) "CustomizedLoadMetricSpecification" Prelude.<$> customizedLoadMetricSpecification, (JSON..=) "DisableDynamicScaling" Prelude.<$> disableDynamicScaling, (JSON..=) "PredefinedLoadMetricSpecification" Prelude.<$> predefinedLoadMetricSpecification, (JSON..=) "PredictiveScalingMaxCapacityBehavior" Prelude.<$> predictiveScalingMaxCapacityBehavior, (JSON..=) "PredictiveScalingMaxCapacityBuffer" Prelude.<$> predictiveScalingMaxCapacityBuffer, (JSON..=) "PredictiveScalingMode" Prelude.<$> predictiveScalingMode, (JSON..=) "ScalingPolicyUpdateBehavior" Prelude.<$> scalingPolicyUpdateBehavior, (JSON..=) "ScheduledActionBufferTime" Prelude.<$> scheduledActionBufferTime]))) instance Property "CustomizedLoadMetricSpecification" ScalingInstructionProperty where type PropertyType "CustomizedLoadMetricSpecification" ScalingInstructionProperty = CustomizedLoadMetricSpecificationProperty set newValue ScalingInstructionProperty {..} = ScalingInstructionProperty {customizedLoadMetricSpecification = Prelude.pure newValue, ..} instance Property "DisableDynamicScaling" ScalingInstructionProperty where type PropertyType "DisableDynamicScaling" ScalingInstructionProperty = Value Prelude.Bool set newValue ScalingInstructionProperty {..} = ScalingInstructionProperty {disableDynamicScaling = Prelude.pure newValue, ..} instance Property "MaxCapacity" ScalingInstructionProperty where type PropertyType "MaxCapacity" ScalingInstructionProperty = Value Prelude.Integer set newValue ScalingInstructionProperty {..} = ScalingInstructionProperty {maxCapacity = newValue, ..} instance Property "MinCapacity" ScalingInstructionProperty where type PropertyType "MinCapacity" ScalingInstructionProperty = Value Prelude.Integer set newValue ScalingInstructionProperty {..} = ScalingInstructionProperty {minCapacity = newValue, ..} instance Property "PredefinedLoadMetricSpecification" ScalingInstructionProperty where type PropertyType "PredefinedLoadMetricSpecification" ScalingInstructionProperty = PredefinedLoadMetricSpecificationProperty set newValue ScalingInstructionProperty {..} = ScalingInstructionProperty {predefinedLoadMetricSpecification = Prelude.pure newValue, ..} instance Property "PredictiveScalingMaxCapacityBehavior" ScalingInstructionProperty where type PropertyType "PredictiveScalingMaxCapacityBehavior" ScalingInstructionProperty = Value Prelude.Text set newValue ScalingInstructionProperty {..} = ScalingInstructionProperty {predictiveScalingMaxCapacityBehavior = Prelude.pure newValue, ..} instance Property "PredictiveScalingMaxCapacityBuffer" ScalingInstructionProperty where type PropertyType "PredictiveScalingMaxCapacityBuffer" ScalingInstructionProperty = Value Prelude.Integer set newValue ScalingInstructionProperty {..} = ScalingInstructionProperty {predictiveScalingMaxCapacityBuffer = Prelude.pure newValue, ..} instance Property "PredictiveScalingMode" ScalingInstructionProperty where type PropertyType "PredictiveScalingMode" ScalingInstructionProperty = Value Prelude.Text set newValue ScalingInstructionProperty {..} = ScalingInstructionProperty {predictiveScalingMode = Prelude.pure newValue, ..} instance Property "ResourceId" ScalingInstructionProperty where type PropertyType "ResourceId" ScalingInstructionProperty = Value Prelude.Text set newValue ScalingInstructionProperty {..} = ScalingInstructionProperty {resourceId = newValue, ..} instance Property "ScalableDimension" ScalingInstructionProperty where type PropertyType "ScalableDimension" ScalingInstructionProperty = Value Prelude.Text set newValue ScalingInstructionProperty {..} = ScalingInstructionProperty {scalableDimension = newValue, ..} instance Property "ScalingPolicyUpdateBehavior" ScalingInstructionProperty where type PropertyType "ScalingPolicyUpdateBehavior" ScalingInstructionProperty = Value Prelude.Text set newValue ScalingInstructionProperty {..} = ScalingInstructionProperty {scalingPolicyUpdateBehavior = Prelude.pure newValue, ..} instance Property "ScheduledActionBufferTime" ScalingInstructionProperty where type PropertyType "ScheduledActionBufferTime" ScalingInstructionProperty = Value Prelude.Integer set newValue ScalingInstructionProperty {..} = ScalingInstructionProperty {scheduledActionBufferTime = Prelude.pure newValue, ..} instance Property "ServiceNamespace" ScalingInstructionProperty where type PropertyType "ServiceNamespace" ScalingInstructionProperty = Value Prelude.Text set newValue ScalingInstructionProperty {..} = ScalingInstructionProperty {serviceNamespace = newValue, ..} instance Property "TargetTrackingConfigurations" ScalingInstructionProperty where type PropertyType "TargetTrackingConfigurations" ScalingInstructionProperty = [TargetTrackingConfigurationProperty] set newValue ScalingInstructionProperty {..} = ScalingInstructionProperty {targetTrackingConfigurations = newValue, ..}