module Stratosphere.AutoScalingPlans.ScalingPlan (
        module Exports, ScalingPlan(..), mkScalingPlan
    ) where
import qualified Data.Aeson as JSON
import qualified Stratosphere.Prelude as Prelude
import Stratosphere.Property
import {-# SOURCE #-} Stratosphere.AutoScalingPlans.ScalingPlan.ApplicationSourceProperty as Exports
import {-# SOURCE #-} Stratosphere.AutoScalingPlans.ScalingPlan.ScalingInstructionProperty as Exports
import Stratosphere.ResourceProperties
data ScalingPlan
  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscalingplans-scalingplan.html>
    ScalingPlan {ScalingPlan -> ()
haddock_workaround_ :: (),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscalingplans-scalingplan.html#cfn-autoscalingplans-scalingplan-applicationsource>
                 ScalingPlan -> ApplicationSourceProperty
applicationSource :: ApplicationSourceProperty,
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscalingplans-scalingplan.html#cfn-autoscalingplans-scalingplan-scalinginstructions>
                 ScalingPlan -> [ScalingInstructionProperty]
scalingInstructions :: [ScalingInstructionProperty]}
  deriving stock (ScalingPlan -> ScalingPlan -> Bool
(ScalingPlan -> ScalingPlan -> Bool)
-> (ScalingPlan -> ScalingPlan -> Bool) -> Eq ScalingPlan
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ScalingPlan -> ScalingPlan -> Bool
== :: ScalingPlan -> ScalingPlan -> Bool
$c/= :: ScalingPlan -> ScalingPlan -> Bool
/= :: ScalingPlan -> ScalingPlan -> Bool
Prelude.Eq, Int -> ScalingPlan -> ShowS
[ScalingPlan] -> ShowS
ScalingPlan -> String
(Int -> ScalingPlan -> ShowS)
-> (ScalingPlan -> String)
-> ([ScalingPlan] -> ShowS)
-> Show ScalingPlan
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ScalingPlan -> ShowS
showsPrec :: Int -> ScalingPlan -> ShowS
$cshow :: ScalingPlan -> String
show :: ScalingPlan -> String
$cshowList :: [ScalingPlan] -> ShowS
showList :: [ScalingPlan] -> ShowS
Prelude.Show)
mkScalingPlan ::
  ApplicationSourceProperty
  -> [ScalingInstructionProperty] -> ScalingPlan
mkScalingPlan :: ApplicationSourceProperty
-> [ScalingInstructionProperty] -> ScalingPlan
mkScalingPlan ApplicationSourceProperty
applicationSource [ScalingInstructionProperty]
scalingInstructions
  = ScalingPlan
      {haddock_workaround_ :: ()
haddock_workaround_ = (), applicationSource :: ApplicationSourceProperty
applicationSource = ApplicationSourceProperty
applicationSource,
       scalingInstructions :: [ScalingInstructionProperty]
scalingInstructions = [ScalingInstructionProperty]
scalingInstructions}
instance ToResourceProperties ScalingPlan where
  toResourceProperties :: ScalingPlan -> ResourceProperties
toResourceProperties ScalingPlan {[ScalingInstructionProperty]
()
ApplicationSourceProperty
haddock_workaround_ :: ScalingPlan -> ()
applicationSource :: ScalingPlan -> ApplicationSourceProperty
scalingInstructions :: ScalingPlan -> [ScalingInstructionProperty]
haddock_workaround_ :: ()
applicationSource :: ApplicationSourceProperty
scalingInstructions :: [ScalingInstructionProperty]
..}
    = ResourceProperties
        {awsType :: Text
awsType = Text
"AWS::AutoScalingPlans::ScalingPlan",
         supportsTags :: Bool
supportsTags = Bool
Prelude.False,
         properties :: Object
properties = [Key
"ApplicationSource" Key -> ApplicationSourceProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
JSON..= ApplicationSourceProperty
applicationSource,
                       Key
"ScalingInstructions" Key -> [ScalingInstructionProperty] -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
JSON..= [ScalingInstructionProperty]
scalingInstructions]}
instance JSON.ToJSON ScalingPlan where
  toJSON :: ScalingPlan -> Value
toJSON ScalingPlan {[ScalingInstructionProperty]
()
ApplicationSourceProperty
haddock_workaround_ :: ScalingPlan -> ()
applicationSource :: ScalingPlan -> ApplicationSourceProperty
scalingInstructions :: ScalingPlan -> [ScalingInstructionProperty]
haddock_workaround_ :: ()
applicationSource :: ApplicationSourceProperty
scalingInstructions :: [ScalingInstructionProperty]
..}
    = [(Key, Value)] -> Value
JSON.object
        [Key
"ApplicationSource" Key -> ApplicationSourceProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
JSON..= ApplicationSourceProperty
applicationSource,
         Key
"ScalingInstructions" Key -> [ScalingInstructionProperty] -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
JSON..= [ScalingInstructionProperty]
scalingInstructions]
instance Property "ApplicationSource" ScalingPlan where
  type PropertyType "ApplicationSource" ScalingPlan = ApplicationSourceProperty
  set :: PropertyType "ApplicationSource" ScalingPlan
-> ScalingPlan -> ScalingPlan
set PropertyType "ApplicationSource" ScalingPlan
newValue ScalingPlan {[ScalingInstructionProperty]
()
ApplicationSourceProperty
haddock_workaround_ :: ScalingPlan -> ()
applicationSource :: ScalingPlan -> ApplicationSourceProperty
scalingInstructions :: ScalingPlan -> [ScalingInstructionProperty]
haddock_workaround_ :: ()
applicationSource :: ApplicationSourceProperty
scalingInstructions :: [ScalingInstructionProperty]
..}
    = ScalingPlan {applicationSource :: ApplicationSourceProperty
applicationSource = PropertyType "ApplicationSource" ScalingPlan
ApplicationSourceProperty
newValue, [ScalingInstructionProperty]
()
haddock_workaround_ :: ()
scalingInstructions :: [ScalingInstructionProperty]
haddock_workaround_ :: ()
scalingInstructions :: [ScalingInstructionProperty]
..}
instance Property "ScalingInstructions" ScalingPlan where
  type PropertyType "ScalingInstructions" ScalingPlan = [ScalingInstructionProperty]
  set :: PropertyType "ScalingInstructions" ScalingPlan
-> ScalingPlan -> ScalingPlan
set PropertyType "ScalingInstructions" ScalingPlan
newValue ScalingPlan {[ScalingInstructionProperty]
()
ApplicationSourceProperty
haddock_workaround_ :: ScalingPlan -> ()
applicationSource :: ScalingPlan -> ApplicationSourceProperty
scalingInstructions :: ScalingPlan -> [ScalingInstructionProperty]
haddock_workaround_ :: ()
applicationSource :: ApplicationSourceProperty
scalingInstructions :: [ScalingInstructionProperty]
..}
    = ScalingPlan {scalingInstructions :: [ScalingInstructionProperty]
scalingInstructions = [ScalingInstructionProperty]
PropertyType "ScalingInstructions" ScalingPlan
newValue, ()
ApplicationSourceProperty
haddock_workaround_ :: ()
applicationSource :: ApplicationSourceProperty
haddock_workaround_ :: ()
applicationSource :: ApplicationSourceProperty
..}