packages feed

stratosphere-0.60.0: library-gen/Stratosphere/Resources/ImageBuilderDistributionConfiguration.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TupleSections #-}

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-distributionconfiguration.html

module Stratosphere.Resources.ImageBuilderDistributionConfiguration where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.ImageBuilderDistributionConfigurationDistribution

-- | Full data type definition for ImageBuilderDistributionConfiguration. See
-- 'imageBuilderDistributionConfiguration' for a more convenient
-- constructor.
data ImageBuilderDistributionConfiguration =
  ImageBuilderDistributionConfiguration
  { _imageBuilderDistributionConfigurationDescription :: Maybe (Val Text)
  , _imageBuilderDistributionConfigurationDistributions :: [ImageBuilderDistributionConfigurationDistribution]
  , _imageBuilderDistributionConfigurationName :: Val Text
  , _imageBuilderDistributionConfigurationTags :: Maybe Object
  } deriving (Show, Eq)

instance ToResourceProperties ImageBuilderDistributionConfiguration where
  toResourceProperties ImageBuilderDistributionConfiguration{..} =
    ResourceProperties
    { resourcePropertiesType = "AWS::ImageBuilder::DistributionConfiguration"
    , resourcePropertiesProperties =
        keyMapFromList $ catMaybes
        [ fmap (("Description",) . toJSON) _imageBuilderDistributionConfigurationDescription
        , (Just . ("Distributions",) . toJSON) _imageBuilderDistributionConfigurationDistributions
        , (Just . ("Name",) . toJSON) _imageBuilderDistributionConfigurationName
        , fmap (("Tags",) . toJSON) _imageBuilderDistributionConfigurationTags
        ]
    }

-- | Constructor for 'ImageBuilderDistributionConfiguration' containing
-- required fields as arguments.
imageBuilderDistributionConfiguration
  :: [ImageBuilderDistributionConfigurationDistribution] -- ^ 'ibdcDistributions'
  -> Val Text -- ^ 'ibdcName'
  -> ImageBuilderDistributionConfiguration
imageBuilderDistributionConfiguration distributionsarg namearg =
  ImageBuilderDistributionConfiguration
  { _imageBuilderDistributionConfigurationDescription = Nothing
  , _imageBuilderDistributionConfigurationDistributions = distributionsarg
  , _imageBuilderDistributionConfigurationName = namearg
  , _imageBuilderDistributionConfigurationTags = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-distributionconfiguration.html#cfn-imagebuilder-distributionconfiguration-description
ibdcDescription :: Lens' ImageBuilderDistributionConfiguration (Maybe (Val Text))
ibdcDescription = lens _imageBuilderDistributionConfigurationDescription (\s a -> s { _imageBuilderDistributionConfigurationDescription = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-distributionconfiguration.html#cfn-imagebuilder-distributionconfiguration-distributions
ibdcDistributions :: Lens' ImageBuilderDistributionConfiguration [ImageBuilderDistributionConfigurationDistribution]
ibdcDistributions = lens _imageBuilderDistributionConfigurationDistributions (\s a -> s { _imageBuilderDistributionConfigurationDistributions = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-distributionconfiguration.html#cfn-imagebuilder-distributionconfiguration-name
ibdcName :: Lens' ImageBuilderDistributionConfiguration (Val Text)
ibdcName = lens _imageBuilderDistributionConfigurationName (\s a -> s { _imageBuilderDistributionConfigurationName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-distributionconfiguration.html#cfn-imagebuilder-distributionconfiguration-tags
ibdcTags :: Lens' ImageBuilderDistributionConfiguration (Maybe Object)
ibdcTags = lens _imageBuilderDistributionConfigurationTags (\s a -> s { _imageBuilderDistributionConfigurationTags = a })