{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TupleSections #-} -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-volume.html module Stratosphere.Resources.OpsWorksVolume where import Stratosphere.ResourceImports -- | Full data type definition for OpsWorksVolume. See 'opsWorksVolume' for a -- more convenient constructor. data OpsWorksVolume = OpsWorksVolume { _opsWorksVolumeEc2VolumeId :: Val Text , _opsWorksVolumeMountPoint :: Maybe (Val Text) , _opsWorksVolumeName :: Maybe (Val Text) , _opsWorksVolumeStackId :: Val Text } deriving (Show, Eq) instance ToJSON OpsWorksVolume where toJSON OpsWorksVolume{..} = object $ catMaybes [ (Just . ("Ec2VolumeId",) . toJSON) _opsWorksVolumeEc2VolumeId , fmap (("MountPoint",) . toJSON) _opsWorksVolumeMountPoint , fmap (("Name",) . toJSON) _opsWorksVolumeName , (Just . ("StackId",) . toJSON) _opsWorksVolumeStackId ] instance FromJSON OpsWorksVolume where parseJSON (Object obj) = OpsWorksVolume <$> (obj .: "Ec2VolumeId") <*> (obj .:? "MountPoint") <*> (obj .:? "Name") <*> (obj .: "StackId") parseJSON _ = mempty -- | Constructor for 'OpsWorksVolume' containing required fields as arguments. opsWorksVolume :: Val Text -- ^ 'owvEc2VolumeId' -> Val Text -- ^ 'owvStackId' -> OpsWorksVolume opsWorksVolume ec2VolumeIdarg stackIdarg = OpsWorksVolume { _opsWorksVolumeEc2VolumeId = ec2VolumeIdarg , _opsWorksVolumeMountPoint = Nothing , _opsWorksVolumeName = Nothing , _opsWorksVolumeStackId = stackIdarg } -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-volume.html#cfn-opsworks-volume-ec2volumeid owvEc2VolumeId :: Lens' OpsWorksVolume (Val Text) owvEc2VolumeId = lens _opsWorksVolumeEc2VolumeId (\s a -> s { _opsWorksVolumeEc2VolumeId = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-volume.html#cfn-opsworks-volume-mountpoint owvMountPoint :: Lens' OpsWorksVolume (Maybe (Val Text)) owvMountPoint = lens _opsWorksVolumeMountPoint (\s a -> s { _opsWorksVolumeMountPoint = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-volume.html#cfn-opsworks-volume-name owvName :: Lens' OpsWorksVolume (Maybe (Val Text)) owvName = lens _opsWorksVolumeName (\s a -> s { _opsWorksVolumeName = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-volume.html#cfn-opsworks-volume-stackid owvStackId :: Lens' OpsWorksVolume (Val Text) owvStackId = lens _opsWorksVolumeStackId (\s a -> s { _opsWorksVolumeStackId = a })