module Stratosphere.IoT.JobTemplate.ExponentialRolloutRateProperty (
        module Exports, ExponentialRolloutRateProperty(..),
        mkExponentialRolloutRateProperty
    ) where
import qualified Data.Aeson as JSON
import qualified Stratosphere.Prelude as Prelude
import Stratosphere.Property
import {-# SOURCE #-} Stratosphere.IoT.JobTemplate.RateIncreaseCriteriaProperty as Exports
import Stratosphere.ResourceProperties
import Stratosphere.Value
data ExponentialRolloutRateProperty
  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-jobtemplate-exponentialrolloutrate.html>
    ExponentialRolloutRateProperty {ExponentialRolloutRateProperty -> ()
haddock_workaround_ :: (),
                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-jobtemplate-exponentialrolloutrate.html#cfn-iot-jobtemplate-exponentialrolloutrate-baserateperminute>
                                    ExponentialRolloutRateProperty -> Value Integer
baseRatePerMinute :: (Value Prelude.Integer),
                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-jobtemplate-exponentialrolloutrate.html#cfn-iot-jobtemplate-exponentialrolloutrate-incrementfactor>
                                    ExponentialRolloutRateProperty -> Value Double
incrementFactor :: (Value Prelude.Double),
                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-jobtemplate-exponentialrolloutrate.html#cfn-iot-jobtemplate-exponentialrolloutrate-rateincreasecriteria>
                                    ExponentialRolloutRateProperty -> RateIncreaseCriteriaProperty
rateIncreaseCriteria :: RateIncreaseCriteriaProperty}
  deriving stock (ExponentialRolloutRateProperty
-> ExponentialRolloutRateProperty -> Bool
(ExponentialRolloutRateProperty
 -> ExponentialRolloutRateProperty -> Bool)
-> (ExponentialRolloutRateProperty
    -> ExponentialRolloutRateProperty -> Bool)
-> Eq ExponentialRolloutRateProperty
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ExponentialRolloutRateProperty
-> ExponentialRolloutRateProperty -> Bool
== :: ExponentialRolloutRateProperty
-> ExponentialRolloutRateProperty -> Bool
$c/= :: ExponentialRolloutRateProperty
-> ExponentialRolloutRateProperty -> Bool
/= :: ExponentialRolloutRateProperty
-> ExponentialRolloutRateProperty -> Bool
Prelude.Eq, Int -> ExponentialRolloutRateProperty -> ShowS
[ExponentialRolloutRateProperty] -> ShowS
ExponentialRolloutRateProperty -> String
(Int -> ExponentialRolloutRateProperty -> ShowS)
-> (ExponentialRolloutRateProperty -> String)
-> ([ExponentialRolloutRateProperty] -> ShowS)
-> Show ExponentialRolloutRateProperty
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ExponentialRolloutRateProperty -> ShowS
showsPrec :: Int -> ExponentialRolloutRateProperty -> ShowS
$cshow :: ExponentialRolloutRateProperty -> String
show :: ExponentialRolloutRateProperty -> String
$cshowList :: [ExponentialRolloutRateProperty] -> ShowS
showList :: [ExponentialRolloutRateProperty] -> ShowS
Prelude.Show)
mkExponentialRolloutRateProperty ::
  Value Prelude.Integer
  -> Value Prelude.Double
     -> RateIncreaseCriteriaProperty -> ExponentialRolloutRateProperty
mkExponentialRolloutRateProperty :: Value Integer
-> Value Double
-> RateIncreaseCriteriaProperty
-> ExponentialRolloutRateProperty
mkExponentialRolloutRateProperty
  Value Integer
baseRatePerMinute
  Value Double
incrementFactor
  RateIncreaseCriteriaProperty
rateIncreaseCriteria
  = ExponentialRolloutRateProperty
      {haddock_workaround_ :: ()
haddock_workaround_ = (), baseRatePerMinute :: Value Integer
baseRatePerMinute = Value Integer
baseRatePerMinute,
       incrementFactor :: Value Double
incrementFactor = Value Double
incrementFactor,
       rateIncreaseCriteria :: RateIncreaseCriteriaProperty
rateIncreaseCriteria = RateIncreaseCriteriaProperty
rateIncreaseCriteria}
instance ToResourceProperties ExponentialRolloutRateProperty where
  toResourceProperties :: ExponentialRolloutRateProperty -> ResourceProperties
toResourceProperties ExponentialRolloutRateProperty {()
Value Double
Value Integer
RateIncreaseCriteriaProperty
haddock_workaround_ :: ExponentialRolloutRateProperty -> ()
baseRatePerMinute :: ExponentialRolloutRateProperty -> Value Integer
incrementFactor :: ExponentialRolloutRateProperty -> Value Double
rateIncreaseCriteria :: ExponentialRolloutRateProperty -> RateIncreaseCriteriaProperty
haddock_workaround_ :: ()
baseRatePerMinute :: Value Integer
incrementFactor :: Value Double
rateIncreaseCriteria :: RateIncreaseCriteriaProperty
..}
    = ResourceProperties
        {awsType :: Text
awsType = Text
"AWS::IoT::JobTemplate.ExponentialRolloutRate",
         supportsTags :: Bool
supportsTags = Bool
Prelude.False,
         properties :: Object
properties = [Key
"BaseRatePerMinute" Key -> Value Integer -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
JSON..= Value Integer
baseRatePerMinute,
                       Key
"IncrementFactor" Key -> Value Double -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
JSON..= Value Double
incrementFactor,
                       Key
"RateIncreaseCriteria" Key -> RateIncreaseCriteriaProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
JSON..= RateIncreaseCriteriaProperty
rateIncreaseCriteria]}
instance JSON.ToJSON ExponentialRolloutRateProperty where
  toJSON :: ExponentialRolloutRateProperty -> Value
toJSON ExponentialRolloutRateProperty {()
Value Double
Value Integer
RateIncreaseCriteriaProperty
haddock_workaround_ :: ExponentialRolloutRateProperty -> ()
baseRatePerMinute :: ExponentialRolloutRateProperty -> Value Integer
incrementFactor :: ExponentialRolloutRateProperty -> Value Double
rateIncreaseCriteria :: ExponentialRolloutRateProperty -> RateIncreaseCriteriaProperty
haddock_workaround_ :: ()
baseRatePerMinute :: Value Integer
incrementFactor :: Value Double
rateIncreaseCriteria :: RateIncreaseCriteriaProperty
..}
    = [(Key, Value)] -> Value
JSON.object
        [Key
"BaseRatePerMinute" Key -> Value Integer -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
JSON..= Value Integer
baseRatePerMinute,
         Key
"IncrementFactor" Key -> Value Double -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
JSON..= Value Double
incrementFactor,
         Key
"RateIncreaseCriteria" Key -> RateIncreaseCriteriaProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
JSON..= RateIncreaseCriteriaProperty
rateIncreaseCriteria]
instance Property "BaseRatePerMinute" ExponentialRolloutRateProperty where
  type PropertyType "BaseRatePerMinute" ExponentialRolloutRateProperty = Value Prelude.Integer
  set :: PropertyType "BaseRatePerMinute" ExponentialRolloutRateProperty
-> ExponentialRolloutRateProperty -> ExponentialRolloutRateProperty
set PropertyType "BaseRatePerMinute" ExponentialRolloutRateProperty
newValue ExponentialRolloutRateProperty {()
Value Double
Value Integer
RateIncreaseCriteriaProperty
haddock_workaround_ :: ExponentialRolloutRateProperty -> ()
baseRatePerMinute :: ExponentialRolloutRateProperty -> Value Integer
incrementFactor :: ExponentialRolloutRateProperty -> Value Double
rateIncreaseCriteria :: ExponentialRolloutRateProperty -> RateIncreaseCriteriaProperty
haddock_workaround_ :: ()
baseRatePerMinute :: Value Integer
incrementFactor :: Value Double
rateIncreaseCriteria :: RateIncreaseCriteriaProperty
..}
    = ExponentialRolloutRateProperty {baseRatePerMinute :: Value Integer
baseRatePerMinute = PropertyType "BaseRatePerMinute" ExponentialRolloutRateProperty
Value Integer
newValue, ()
Value Double
RateIncreaseCriteriaProperty
haddock_workaround_ :: ()
incrementFactor :: Value Double
rateIncreaseCriteria :: RateIncreaseCriteriaProperty
haddock_workaround_ :: ()
incrementFactor :: Value Double
rateIncreaseCriteria :: RateIncreaseCriteriaProperty
..}
instance Property "IncrementFactor" ExponentialRolloutRateProperty where
  type PropertyType "IncrementFactor" ExponentialRolloutRateProperty = Value Prelude.Double
  set :: PropertyType "IncrementFactor" ExponentialRolloutRateProperty
-> ExponentialRolloutRateProperty -> ExponentialRolloutRateProperty
set PropertyType "IncrementFactor" ExponentialRolloutRateProperty
newValue ExponentialRolloutRateProperty {()
Value Double
Value Integer
RateIncreaseCriteriaProperty
haddock_workaround_ :: ExponentialRolloutRateProperty -> ()
baseRatePerMinute :: ExponentialRolloutRateProperty -> Value Integer
incrementFactor :: ExponentialRolloutRateProperty -> Value Double
rateIncreaseCriteria :: ExponentialRolloutRateProperty -> RateIncreaseCriteriaProperty
haddock_workaround_ :: ()
baseRatePerMinute :: Value Integer
incrementFactor :: Value Double
rateIncreaseCriteria :: RateIncreaseCriteriaProperty
..}
    = ExponentialRolloutRateProperty {incrementFactor :: Value Double
incrementFactor = PropertyType "IncrementFactor" ExponentialRolloutRateProperty
Value Double
newValue, ()
Value Integer
RateIncreaseCriteriaProperty
haddock_workaround_ :: ()
baseRatePerMinute :: Value Integer
rateIncreaseCriteria :: RateIncreaseCriteriaProperty
haddock_workaround_ :: ()
baseRatePerMinute :: Value Integer
rateIncreaseCriteria :: RateIncreaseCriteriaProperty
..}
instance Property "RateIncreaseCriteria" ExponentialRolloutRateProperty where
  type PropertyType "RateIncreaseCriteria" ExponentialRolloutRateProperty = RateIncreaseCriteriaProperty
  set :: PropertyType "RateIncreaseCriteria" ExponentialRolloutRateProperty
-> ExponentialRolloutRateProperty -> ExponentialRolloutRateProperty
set PropertyType "RateIncreaseCriteria" ExponentialRolloutRateProperty
newValue ExponentialRolloutRateProperty {()
Value Double
Value Integer
RateIncreaseCriteriaProperty
haddock_workaround_ :: ExponentialRolloutRateProperty -> ()
baseRatePerMinute :: ExponentialRolloutRateProperty -> Value Integer
incrementFactor :: ExponentialRolloutRateProperty -> Value Double
rateIncreaseCriteria :: ExponentialRolloutRateProperty -> RateIncreaseCriteriaProperty
haddock_workaround_ :: ()
baseRatePerMinute :: Value Integer
incrementFactor :: Value Double
rateIncreaseCriteria :: RateIncreaseCriteriaProperty
..}
    = ExponentialRolloutRateProperty
        {rateIncreaseCriteria :: RateIncreaseCriteriaProperty
rateIncreaseCriteria = PropertyType "RateIncreaseCriteria" ExponentialRolloutRateProperty
RateIncreaseCriteriaProperty
newValue, ()
Value Double
Value Integer
haddock_workaround_ :: ()
baseRatePerMinute :: Value Integer
incrementFactor :: Value Double
haddock_workaround_ :: ()
baseRatePerMinute :: Value Integer
incrementFactor :: Value Double
..}