{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TupleSections #-} -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-device.html module Stratosphere.ResourceProperties.ECSTaskDefinitionDevice where import Stratosphere.ResourceImports -- | Full data type definition for ECSTaskDefinitionDevice. See -- 'ecsTaskDefinitionDevice' for a more convenient constructor. data ECSTaskDefinitionDevice = ECSTaskDefinitionDevice { _eCSTaskDefinitionDeviceContainerPath :: Maybe (Val Text) , _eCSTaskDefinitionDeviceHostPath :: Val Text , _eCSTaskDefinitionDevicePermissions :: Maybe (ValList Text) } deriving (Show, Eq) instance ToJSON ECSTaskDefinitionDevice where toJSON ECSTaskDefinitionDevice{..} = object $ catMaybes [ fmap (("ContainerPath",) . toJSON) _eCSTaskDefinitionDeviceContainerPath , (Just . ("HostPath",) . toJSON) _eCSTaskDefinitionDeviceHostPath , fmap (("Permissions",) . toJSON) _eCSTaskDefinitionDevicePermissions ] instance FromJSON ECSTaskDefinitionDevice where parseJSON (Object obj) = ECSTaskDefinitionDevice <$> (obj .:? "ContainerPath") <*> (obj .: "HostPath") <*> (obj .:? "Permissions") parseJSON _ = mempty -- | Constructor for 'ECSTaskDefinitionDevice' containing required fields as -- arguments. ecsTaskDefinitionDevice :: Val Text -- ^ 'ecstddHostPath' -> ECSTaskDefinitionDevice ecsTaskDefinitionDevice hostPatharg = ECSTaskDefinitionDevice { _eCSTaskDefinitionDeviceContainerPath = Nothing , _eCSTaskDefinitionDeviceHostPath = hostPatharg , _eCSTaskDefinitionDevicePermissions = Nothing } -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-device.html#cfn-ecs-taskdefinition-device-containerpath ecstddContainerPath :: Lens' ECSTaskDefinitionDevice (Maybe (Val Text)) ecstddContainerPath = lens _eCSTaskDefinitionDeviceContainerPath (\s a -> s { _eCSTaskDefinitionDeviceContainerPath = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-device.html#cfn-ecs-taskdefinition-device-hostpath ecstddHostPath :: Lens' ECSTaskDefinitionDevice (Val Text) ecstddHostPath = lens _eCSTaskDefinitionDeviceHostPath (\s a -> s { _eCSTaskDefinitionDeviceHostPath = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-device.html#cfn-ecs-taskdefinition-device-permissions ecstddPermissions :: Lens' ECSTaskDefinitionDevice (Maybe (ValList Text)) ecstddPermissions = lens _eCSTaskDefinitionDevicePermissions (\s a -> s { _eCSTaskDefinitionDevicePermissions = a })