packages feed

stratosphere-0.56.0: library-gen/Stratosphere/Resources/ImageBuilderImage.hs

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

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

module Stratosphere.Resources.ImageBuilderImage where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.ImageBuilderImageImageTestsConfiguration

-- | Full data type definition for ImageBuilderImage. See 'imageBuilderImage'
-- for a more convenient constructor.
data ImageBuilderImage =
  ImageBuilderImage
  { _imageBuilderImageDistributionConfigurationArn :: Maybe (Val Text)
  , _imageBuilderImageEnhancedImageMetadataEnabled :: Maybe (Val Bool)
  , _imageBuilderImageImageRecipeArn :: Val Text
  , _imageBuilderImageImageTestsConfiguration :: Maybe ImageBuilderImageImageTestsConfiguration
  , _imageBuilderImageInfrastructureConfigurationArn :: Val Text
  , _imageBuilderImageTags :: Maybe Object
  } deriving (Show, Eq)

instance ToResourceProperties ImageBuilderImage where
  toResourceProperties ImageBuilderImage{..} =
    ResourceProperties
    { resourcePropertiesType = "AWS::ImageBuilder::Image"
    , resourcePropertiesProperties =
        hashMapFromList $ catMaybes
        [ fmap (("DistributionConfigurationArn",) . toJSON) _imageBuilderImageDistributionConfigurationArn
        , fmap (("EnhancedImageMetadataEnabled",) . toJSON) _imageBuilderImageEnhancedImageMetadataEnabled
        , (Just . ("ImageRecipeArn",) . toJSON) _imageBuilderImageImageRecipeArn
        , fmap (("ImageTestsConfiguration",) . toJSON) _imageBuilderImageImageTestsConfiguration
        , (Just . ("InfrastructureConfigurationArn",) . toJSON) _imageBuilderImageInfrastructureConfigurationArn
        , fmap (("Tags",) . toJSON) _imageBuilderImageTags
        ]
    }

-- | Constructor for 'ImageBuilderImage' containing required fields as
-- arguments.
imageBuilderImage
  :: Val Text -- ^ 'ibiImageRecipeArn'
  -> Val Text -- ^ 'ibiInfrastructureConfigurationArn'
  -> ImageBuilderImage
imageBuilderImage imageRecipeArnarg infrastructureConfigurationArnarg =
  ImageBuilderImage
  { _imageBuilderImageDistributionConfigurationArn = Nothing
  , _imageBuilderImageEnhancedImageMetadataEnabled = Nothing
  , _imageBuilderImageImageRecipeArn = imageRecipeArnarg
  , _imageBuilderImageImageTestsConfiguration = Nothing
  , _imageBuilderImageInfrastructureConfigurationArn = infrastructureConfigurationArnarg
  , _imageBuilderImageTags = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-image.html#cfn-imagebuilder-image-distributionconfigurationarn
ibiDistributionConfigurationArn :: Lens' ImageBuilderImage (Maybe (Val Text))
ibiDistributionConfigurationArn = lens _imageBuilderImageDistributionConfigurationArn (\s a -> s { _imageBuilderImageDistributionConfigurationArn = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-image.html#cfn-imagebuilder-image-enhancedimagemetadataenabled
ibiEnhancedImageMetadataEnabled :: Lens' ImageBuilderImage (Maybe (Val Bool))
ibiEnhancedImageMetadataEnabled = lens _imageBuilderImageEnhancedImageMetadataEnabled (\s a -> s { _imageBuilderImageEnhancedImageMetadataEnabled = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-image.html#cfn-imagebuilder-image-imagerecipearn
ibiImageRecipeArn :: Lens' ImageBuilderImage (Val Text)
ibiImageRecipeArn = lens _imageBuilderImageImageRecipeArn (\s a -> s { _imageBuilderImageImageRecipeArn = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-image.html#cfn-imagebuilder-image-imagetestsconfiguration
ibiImageTestsConfiguration :: Lens' ImageBuilderImage (Maybe ImageBuilderImageImageTestsConfiguration)
ibiImageTestsConfiguration = lens _imageBuilderImageImageTestsConfiguration (\s a -> s { _imageBuilderImageImageTestsConfiguration = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-image.html#cfn-imagebuilder-image-infrastructureconfigurationarn
ibiInfrastructureConfigurationArn :: Lens' ImageBuilderImage (Val Text)
ibiInfrastructureConfigurationArn = lens _imageBuilderImageInfrastructureConfigurationArn (\s a -> s { _imageBuilderImageInfrastructureConfigurationArn = a })

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