{-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} -- Module : Network.AWS.ElasticBeanstalk.CreateConfigurationTemplate -- Copyright : (c) 2013-2014 Brendan Hay -- License : This Source Code Form is subject to the terms of -- the Mozilla Public License, v. 2.0. -- A copy of the MPL can be found in the LICENSE file or -- you can obtain it at http://mozilla.org/MPL/2.0/. -- Maintainer : Brendan Hay -- Stability : experimental -- Portability : non-portable (GHC extensions) -- -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | Creates a configuration template. Templates are associated with a specific -- application and are used to deploy different versions of the application with -- the same configuration settings. -- -- Related Topics -- -- 'DescribeConfigurationOptions' 'DescribeConfigurationSettings' 'ListAvailableSolutionStacks' -- -- module Network.AWS.ElasticBeanstalk.CreateConfigurationTemplate ( -- * Request CreateConfigurationTemplate -- ** Request constructor , createConfigurationTemplate -- ** Request lenses , cctApplicationName , cctDescription , cctEnvironmentId , cctOptionSettings , cctSolutionStackName , cctSourceConfiguration , cctTemplateName -- * Response , CreateConfigurationTemplateResponse -- ** Response constructor , createConfigurationTemplateResponse -- ** Response lenses , cctrApplicationName , cctrDateCreated , cctrDateUpdated , cctrDeploymentStatus , cctrDescription , cctrEnvironmentName , cctrOptionSettings , cctrSolutionStackName , cctrTemplateName ) where import Network.AWS.Prelude import Network.AWS.Request.Query import Network.AWS.ElasticBeanstalk.Types import qualified GHC.Exts data CreateConfigurationTemplate = CreateConfigurationTemplate { _cctApplicationName :: Text , _cctDescription :: Maybe Text , _cctEnvironmentId :: Maybe Text , _cctOptionSettings :: List "member" ConfigurationOptionSetting , _cctSolutionStackName :: Maybe Text , _cctSourceConfiguration :: Maybe SourceConfiguration , _cctTemplateName :: Text } deriving (Eq, Show) -- | 'CreateConfigurationTemplate' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'cctApplicationName' @::@ 'Text' -- -- * 'cctDescription' @::@ 'Maybe' 'Text' -- -- * 'cctEnvironmentId' @::@ 'Maybe' 'Text' -- -- * 'cctOptionSettings' @::@ ['ConfigurationOptionSetting'] -- -- * 'cctSolutionStackName' @::@ 'Maybe' 'Text' -- -- * 'cctSourceConfiguration' @::@ 'Maybe' 'SourceConfiguration' -- -- * 'cctTemplateName' @::@ 'Text' -- createConfigurationTemplate :: Text -- ^ 'cctApplicationName' -> Text -- ^ 'cctTemplateName' -> CreateConfigurationTemplate createConfigurationTemplate p1 p2 = CreateConfigurationTemplate { _cctApplicationName = p1 , _cctTemplateName = p2 , _cctSolutionStackName = Nothing , _cctSourceConfiguration = Nothing , _cctEnvironmentId = Nothing , _cctDescription = Nothing , _cctOptionSettings = mempty } -- | The name of the application to associate with this configuration template. -- If no application is found with this name, AWS Elastic Beanstalk returns an 'InvalidParameterValue' error. cctApplicationName :: Lens' CreateConfigurationTemplate Text cctApplicationName = lens _cctApplicationName (\s a -> s { _cctApplicationName = a }) -- | Describes this configuration. cctDescription :: Lens' CreateConfigurationTemplate (Maybe Text) cctDescription = lens _cctDescription (\s a -> s { _cctDescription = a }) -- | The ID of the environment used with this configuration template. cctEnvironmentId :: Lens' CreateConfigurationTemplate (Maybe Text) cctEnvironmentId = lens _cctEnvironmentId (\s a -> s { _cctEnvironmentId = a }) -- | If specified, AWS Elastic Beanstalk sets the specified configuration option -- to the requested value. The new value overrides the value obtained from the -- solution stack or the source configuration template. cctOptionSettings :: Lens' CreateConfigurationTemplate [ConfigurationOptionSetting] cctOptionSettings = lens _cctOptionSettings (\s a -> s { _cctOptionSettings = a }) . _List -- | The name of the solution stack used by this configuration. The solution stack -- specifies the operating system, architecture, and application server for a -- configuration template. It determines the set of configuration options as -- well as the possible and default values. -- -- Use 'ListAvailableSolutionStacks' to obtain a list of available solution -- stacks. -- -- A solution stack name or a source configuration parameter must be -- specified, otherwise AWS Elastic Beanstalk returns an 'InvalidParameterValue' -- error. -- -- If a solution stack name is not specified and the source configuration -- parameter is specified, AWS Elastic Beanstalk uses the same solution stack as -- the source configuration template. cctSolutionStackName :: Lens' CreateConfigurationTemplate (Maybe Text) cctSolutionStackName = lens _cctSolutionStackName (\s a -> s { _cctSolutionStackName = a }) -- | If specified, AWS Elastic Beanstalk uses the configuration values from the -- specified configuration template to create a new configuration. -- -- Values specified in the 'OptionSettings' parameter of this call overrides any -- values obtained from the 'SourceConfiguration'. -- -- If no configuration template is found, returns an 'InvalidParameterValue' -- error. -- -- Constraint: If both the solution stack name parameter and the source -- configuration parameters are specified, the solution stack of the source -- configuration template must match the specified solution stack name or else -- AWS Elastic Beanstalk returns an 'InvalidParameterCombination' error. cctSourceConfiguration :: Lens' CreateConfigurationTemplate (Maybe SourceConfiguration) cctSourceConfiguration = lens _cctSourceConfiguration (\s a -> s { _cctSourceConfiguration = a }) -- | The name of the configuration template. -- -- Constraint: This name must be unique per application. -- -- Default: If a configuration template already exists with this name, AWS -- Elastic Beanstalk returns an 'InvalidParameterValue' error. cctTemplateName :: Lens' CreateConfigurationTemplate Text cctTemplateName = lens _cctTemplateName (\s a -> s { _cctTemplateName = a }) data CreateConfigurationTemplateResponse = CreateConfigurationTemplateResponse { _cctrApplicationName :: Maybe Text , _cctrDateCreated :: Maybe ISO8601 , _cctrDateUpdated :: Maybe ISO8601 , _cctrDeploymentStatus :: Maybe ConfigurationDeploymentStatus , _cctrDescription :: Maybe Text , _cctrEnvironmentName :: Maybe Text , _cctrOptionSettings :: List "member" ConfigurationOptionSetting , _cctrSolutionStackName :: Maybe Text , _cctrTemplateName :: Maybe Text } deriving (Eq, Show) -- | 'CreateConfigurationTemplateResponse' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'cctrApplicationName' @::@ 'Maybe' 'Text' -- -- * 'cctrDateCreated' @::@ 'Maybe' 'UTCTime' -- -- * 'cctrDateUpdated' @::@ 'Maybe' 'UTCTime' -- -- * 'cctrDeploymentStatus' @::@ 'Maybe' 'ConfigurationDeploymentStatus' -- -- * 'cctrDescription' @::@ 'Maybe' 'Text' -- -- * 'cctrEnvironmentName' @::@ 'Maybe' 'Text' -- -- * 'cctrOptionSettings' @::@ ['ConfigurationOptionSetting'] -- -- * 'cctrSolutionStackName' @::@ 'Maybe' 'Text' -- -- * 'cctrTemplateName' @::@ 'Maybe' 'Text' -- createConfigurationTemplateResponse :: CreateConfigurationTemplateResponse createConfigurationTemplateResponse = CreateConfigurationTemplateResponse { _cctrSolutionStackName = Nothing , _cctrApplicationName = Nothing , _cctrTemplateName = Nothing , _cctrDescription = Nothing , _cctrEnvironmentName = Nothing , _cctrDeploymentStatus = Nothing , _cctrDateCreated = Nothing , _cctrDateUpdated = Nothing , _cctrOptionSettings = mempty } -- | The name of the application associated with this configuration set. cctrApplicationName :: Lens' CreateConfigurationTemplateResponse (Maybe Text) cctrApplicationName = lens _cctrApplicationName (\s a -> s { _cctrApplicationName = a }) -- | The date (in UTC time) when this configuration set was created. cctrDateCreated :: Lens' CreateConfigurationTemplateResponse (Maybe UTCTime) cctrDateCreated = lens _cctrDateCreated (\s a -> s { _cctrDateCreated = a }) . mapping _Time -- | The date (in UTC time) when this configuration set was last modified. cctrDateUpdated :: Lens' CreateConfigurationTemplateResponse (Maybe UTCTime) cctrDateUpdated = lens _cctrDateUpdated (\s a -> s { _cctrDateUpdated = a }) . mapping _Time -- | If this configuration set is associated with an environment, the 'DeploymentStatus' parameter indicates the deployment status of this configuration set: -- -- 'null': This configuration is not associated with a running environment. -- -- 'pending': This is a draft configuration that is not deployed to the -- associated environment but is in the process of deploying. -- -- 'deployed': This is the configuration that is currently deployed to the -- associated running environment. -- -- 'failed': This is a draft configuration, that failed to successfully -- deploy. -- -- 'null': This configuration is not associated with a running environment. 'pending': This is a draft configuration that is not deployed to the associated -- environment but is in the process of deploying. 'deployed': This is the -- configuration that is currently deployed to the associated running -- environment. 'failed': This is a draft configuration that failed to -- successfully deploy. cctrDeploymentStatus :: Lens' CreateConfigurationTemplateResponse (Maybe ConfigurationDeploymentStatus) cctrDeploymentStatus = lens _cctrDeploymentStatus (\s a -> s { _cctrDeploymentStatus = a }) -- | Describes this configuration set. cctrDescription :: Lens' CreateConfigurationTemplateResponse (Maybe Text) cctrDescription = lens _cctrDescription (\s a -> s { _cctrDescription = a }) -- | If not 'null', the name of the environment for this configuration set. cctrEnvironmentName :: Lens' CreateConfigurationTemplateResponse (Maybe Text) cctrEnvironmentName = lens _cctrEnvironmentName (\s a -> s { _cctrEnvironmentName = a }) -- | A list of the configuration options and their values in this configuration -- set. cctrOptionSettings :: Lens' CreateConfigurationTemplateResponse [ConfigurationOptionSetting] cctrOptionSettings = lens _cctrOptionSettings (\s a -> s { _cctrOptionSettings = a }) . _List -- | The name of the solution stack this configuration set uses. cctrSolutionStackName :: Lens' CreateConfigurationTemplateResponse (Maybe Text) cctrSolutionStackName = lens _cctrSolutionStackName (\s a -> s { _cctrSolutionStackName = a }) -- | If not 'null', the name of the configuration template for this configuration -- set. cctrTemplateName :: Lens' CreateConfigurationTemplateResponse (Maybe Text) cctrTemplateName = lens _cctrTemplateName (\s a -> s { _cctrTemplateName = a }) instance ToPath CreateConfigurationTemplate where toPath = const "/" instance ToQuery CreateConfigurationTemplate where toQuery CreateConfigurationTemplate{..} = mconcat [ "ApplicationName" =? _cctApplicationName , "Description" =? _cctDescription , "EnvironmentId" =? _cctEnvironmentId , "OptionSettings" =? _cctOptionSettings , "SolutionStackName" =? _cctSolutionStackName , "SourceConfiguration" =? _cctSourceConfiguration , "TemplateName" =? _cctTemplateName ] instance ToHeaders CreateConfigurationTemplate instance AWSRequest CreateConfigurationTemplate where type Sv CreateConfigurationTemplate = ElasticBeanstalk type Rs CreateConfigurationTemplate = CreateConfigurationTemplateResponse request = post "CreateConfigurationTemplate" response = xmlResponse instance FromXML CreateConfigurationTemplateResponse where parseXML = withElement "CreateConfigurationTemplateResult" $ \x -> CreateConfigurationTemplateResponse <$> x .@? "ApplicationName" <*> x .@? "DateCreated" <*> x .@? "DateUpdated" <*> x .@? "DeploymentStatus" <*> x .@? "Description" <*> x .@? "EnvironmentName" <*> x .@? "OptionSettings" .!@ mempty <*> x .@? "SolutionStackName" <*> x .@? "TemplateName"