stratosphere-0.15.2: library-gen/Stratosphere/ResourceProperties/EMRClusterSpotProvisioningSpecification.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TupleSections #-}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-spotprovisioningspecification.html
module Stratosphere.ResourceProperties.EMRClusterSpotProvisioningSpecification where
import Stratosphere.ResourceImports
-- | Full data type definition for EMRClusterSpotProvisioningSpecification.
-- See 'emrClusterSpotProvisioningSpecification' for a more convenient
-- constructor.
data EMRClusterSpotProvisioningSpecification =
EMRClusterSpotProvisioningSpecification
{ _eMRClusterSpotProvisioningSpecificationBlockDurationMinutes :: Maybe (Val Integer)
, _eMRClusterSpotProvisioningSpecificationTimeoutAction :: Val Text
, _eMRClusterSpotProvisioningSpecificationTimeoutDurationMinutes :: Val Integer
} deriving (Show, Eq)
instance ToJSON EMRClusterSpotProvisioningSpecification where
toJSON EMRClusterSpotProvisioningSpecification{..} =
object $
catMaybes
[ fmap (("BlockDurationMinutes",) . toJSON . fmap Integer') _eMRClusterSpotProvisioningSpecificationBlockDurationMinutes
, (Just . ("TimeoutAction",) . toJSON) _eMRClusterSpotProvisioningSpecificationTimeoutAction
, (Just . ("TimeoutDurationMinutes",) . toJSON . fmap Integer') _eMRClusterSpotProvisioningSpecificationTimeoutDurationMinutes
]
instance FromJSON EMRClusterSpotProvisioningSpecification where
parseJSON (Object obj) =
EMRClusterSpotProvisioningSpecification <$>
fmap (fmap (fmap unInteger')) (obj .:? "BlockDurationMinutes") <*>
(obj .: "TimeoutAction") <*>
fmap (fmap unInteger') (obj .: "TimeoutDurationMinutes")
parseJSON _ = mempty
-- | Constructor for 'EMRClusterSpotProvisioningSpecification' containing
-- required fields as arguments.
emrClusterSpotProvisioningSpecification
:: Val Text -- ^ 'emrcspsTimeoutAction'
-> Val Integer -- ^ 'emrcspsTimeoutDurationMinutes'
-> EMRClusterSpotProvisioningSpecification
emrClusterSpotProvisioningSpecification timeoutActionarg timeoutDurationMinutesarg =
EMRClusterSpotProvisioningSpecification
{ _eMRClusterSpotProvisioningSpecificationBlockDurationMinutes = Nothing
, _eMRClusterSpotProvisioningSpecificationTimeoutAction = timeoutActionarg
, _eMRClusterSpotProvisioningSpecificationTimeoutDurationMinutes = timeoutDurationMinutesarg
}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-spotprovisioningspecification.html#cfn-elasticmapreduce-cluster-spotprovisioningspecification-blockdurationminutes
emrcspsBlockDurationMinutes :: Lens' EMRClusterSpotProvisioningSpecification (Maybe (Val Integer))
emrcspsBlockDurationMinutes = lens _eMRClusterSpotProvisioningSpecificationBlockDurationMinutes (\s a -> s { _eMRClusterSpotProvisioningSpecificationBlockDurationMinutes = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-spotprovisioningspecification.html#cfn-elasticmapreduce-cluster-spotprovisioningspecification-timeoutaction
emrcspsTimeoutAction :: Lens' EMRClusterSpotProvisioningSpecification (Val Text)
emrcspsTimeoutAction = lens _eMRClusterSpotProvisioningSpecificationTimeoutAction (\s a -> s { _eMRClusterSpotProvisioningSpecificationTimeoutAction = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-spotprovisioningspecification.html#cfn-elasticmapreduce-cluster-spotprovisioningspecification-timeoutdurationminutes
emrcspsTimeoutDurationMinutes :: Lens' EMRClusterSpotProvisioningSpecification (Val Integer)
emrcspsTimeoutDurationMinutes = lens _eMRClusterSpotProvisioningSpecificationTimeoutDurationMinutes (\s a -> s { _eMRClusterSpotProvisioningSpecificationTimeoutDurationMinutes = a })