stratosphere-0.15.2: library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceFleetConfig.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TupleSections #-}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancefleetconfig.html
module Stratosphere.ResourceProperties.EMRClusterInstanceFleetConfig where
import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.EMRClusterInstanceTypeConfig
import Stratosphere.ResourceProperties.EMRClusterInstanceFleetProvisioningSpecifications
-- | Full data type definition for EMRClusterInstanceFleetConfig. See
-- 'emrClusterInstanceFleetConfig' for a more convenient constructor.
data EMRClusterInstanceFleetConfig =
EMRClusterInstanceFleetConfig
{ _eMRClusterInstanceFleetConfigInstanceTypeConfigs :: Maybe [EMRClusterInstanceTypeConfig]
, _eMRClusterInstanceFleetConfigLaunchSpecifications :: Maybe EMRClusterInstanceFleetProvisioningSpecifications
, _eMRClusterInstanceFleetConfigName :: Maybe (Val Text)
, _eMRClusterInstanceFleetConfigTargetOnDemandCapacity :: Maybe (Val Integer)
, _eMRClusterInstanceFleetConfigTargetSpotCapacity :: Maybe (Val Integer)
} deriving (Show, Eq)
instance ToJSON EMRClusterInstanceFleetConfig where
toJSON EMRClusterInstanceFleetConfig{..} =
object $
catMaybes
[ fmap (("InstanceTypeConfigs",) . toJSON) _eMRClusterInstanceFleetConfigInstanceTypeConfigs
, fmap (("LaunchSpecifications",) . toJSON) _eMRClusterInstanceFleetConfigLaunchSpecifications
, fmap (("Name",) . toJSON) _eMRClusterInstanceFleetConfigName
, fmap (("TargetOnDemandCapacity",) . toJSON . fmap Integer') _eMRClusterInstanceFleetConfigTargetOnDemandCapacity
, fmap (("TargetSpotCapacity",) . toJSON . fmap Integer') _eMRClusterInstanceFleetConfigTargetSpotCapacity
]
instance FromJSON EMRClusterInstanceFleetConfig where
parseJSON (Object obj) =
EMRClusterInstanceFleetConfig <$>
(obj .:? "InstanceTypeConfigs") <*>
(obj .:? "LaunchSpecifications") <*>
(obj .:? "Name") <*>
fmap (fmap (fmap unInteger')) (obj .:? "TargetOnDemandCapacity") <*>
fmap (fmap (fmap unInteger')) (obj .:? "TargetSpotCapacity")
parseJSON _ = mempty
-- | Constructor for 'EMRClusterInstanceFleetConfig' containing required
-- fields as arguments.
emrClusterInstanceFleetConfig
:: EMRClusterInstanceFleetConfig
emrClusterInstanceFleetConfig =
EMRClusterInstanceFleetConfig
{ _eMRClusterInstanceFleetConfigInstanceTypeConfigs = Nothing
, _eMRClusterInstanceFleetConfigLaunchSpecifications = Nothing
, _eMRClusterInstanceFleetConfigName = Nothing
, _eMRClusterInstanceFleetConfigTargetOnDemandCapacity = Nothing
, _eMRClusterInstanceFleetConfigTargetSpotCapacity = Nothing
}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancefleetconfig.html#cfn-elasticmapreduce-cluster-instancefleetconfig-instancetypeconfigs
emrcifcInstanceTypeConfigs :: Lens' EMRClusterInstanceFleetConfig (Maybe [EMRClusterInstanceTypeConfig])
emrcifcInstanceTypeConfigs = lens _eMRClusterInstanceFleetConfigInstanceTypeConfigs (\s a -> s { _eMRClusterInstanceFleetConfigInstanceTypeConfigs = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancefleetconfig.html#cfn-elasticmapreduce-cluster-instancefleetconfig-launchspecifications
emrcifcLaunchSpecifications :: Lens' EMRClusterInstanceFleetConfig (Maybe EMRClusterInstanceFleetProvisioningSpecifications)
emrcifcLaunchSpecifications = lens _eMRClusterInstanceFleetConfigLaunchSpecifications (\s a -> s { _eMRClusterInstanceFleetConfigLaunchSpecifications = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancefleetconfig.html#cfn-elasticmapreduce-cluster-instancefleetconfig-name
emrcifcName :: Lens' EMRClusterInstanceFleetConfig (Maybe (Val Text))
emrcifcName = lens _eMRClusterInstanceFleetConfigName (\s a -> s { _eMRClusterInstanceFleetConfigName = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancefleetconfig.html#cfn-elasticmapreduce-cluster-instancefleetconfig-targetondemandcapacity
emrcifcTargetOnDemandCapacity :: Lens' EMRClusterInstanceFleetConfig (Maybe (Val Integer))
emrcifcTargetOnDemandCapacity = lens _eMRClusterInstanceFleetConfigTargetOnDemandCapacity (\s a -> s { _eMRClusterInstanceFleetConfigTargetOnDemandCapacity = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancefleetconfig.html#cfn-elasticmapreduce-cluster-instancefleetconfig-targetspotcapacity
emrcifcTargetSpotCapacity :: Lens' EMRClusterInstanceFleetConfig (Maybe (Val Integer))
emrcifcTargetSpotCapacity = lens _eMRClusterInstanceFleetConfigTargetSpotCapacity (\s a -> s { _eMRClusterInstanceFleetConfigTargetSpotCapacity = a })