stratosphere-0.4.4: library-gen/Stratosphere/ResourceProperties/EMRInstanceFleetConfigSpotProvisioningSpecification.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-spotprovisioningspecification.html
module Stratosphere.ResourceProperties.EMRInstanceFleetConfigSpotProvisioningSpecification where
import Control.Lens hiding ((.=))
import Data.Aeson
import Data.Maybe (catMaybes)
import Data.Monoid (mempty)
import Data.Text
import Stratosphere.Values
-- | Full data type definition for
-- EMRInstanceFleetConfigSpotProvisioningSpecification. See
-- 'emrInstanceFleetConfigSpotProvisioningSpecification' for a more
-- convenient constructor.
data EMRInstanceFleetConfigSpotProvisioningSpecification =
EMRInstanceFleetConfigSpotProvisioningSpecification
{ _eMRInstanceFleetConfigSpotProvisioningSpecificationBlockDurationMinutes :: Maybe (Val Integer')
, _eMRInstanceFleetConfigSpotProvisioningSpecificationTimeoutAction :: Val Text
, _eMRInstanceFleetConfigSpotProvisioningSpecificationTimeoutDurationMinutes :: Val Integer'
} deriving (Show, Eq)
instance ToJSON EMRInstanceFleetConfigSpotProvisioningSpecification where
toJSON EMRInstanceFleetConfigSpotProvisioningSpecification{..} =
object $
catMaybes
[ ("BlockDurationMinutes" .=) <$> _eMRInstanceFleetConfigSpotProvisioningSpecificationBlockDurationMinutes
, Just ("TimeoutAction" .= _eMRInstanceFleetConfigSpotProvisioningSpecificationTimeoutAction)
, Just ("TimeoutDurationMinutes" .= _eMRInstanceFleetConfigSpotProvisioningSpecificationTimeoutDurationMinutes)
]
instance FromJSON EMRInstanceFleetConfigSpotProvisioningSpecification where
parseJSON (Object obj) =
EMRInstanceFleetConfigSpotProvisioningSpecification <$>
obj .:? "BlockDurationMinutes" <*>
obj .: "TimeoutAction" <*>
obj .: "TimeoutDurationMinutes"
parseJSON _ = mempty
-- | Constructor for 'EMRInstanceFleetConfigSpotProvisioningSpecification'
-- containing required fields as arguments.
emrInstanceFleetConfigSpotProvisioningSpecification
:: Val Text -- ^ 'emrifcspsTimeoutAction'
-> Val Integer' -- ^ 'emrifcspsTimeoutDurationMinutes'
-> EMRInstanceFleetConfigSpotProvisioningSpecification
emrInstanceFleetConfigSpotProvisioningSpecification timeoutActionarg timeoutDurationMinutesarg =
EMRInstanceFleetConfigSpotProvisioningSpecification
{ _eMRInstanceFleetConfigSpotProvisioningSpecificationBlockDurationMinutes = Nothing
, _eMRInstanceFleetConfigSpotProvisioningSpecificationTimeoutAction = timeoutActionarg
, _eMRInstanceFleetConfigSpotProvisioningSpecificationTimeoutDurationMinutes = timeoutDurationMinutesarg
}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-spotprovisioningspecification.html#cfn-elasticmapreduce-instancefleetconfig-spotprovisioningspecification-blockdurationminutes
emrifcspsBlockDurationMinutes :: Lens' EMRInstanceFleetConfigSpotProvisioningSpecification (Maybe (Val Integer'))
emrifcspsBlockDurationMinutes = lens _eMRInstanceFleetConfigSpotProvisioningSpecificationBlockDurationMinutes (\s a -> s { _eMRInstanceFleetConfigSpotProvisioningSpecificationBlockDurationMinutes = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-spotprovisioningspecification.html#cfn-elasticmapreduce-instancefleetconfig-spotprovisioningspecification-timeoutaction
emrifcspsTimeoutAction :: Lens' EMRInstanceFleetConfigSpotProvisioningSpecification (Val Text)
emrifcspsTimeoutAction = lens _eMRInstanceFleetConfigSpotProvisioningSpecificationTimeoutAction (\s a -> s { _eMRInstanceFleetConfigSpotProvisioningSpecificationTimeoutAction = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-spotprovisioningspecification.html#cfn-elasticmapreduce-instancefleetconfig-spotprovisioningspecification-timeoutdurationminutes
emrifcspsTimeoutDurationMinutes :: Lens' EMRInstanceFleetConfigSpotProvisioningSpecification (Val Integer')
emrifcspsTimeoutDurationMinutes = lens _eMRInstanceFleetConfigSpotProvisioningSpecificationTimeoutDurationMinutes (\s a -> s { _eMRInstanceFleetConfigSpotProvisioningSpecificationTimeoutDurationMinutes = a })