{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TupleSections #-} -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-containerproperties.html module Stratosphere.ResourceProperties.BatchJobDefinitionContainerProperties where import Stratosphere.ResourceImports import Stratosphere.ResourceProperties.BatchJobDefinitionEnvironment import Stratosphere.ResourceProperties.BatchJobDefinitionMountPoints import Stratosphere.ResourceProperties.BatchJobDefinitionUlimit import Stratosphere.ResourceProperties.BatchJobDefinitionVolumes -- | Full data type definition for BatchJobDefinitionContainerProperties. See -- 'batchJobDefinitionContainerProperties' for a more convenient -- constructor. data BatchJobDefinitionContainerProperties = BatchJobDefinitionContainerProperties { _batchJobDefinitionContainerPropertiesCommand :: Maybe (ValList Text) , _batchJobDefinitionContainerPropertiesEnvironment :: Maybe [BatchJobDefinitionEnvironment] , _batchJobDefinitionContainerPropertiesImage :: Val Text , _batchJobDefinitionContainerPropertiesJobRoleArn :: Maybe (Val Text) , _batchJobDefinitionContainerPropertiesMemory :: Val Integer , _batchJobDefinitionContainerPropertiesMountPoints :: Maybe [BatchJobDefinitionMountPoints] , _batchJobDefinitionContainerPropertiesPrivileged :: Maybe (Val Bool) , _batchJobDefinitionContainerPropertiesReadonlyRootFilesystem :: Maybe (Val Bool) , _batchJobDefinitionContainerPropertiesUlimits :: Maybe [BatchJobDefinitionUlimit] , _batchJobDefinitionContainerPropertiesUser :: Maybe (Val Text) , _batchJobDefinitionContainerPropertiesVcpus :: Val Integer , _batchJobDefinitionContainerPropertiesVolumes :: Maybe [BatchJobDefinitionVolumes] } deriving (Show, Eq) instance ToJSON BatchJobDefinitionContainerProperties where toJSON BatchJobDefinitionContainerProperties{..} = object $ catMaybes [ fmap (("Command",) . toJSON) _batchJobDefinitionContainerPropertiesCommand , fmap (("Environment",) . toJSON) _batchJobDefinitionContainerPropertiesEnvironment , (Just . ("Image",) . toJSON) _batchJobDefinitionContainerPropertiesImage , fmap (("JobRoleArn",) . toJSON) _batchJobDefinitionContainerPropertiesJobRoleArn , (Just . ("Memory",) . toJSON . fmap Integer') _batchJobDefinitionContainerPropertiesMemory , fmap (("MountPoints",) . toJSON) _batchJobDefinitionContainerPropertiesMountPoints , fmap (("Privileged",) . toJSON . fmap Bool') _batchJobDefinitionContainerPropertiesPrivileged , fmap (("ReadonlyRootFilesystem",) . toJSON . fmap Bool') _batchJobDefinitionContainerPropertiesReadonlyRootFilesystem , fmap (("Ulimits",) . toJSON) _batchJobDefinitionContainerPropertiesUlimits , fmap (("User",) . toJSON) _batchJobDefinitionContainerPropertiesUser , (Just . ("Vcpus",) . toJSON . fmap Integer') _batchJobDefinitionContainerPropertiesVcpus , fmap (("Volumes",) . toJSON) _batchJobDefinitionContainerPropertiesVolumes ] instance FromJSON BatchJobDefinitionContainerProperties where parseJSON (Object obj) = BatchJobDefinitionContainerProperties <$> (obj .:? "Command") <*> (obj .:? "Environment") <*> (obj .: "Image") <*> (obj .:? "JobRoleArn") <*> fmap (fmap unInteger') (obj .: "Memory") <*> (obj .:? "MountPoints") <*> fmap (fmap (fmap unBool')) (obj .:? "Privileged") <*> fmap (fmap (fmap unBool')) (obj .:? "ReadonlyRootFilesystem") <*> (obj .:? "Ulimits") <*> (obj .:? "User") <*> fmap (fmap unInteger') (obj .: "Vcpus") <*> (obj .:? "Volumes") parseJSON _ = mempty -- | Constructor for 'BatchJobDefinitionContainerProperties' containing -- required fields as arguments. batchJobDefinitionContainerProperties :: Val Text -- ^ 'bjdcpImage' -> Val Integer -- ^ 'bjdcpMemory' -> Val Integer -- ^ 'bjdcpVcpus' -> BatchJobDefinitionContainerProperties batchJobDefinitionContainerProperties imagearg memoryarg vcpusarg = BatchJobDefinitionContainerProperties { _batchJobDefinitionContainerPropertiesCommand = Nothing , _batchJobDefinitionContainerPropertiesEnvironment = Nothing , _batchJobDefinitionContainerPropertiesImage = imagearg , _batchJobDefinitionContainerPropertiesJobRoleArn = Nothing , _batchJobDefinitionContainerPropertiesMemory = memoryarg , _batchJobDefinitionContainerPropertiesMountPoints = Nothing , _batchJobDefinitionContainerPropertiesPrivileged = Nothing , _batchJobDefinitionContainerPropertiesReadonlyRootFilesystem = Nothing , _batchJobDefinitionContainerPropertiesUlimits = Nothing , _batchJobDefinitionContainerPropertiesUser = Nothing , _batchJobDefinitionContainerPropertiesVcpus = vcpusarg , _batchJobDefinitionContainerPropertiesVolumes = Nothing } -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-containerproperties.html#cfn-batch-jobdefinition-containerproperties-command bjdcpCommand :: Lens' BatchJobDefinitionContainerProperties (Maybe (ValList Text)) bjdcpCommand = lens _batchJobDefinitionContainerPropertiesCommand (\s a -> s { _batchJobDefinitionContainerPropertiesCommand = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-containerproperties.html#cfn-batch-jobdefinition-containerproperties-environment bjdcpEnvironment :: Lens' BatchJobDefinitionContainerProperties (Maybe [BatchJobDefinitionEnvironment]) bjdcpEnvironment = lens _batchJobDefinitionContainerPropertiesEnvironment (\s a -> s { _batchJobDefinitionContainerPropertiesEnvironment = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-containerproperties.html#cfn-batch-jobdefinition-containerproperties-image bjdcpImage :: Lens' BatchJobDefinitionContainerProperties (Val Text) bjdcpImage = lens _batchJobDefinitionContainerPropertiesImage (\s a -> s { _batchJobDefinitionContainerPropertiesImage = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-containerproperties.html#cfn-batch-jobdefinition-containerproperties-jobrolearn bjdcpJobRoleArn :: Lens' BatchJobDefinitionContainerProperties (Maybe (Val Text)) bjdcpJobRoleArn = lens _batchJobDefinitionContainerPropertiesJobRoleArn (\s a -> s { _batchJobDefinitionContainerPropertiesJobRoleArn = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-containerproperties.html#cfn-batch-jobdefinition-containerproperties-memory bjdcpMemory :: Lens' BatchJobDefinitionContainerProperties (Val Integer) bjdcpMemory = lens _batchJobDefinitionContainerPropertiesMemory (\s a -> s { _batchJobDefinitionContainerPropertiesMemory = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-containerproperties.html#cfn-batch-jobdefinition-containerproperties-mountpoints bjdcpMountPoints :: Lens' BatchJobDefinitionContainerProperties (Maybe [BatchJobDefinitionMountPoints]) bjdcpMountPoints = lens _batchJobDefinitionContainerPropertiesMountPoints (\s a -> s { _batchJobDefinitionContainerPropertiesMountPoints = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-containerproperties.html#cfn-batch-jobdefinition-containerproperties-privileged bjdcpPrivileged :: Lens' BatchJobDefinitionContainerProperties (Maybe (Val Bool)) bjdcpPrivileged = lens _batchJobDefinitionContainerPropertiesPrivileged (\s a -> s { _batchJobDefinitionContainerPropertiesPrivileged = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-containerproperties.html#cfn-batch-jobdefinition-containerproperties-readonlyrootfilesystem bjdcpReadonlyRootFilesystem :: Lens' BatchJobDefinitionContainerProperties (Maybe (Val Bool)) bjdcpReadonlyRootFilesystem = lens _batchJobDefinitionContainerPropertiesReadonlyRootFilesystem (\s a -> s { _batchJobDefinitionContainerPropertiesReadonlyRootFilesystem = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-containerproperties.html#cfn-batch-jobdefinition-containerproperties-ulimits bjdcpUlimits :: Lens' BatchJobDefinitionContainerProperties (Maybe [BatchJobDefinitionUlimit]) bjdcpUlimits = lens _batchJobDefinitionContainerPropertiesUlimits (\s a -> s { _batchJobDefinitionContainerPropertiesUlimits = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-containerproperties.html#cfn-batch-jobdefinition-containerproperties-user bjdcpUser :: Lens' BatchJobDefinitionContainerProperties (Maybe (Val Text)) bjdcpUser = lens _batchJobDefinitionContainerPropertiesUser (\s a -> s { _batchJobDefinitionContainerPropertiesUser = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-containerproperties.html#cfn-batch-jobdefinition-containerproperties-vcpus bjdcpVcpus :: Lens' BatchJobDefinitionContainerProperties (Val Integer) bjdcpVcpus = lens _batchJobDefinitionContainerPropertiesVcpus (\s a -> s { _batchJobDefinitionContainerPropertiesVcpus = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-containerproperties.html#cfn-batch-jobdefinition-containerproperties-volumes bjdcpVolumes :: Lens' BatchJobDefinitionContainerProperties (Maybe [BatchJobDefinitionVolumes]) bjdcpVolumes = lens _batchJobDefinitionContainerPropertiesVolumes (\s a -> s { _batchJobDefinitionContainerPropertiesVolumes = a })