packages feed

stratosphere-0.33.0: library-gen/Stratosphere/Resources/AppStreamImageBuilder.hs

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

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

module Stratosphere.Resources.AppStreamImageBuilder where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.AppStreamImageBuilderDomainJoinInfo
import Stratosphere.ResourceProperties.AppStreamImageBuilderVpcConfig

-- | Full data type definition for AppStreamImageBuilder. See
-- 'appStreamImageBuilder' for a more convenient constructor.
data AppStreamImageBuilder =
  AppStreamImageBuilder
  { _appStreamImageBuilderAppstreamAgentVersion :: Maybe (Val Text)
  , _appStreamImageBuilderDescription :: Maybe (Val Text)
  , _appStreamImageBuilderDisplayName :: Maybe (Val Text)
  , _appStreamImageBuilderDomainJoinInfo :: Maybe AppStreamImageBuilderDomainJoinInfo
  , _appStreamImageBuilderEnableDefaultInternetAccess :: Maybe (Val Bool)
  , _appStreamImageBuilderImageArn :: Maybe (Val Text)
  , _appStreamImageBuilderImageName :: Maybe (Val Text)
  , _appStreamImageBuilderInstanceType :: Val Text
  , _appStreamImageBuilderName :: Maybe (Val Text)
  , _appStreamImageBuilderVpcConfig :: Maybe AppStreamImageBuilderVpcConfig
  } deriving (Show, Eq)

instance ToResourceProperties AppStreamImageBuilder where
  toResourceProperties AppStreamImageBuilder{..} =
    ResourceProperties
    { resourcePropertiesType = "AWS::AppStream::ImageBuilder"
    , resourcePropertiesProperties =
        hashMapFromList $ catMaybes
        [ fmap (("AppstreamAgentVersion",) . toJSON) _appStreamImageBuilderAppstreamAgentVersion
        , fmap (("Description",) . toJSON) _appStreamImageBuilderDescription
        , fmap (("DisplayName",) . toJSON) _appStreamImageBuilderDisplayName
        , fmap (("DomainJoinInfo",) . toJSON) _appStreamImageBuilderDomainJoinInfo
        , fmap (("EnableDefaultInternetAccess",) . toJSON . fmap Bool') _appStreamImageBuilderEnableDefaultInternetAccess
        , fmap (("ImageArn",) . toJSON) _appStreamImageBuilderImageArn
        , fmap (("ImageName",) . toJSON) _appStreamImageBuilderImageName
        , (Just . ("InstanceType",) . toJSON) _appStreamImageBuilderInstanceType
        , fmap (("Name",) . toJSON) _appStreamImageBuilderName
        , fmap (("VpcConfig",) . toJSON) _appStreamImageBuilderVpcConfig
        ]
    }

-- | Constructor for 'AppStreamImageBuilder' containing required fields as
-- arguments.
appStreamImageBuilder
  :: Val Text -- ^ 'asibInstanceType'
  -> AppStreamImageBuilder
appStreamImageBuilder instanceTypearg =
  AppStreamImageBuilder
  { _appStreamImageBuilderAppstreamAgentVersion = Nothing
  , _appStreamImageBuilderDescription = Nothing
  , _appStreamImageBuilderDisplayName = Nothing
  , _appStreamImageBuilderDomainJoinInfo = Nothing
  , _appStreamImageBuilderEnableDefaultInternetAccess = Nothing
  , _appStreamImageBuilderImageArn = Nothing
  , _appStreamImageBuilderImageName = Nothing
  , _appStreamImageBuilderInstanceType = instanceTypearg
  , _appStreamImageBuilderName = Nothing
  , _appStreamImageBuilderVpcConfig = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-imagebuilder.html#cfn-appstream-imagebuilder-appstreamagentversion
asibAppstreamAgentVersion :: Lens' AppStreamImageBuilder (Maybe (Val Text))
asibAppstreamAgentVersion = lens _appStreamImageBuilderAppstreamAgentVersion (\s a -> s { _appStreamImageBuilderAppstreamAgentVersion = a })

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-imagebuilder.html#cfn-appstream-imagebuilder-displayname
asibDisplayName :: Lens' AppStreamImageBuilder (Maybe (Val Text))
asibDisplayName = lens _appStreamImageBuilderDisplayName (\s a -> s { _appStreamImageBuilderDisplayName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-imagebuilder.html#cfn-appstream-imagebuilder-domainjoininfo
asibDomainJoinInfo :: Lens' AppStreamImageBuilder (Maybe AppStreamImageBuilderDomainJoinInfo)
asibDomainJoinInfo = lens _appStreamImageBuilderDomainJoinInfo (\s a -> s { _appStreamImageBuilderDomainJoinInfo = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-imagebuilder.html#cfn-appstream-imagebuilder-enabledefaultinternetaccess
asibEnableDefaultInternetAccess :: Lens' AppStreamImageBuilder (Maybe (Val Bool))
asibEnableDefaultInternetAccess = lens _appStreamImageBuilderEnableDefaultInternetAccess (\s a -> s { _appStreamImageBuilderEnableDefaultInternetAccess = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-imagebuilder.html#cfn-appstream-imagebuilder-imagearn
asibImageArn :: Lens' AppStreamImageBuilder (Maybe (Val Text))
asibImageArn = lens _appStreamImageBuilderImageArn (\s a -> s { _appStreamImageBuilderImageArn = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-imagebuilder.html#cfn-appstream-imagebuilder-imagename
asibImageName :: Lens' AppStreamImageBuilder (Maybe (Val Text))
asibImageName = lens _appStreamImageBuilderImageName (\s a -> s { _appStreamImageBuilderImageName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-imagebuilder.html#cfn-appstream-imagebuilder-instancetype
asibInstanceType :: Lens' AppStreamImageBuilder (Val Text)
asibInstanceType = lens _appStreamImageBuilderInstanceType (\s a -> s { _appStreamImageBuilderInstanceType = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-imagebuilder.html#cfn-appstream-imagebuilder-name
asibName :: Lens' AppStreamImageBuilder (Maybe (Val Text))
asibName = lens _appStreamImageBuilderName (\s a -> s { _appStreamImageBuilderName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appstream-imagebuilder.html#cfn-appstream-imagebuilder-vpcconfig
asibVpcConfig :: Lens' AppStreamImageBuilder (Maybe AppStreamImageBuilderVpcConfig)
asibVpcConfig = lens _appStreamImageBuilderVpcConfig (\s a -> s { _appStreamImageBuilderVpcConfig = a })