amazonka-appstream-1.6.0: gen/Network/AWS/AppStream/CreateImageBuilder.hs
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-- Derived from AWS service descriptions, licensed under Apache 2.0.
-- |
-- Module : Network.AWS.AppStream.CreateImageBuilder
-- Copyright : (c) 2013-2018 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Creates an image builder.
--
--
-- The initial state of the builder is @PENDING@ . When it is ready, the state is @RUNNING@ .
--
module Network.AWS.AppStream.CreateImageBuilder
(
-- * Creating a Request
createImageBuilder
, CreateImageBuilder
-- * Request Lenses
, cibDomainJoinInfo
, cibVPCConfig
, cibDisplayName
, cibEnableDefaultInternetAccess
, cibDescription
, cibAppstreamAgentVersion
, cibName
, cibImageName
, cibInstanceType
-- * Destructuring the Response
, createImageBuilderResponse
, CreateImageBuilderResponse
-- * Response Lenses
, cibrsImageBuilder
, cibrsResponseStatus
) where
import Network.AWS.AppStream.Types
import Network.AWS.AppStream.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
-- | /See:/ 'createImageBuilder' smart constructor.
data CreateImageBuilder = CreateImageBuilder'
{ _cibDomainJoinInfo :: !(Maybe DomainJoinInfo)
, _cibVPCConfig :: !(Maybe VPCConfig)
, _cibDisplayName :: !(Maybe Text)
, _cibEnableDefaultInternetAccess :: !(Maybe Bool)
, _cibDescription :: !(Maybe Text)
, _cibAppstreamAgentVersion :: !(Maybe Text)
, _cibName :: !Text
, _cibImageName :: !Text
, _cibInstanceType :: !Text
} deriving (Eq, Read, Show, Data, Typeable, Generic)
-- | Creates a value of 'CreateImageBuilder' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'cibDomainJoinInfo' - The information needed to join a Microsoft Active Directory domain.
--
-- * 'cibVPCConfig' - The VPC configuration for the image builder. You can specify only one subnet.
--
-- * 'cibDisplayName' - The image builder name for display.
--
-- * 'cibEnableDefaultInternetAccess' - Enables or disables default internet access for the image builder.
--
-- * 'cibDescription' - The description for display.
--
-- * 'cibAppstreamAgentVersion' - The version of the AppStream 2.0 agent to use for this image builder. To use the latest version of the AppStream 2.0 agent, specify [LATEST].
--
-- * 'cibName' - A unique name for the image builder.
--
-- * 'cibImageName' - The name of the image used to create the builder.
--
-- * 'cibInstanceType' - The instance type to use when launching the image builder.
createImageBuilder
:: Text -- ^ 'cibName'
-> Text -- ^ 'cibImageName'
-> Text -- ^ 'cibInstanceType'
-> CreateImageBuilder
createImageBuilder pName_ pImageName_ pInstanceType_ =
CreateImageBuilder'
{ _cibDomainJoinInfo = Nothing
, _cibVPCConfig = Nothing
, _cibDisplayName = Nothing
, _cibEnableDefaultInternetAccess = Nothing
, _cibDescription = Nothing
, _cibAppstreamAgentVersion = Nothing
, _cibName = pName_
, _cibImageName = pImageName_
, _cibInstanceType = pInstanceType_
}
-- | The information needed to join a Microsoft Active Directory domain.
cibDomainJoinInfo :: Lens' CreateImageBuilder (Maybe DomainJoinInfo)
cibDomainJoinInfo = lens _cibDomainJoinInfo (\ s a -> s{_cibDomainJoinInfo = a})
-- | The VPC configuration for the image builder. You can specify only one subnet.
cibVPCConfig :: Lens' CreateImageBuilder (Maybe VPCConfig)
cibVPCConfig = lens _cibVPCConfig (\ s a -> s{_cibVPCConfig = a})
-- | The image builder name for display.
cibDisplayName :: Lens' CreateImageBuilder (Maybe Text)
cibDisplayName = lens _cibDisplayName (\ s a -> s{_cibDisplayName = a})
-- | Enables or disables default internet access for the image builder.
cibEnableDefaultInternetAccess :: Lens' CreateImageBuilder (Maybe Bool)
cibEnableDefaultInternetAccess = lens _cibEnableDefaultInternetAccess (\ s a -> s{_cibEnableDefaultInternetAccess = a})
-- | The description for display.
cibDescription :: Lens' CreateImageBuilder (Maybe Text)
cibDescription = lens _cibDescription (\ s a -> s{_cibDescription = a})
-- | The version of the AppStream 2.0 agent to use for this image builder. To use the latest version of the AppStream 2.0 agent, specify [LATEST].
cibAppstreamAgentVersion :: Lens' CreateImageBuilder (Maybe Text)
cibAppstreamAgentVersion = lens _cibAppstreamAgentVersion (\ s a -> s{_cibAppstreamAgentVersion = a})
-- | A unique name for the image builder.
cibName :: Lens' CreateImageBuilder Text
cibName = lens _cibName (\ s a -> s{_cibName = a})
-- | The name of the image used to create the builder.
cibImageName :: Lens' CreateImageBuilder Text
cibImageName = lens _cibImageName (\ s a -> s{_cibImageName = a})
-- | The instance type to use when launching the image builder.
cibInstanceType :: Lens' CreateImageBuilder Text
cibInstanceType = lens _cibInstanceType (\ s a -> s{_cibInstanceType = a})
instance AWSRequest CreateImageBuilder where
type Rs CreateImageBuilder =
CreateImageBuilderResponse
request = postJSON appStream
response
= receiveJSON
(\ s h x ->
CreateImageBuilderResponse' <$>
(x .?> "ImageBuilder") <*> (pure (fromEnum s)))
instance Hashable CreateImageBuilder where
instance NFData CreateImageBuilder where
instance ToHeaders CreateImageBuilder where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("PhotonAdminProxyService.CreateImageBuilder" ::
ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON CreateImageBuilder where
toJSON CreateImageBuilder'{..}
= object
(catMaybes
[("DomainJoinInfo" .=) <$> _cibDomainJoinInfo,
("VpcConfig" .=) <$> _cibVPCConfig,
("DisplayName" .=) <$> _cibDisplayName,
("EnableDefaultInternetAccess" .=) <$>
_cibEnableDefaultInternetAccess,
("Description" .=) <$> _cibDescription,
("AppstreamAgentVersion" .=) <$>
_cibAppstreamAgentVersion,
Just ("Name" .= _cibName),
Just ("ImageName" .= _cibImageName),
Just ("InstanceType" .= _cibInstanceType)])
instance ToPath CreateImageBuilder where
toPath = const "/"
instance ToQuery CreateImageBuilder where
toQuery = const mempty
-- | /See:/ 'createImageBuilderResponse' smart constructor.
data CreateImageBuilderResponse = CreateImageBuilderResponse'
{ _cibrsImageBuilder :: !(Maybe ImageBuilder)
, _cibrsResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
-- | Creates a value of 'CreateImageBuilderResponse' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'cibrsImageBuilder' - Information about the image builder.
--
-- * 'cibrsResponseStatus' - -- | The response status code.
createImageBuilderResponse
:: Int -- ^ 'cibrsResponseStatus'
-> CreateImageBuilderResponse
createImageBuilderResponse pResponseStatus_ =
CreateImageBuilderResponse'
{_cibrsImageBuilder = Nothing, _cibrsResponseStatus = pResponseStatus_}
-- | Information about the image builder.
cibrsImageBuilder :: Lens' CreateImageBuilderResponse (Maybe ImageBuilder)
cibrsImageBuilder = lens _cibrsImageBuilder (\ s a -> s{_cibrsImageBuilder = a})
-- | -- | The response status code.
cibrsResponseStatus :: Lens' CreateImageBuilderResponse Int
cibrsResponseStatus = lens _cibrsResponseStatus (\ s a -> s{_cibrsResponseStatus = a})
instance NFData CreateImageBuilderResponse where