packages feed

stratosphere-applicationautoscaling-1.0.0: gen/Stratosphere/ApplicationAutoScaling/ScalingPolicy.hs

module Stratosphere.ApplicationAutoScaling.ScalingPolicy (
        module Exports, ScalingPolicy(..), mkScalingPolicy
    ) where
import qualified Data.Aeson as JSON
import qualified Stratosphere.Prelude as Prelude
import Stratosphere.Property
import {-# SOURCE #-} Stratosphere.ApplicationAutoScaling.ScalingPolicy.PredictiveScalingPolicyConfigurationProperty as Exports
import {-# SOURCE #-} Stratosphere.ApplicationAutoScaling.ScalingPolicy.StepScalingPolicyConfigurationProperty as Exports
import {-# SOURCE #-} Stratosphere.ApplicationAutoScaling.ScalingPolicy.TargetTrackingScalingPolicyConfigurationProperty as Exports
import Stratosphere.ResourceProperties
import Stratosphere.Value
data ScalingPolicy
  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html>
    ScalingPolicy {haddock_workaround_ :: (),
                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html#cfn-applicationautoscaling-scalingpolicy-policyname>
                   policyName :: (Value Prelude.Text),
                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html#cfn-applicationautoscaling-scalingpolicy-policytype>
                   policyType :: (Value Prelude.Text),
                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html#cfn-applicationautoscaling-scalingpolicy-predictivescalingpolicyconfiguration>
                   predictiveScalingPolicyConfiguration :: (Prelude.Maybe PredictiveScalingPolicyConfigurationProperty),
                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html#cfn-applicationautoscaling-scalingpolicy-resourceid>
                   resourceId :: (Prelude.Maybe (Value Prelude.Text)),
                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html#cfn-applicationautoscaling-scalingpolicy-scalabledimension>
                   scalableDimension :: (Prelude.Maybe (Value Prelude.Text)),
                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html#cfn-applicationautoscaling-scalingpolicy-scalingtargetid>
                   scalingTargetId :: (Prelude.Maybe (Value Prelude.Text)),
                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html#cfn-applicationautoscaling-scalingpolicy-servicenamespace>
                   serviceNamespace :: (Prelude.Maybe (Value Prelude.Text)),
                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html#cfn-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration>
                   stepScalingPolicyConfiguration :: (Prelude.Maybe StepScalingPolicyConfigurationProperty),
                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html#cfn-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration>
                   targetTrackingScalingPolicyConfiguration :: (Prelude.Maybe TargetTrackingScalingPolicyConfigurationProperty)}
  deriving stock (Prelude.Eq, Prelude.Show)
mkScalingPolicy ::
  Value Prelude.Text -> Value Prelude.Text -> ScalingPolicy
mkScalingPolicy policyName policyType
  = ScalingPolicy
      {haddock_workaround_ = (), policyName = policyName,
       policyType = policyType,
       predictiveScalingPolicyConfiguration = Prelude.Nothing,
       resourceId = Prelude.Nothing, scalableDimension = Prelude.Nothing,
       scalingTargetId = Prelude.Nothing,
       serviceNamespace = Prelude.Nothing,
       stepScalingPolicyConfiguration = Prelude.Nothing,
       targetTrackingScalingPolicyConfiguration = Prelude.Nothing}
instance ToResourceProperties ScalingPolicy where
  toResourceProperties ScalingPolicy {..}
    = ResourceProperties
        {awsType = "AWS::ApplicationAutoScaling::ScalingPolicy",
         supportsTags = Prelude.False,
         properties = Prelude.fromList
                        ((Prelude.<>)
                           ["PolicyName" JSON..= policyName, "PolicyType" JSON..= policyType]
                           (Prelude.catMaybes
                              [(JSON..=) "PredictiveScalingPolicyConfiguration"
                                 Prelude.<$> predictiveScalingPolicyConfiguration,
                               (JSON..=) "ResourceId" Prelude.<$> resourceId,
                               (JSON..=) "ScalableDimension" Prelude.<$> scalableDimension,
                               (JSON..=) "ScalingTargetId" Prelude.<$> scalingTargetId,
                               (JSON..=) "ServiceNamespace" Prelude.<$> serviceNamespace,
                               (JSON..=) "StepScalingPolicyConfiguration"
                                 Prelude.<$> stepScalingPolicyConfiguration,
                               (JSON..=) "TargetTrackingScalingPolicyConfiguration"
                                 Prelude.<$> targetTrackingScalingPolicyConfiguration]))}
instance JSON.ToJSON ScalingPolicy where
  toJSON ScalingPolicy {..}
    = JSON.object
        (Prelude.fromList
           ((Prelude.<>)
              ["PolicyName" JSON..= policyName, "PolicyType" JSON..= policyType]
              (Prelude.catMaybes
                 [(JSON..=) "PredictiveScalingPolicyConfiguration"
                    Prelude.<$> predictiveScalingPolicyConfiguration,
                  (JSON..=) "ResourceId" Prelude.<$> resourceId,
                  (JSON..=) "ScalableDimension" Prelude.<$> scalableDimension,
                  (JSON..=) "ScalingTargetId" Prelude.<$> scalingTargetId,
                  (JSON..=) "ServiceNamespace" Prelude.<$> serviceNamespace,
                  (JSON..=) "StepScalingPolicyConfiguration"
                    Prelude.<$> stepScalingPolicyConfiguration,
                  (JSON..=) "TargetTrackingScalingPolicyConfiguration"
                    Prelude.<$> targetTrackingScalingPolicyConfiguration])))
instance Property "PolicyName" ScalingPolicy where
  type PropertyType "PolicyName" ScalingPolicy = Value Prelude.Text
  set newValue ScalingPolicy {..}
    = ScalingPolicy {policyName = newValue, ..}
instance Property "PolicyType" ScalingPolicy where
  type PropertyType "PolicyType" ScalingPolicy = Value Prelude.Text
  set newValue ScalingPolicy {..}
    = ScalingPolicy {policyType = newValue, ..}
instance Property "PredictiveScalingPolicyConfiguration" ScalingPolicy where
  type PropertyType "PredictiveScalingPolicyConfiguration" ScalingPolicy = PredictiveScalingPolicyConfigurationProperty
  set newValue ScalingPolicy {..}
    = ScalingPolicy
        {predictiveScalingPolicyConfiguration = Prelude.pure newValue, ..}
instance Property "ResourceId" ScalingPolicy where
  type PropertyType "ResourceId" ScalingPolicy = Value Prelude.Text
  set newValue ScalingPolicy {..}
    = ScalingPolicy {resourceId = Prelude.pure newValue, ..}
instance Property "ScalableDimension" ScalingPolicy where
  type PropertyType "ScalableDimension" ScalingPolicy = Value Prelude.Text
  set newValue ScalingPolicy {..}
    = ScalingPolicy {scalableDimension = Prelude.pure newValue, ..}
instance Property "ScalingTargetId" ScalingPolicy where
  type PropertyType "ScalingTargetId" ScalingPolicy = Value Prelude.Text
  set newValue ScalingPolicy {..}
    = ScalingPolicy {scalingTargetId = Prelude.pure newValue, ..}
instance Property "ServiceNamespace" ScalingPolicy where
  type PropertyType "ServiceNamespace" ScalingPolicy = Value Prelude.Text
  set newValue ScalingPolicy {..}
    = ScalingPolicy {serviceNamespace = Prelude.pure newValue, ..}
instance Property "StepScalingPolicyConfiguration" ScalingPolicy where
  type PropertyType "StepScalingPolicyConfiguration" ScalingPolicy = StepScalingPolicyConfigurationProperty
  set newValue ScalingPolicy {..}
    = ScalingPolicy
        {stepScalingPolicyConfiguration = Prelude.pure newValue, ..}
instance Property "TargetTrackingScalingPolicyConfiguration" ScalingPolicy where
  type PropertyType "TargetTrackingScalingPolicyConfiguration" ScalingPolicy = TargetTrackingScalingPolicyConfigurationProperty
  set newValue ScalingPolicy {..}
    = ScalingPolicy
        {targetTrackingScalingPolicyConfiguration = Prelude.pure newValue,
         ..}