{-# 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.CloudFormation.GetTemplateSummary -- Copyright : (c) 2013-2015 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Returns information about a new or existing template. The -- 'GetTemplateSummary' action is useful for viewing parameter information, -- such as default parameter values and parameter types, before you create -- or update a stack. -- -- You can use the 'GetTemplateSummary' action when you submit a template, -- or you can get template information for a running or deleted stack. -- -- For deleted stacks, 'GetTemplateSummary' returns the template -- information for up to 90 days after the stack has been deleted. If the -- template does not exist, a 'ValidationError' is returned. -- -- /See:/ for GetTemplateSummary. module Network.AWS.CloudFormation.GetTemplateSummary ( -- * Creating a Request getTemplateSummary , GetTemplateSummary -- * Request Lenses , gtsTemplateBody , gtsTemplateURL , gtsStackName -- * Destructuring the Response , getTemplateSummaryResponse , GetTemplateSummaryResponse -- * Response Lenses , gtsrsVersion , gtsrsCapabilitiesReason , gtsrsParameters , gtsrsMetadata , gtsrsDescription , gtsrsCapabilities , gtsrsResponseStatus ) where import Network.AWS.CloudFormation.Types import Network.AWS.CloudFormation.Types.Product import Network.AWS.Prelude import Network.AWS.Request import Network.AWS.Response -- | The input for the GetTemplateSummary action. -- -- /See:/ 'getTemplateSummary' smart constructor. data GetTemplateSummary = GetTemplateSummary' { _gtsTemplateBody :: !(Maybe Text) , _gtsTemplateURL :: !(Maybe Text) , _gtsStackName :: !(Maybe Text) } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'GetTemplateSummary' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'gtsTemplateBody' -- -- * 'gtsTemplateURL' -- -- * 'gtsStackName' getTemplateSummary :: GetTemplateSummary getTemplateSummary = GetTemplateSummary' { _gtsTemplateBody = Nothing , _gtsTemplateURL = Nothing , _gtsStackName = Nothing } -- | Structure containing the template body with a minimum length of 1 byte -- and a maximum length of 51,200 bytes. For more information about -- templates, see -- -- in the AWS CloudFormation User Guide. -- -- Conditional: You must specify only one of the following parameters: -- 'StackName', 'TemplateBody', or 'TemplateURL'. gtsTemplateBody :: Lens' GetTemplateSummary (Maybe Text) gtsTemplateBody = lens _gtsTemplateBody (\ s a -> s{_gtsTemplateBody = a}); -- | Location of file containing the template body. The URL must point to a -- template (max size: 460,800 bytes) located in an Amazon S3 bucket. For -- more information about templates, see -- -- in the AWS CloudFormation User Guide. -- -- Conditional: You must specify only one of the following parameters: -- 'StackName', 'TemplateBody', or 'TemplateURL'. gtsTemplateURL :: Lens' GetTemplateSummary (Maybe Text) gtsTemplateURL = lens _gtsTemplateURL (\ s a -> s{_gtsTemplateURL = a}); -- | The name or the stack ID that is associated with the stack, which are -- not always interchangeable. For running stacks, you can specify either -- the stack\'s name or its unique stack ID. For deleted stack, you must -- specify the unique stack ID. -- -- Conditional: You must specify only one of the following parameters: -- 'StackName', 'TemplateBody', or 'TemplateURL'. gtsStackName :: Lens' GetTemplateSummary (Maybe Text) gtsStackName = lens _gtsStackName (\ s a -> s{_gtsStackName = a}); instance AWSRequest GetTemplateSummary where type Rs GetTemplateSummary = GetTemplateSummaryResponse request = postQuery cloudFormation response = receiveXMLWrapper "GetTemplateSummaryResult" (\ s h x -> GetTemplateSummaryResponse' <$> (x .@? "Version") <*> (x .@? "CapabilitiesReason") <*> (x .@? "Parameters" .!@ mempty >>= may (parseXMLList "member")) <*> (x .@? "Metadata") <*> (x .@? "Description") <*> (x .@? "Capabilities" .!@ mempty >>= may (parseXMLList "member")) <*> (pure (fromEnum s))) instance ToHeaders GetTemplateSummary where toHeaders = const mempty instance ToPath GetTemplateSummary where toPath = const "/" instance ToQuery GetTemplateSummary where toQuery GetTemplateSummary'{..} = mconcat ["Action" =: ("GetTemplateSummary" :: ByteString), "Version" =: ("2010-05-15" :: ByteString), "TemplateBody" =: _gtsTemplateBody, "TemplateURL" =: _gtsTemplateURL, "StackName" =: _gtsStackName] -- | The output for the GetTemplateSummary action. -- -- /See:/ 'getTemplateSummaryResponse' smart constructor. data GetTemplateSummaryResponse = GetTemplateSummaryResponse' { _gtsrsVersion :: !(Maybe Text) , _gtsrsCapabilitiesReason :: !(Maybe Text) , _gtsrsParameters :: !(Maybe [ParameterDeclaration]) , _gtsrsMetadata :: !(Maybe Text) , _gtsrsDescription :: !(Maybe Text) , _gtsrsCapabilities :: !(Maybe [Capability]) , _gtsrsResponseStatus :: !Int } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'GetTemplateSummaryResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'gtsrsVersion' -- -- * 'gtsrsCapabilitiesReason' -- -- * 'gtsrsParameters' -- -- * 'gtsrsMetadata' -- -- * 'gtsrsDescription' -- -- * 'gtsrsCapabilities' -- -- * 'gtsrsResponseStatus' getTemplateSummaryResponse :: Int -- ^ 'gtsrsResponseStatus' -> GetTemplateSummaryResponse getTemplateSummaryResponse pResponseStatus_ = GetTemplateSummaryResponse' { _gtsrsVersion = Nothing , _gtsrsCapabilitiesReason = Nothing , _gtsrsParameters = Nothing , _gtsrsMetadata = Nothing , _gtsrsDescription = Nothing , _gtsrsCapabilities = Nothing , _gtsrsResponseStatus = pResponseStatus_ } -- | The AWS template format version, which identifies the capabilities of -- the template. gtsrsVersion :: Lens' GetTemplateSummaryResponse (Maybe Text) gtsrsVersion = lens _gtsrsVersion (\ s a -> s{_gtsrsVersion = a}); -- | The list of resources that generated the values in the 'Capabilities' -- response element. gtsrsCapabilitiesReason :: Lens' GetTemplateSummaryResponse (Maybe Text) gtsrsCapabilitiesReason = lens _gtsrsCapabilitiesReason (\ s a -> s{_gtsrsCapabilitiesReason = a}); -- | A list of parameter declarations that describe various properties for -- each parameter. gtsrsParameters :: Lens' GetTemplateSummaryResponse [ParameterDeclaration] gtsrsParameters = lens _gtsrsParameters (\ s a -> s{_gtsrsParameters = a}) . _Default . _Coerce; -- | The value that is defined for the 'Metadata' property of the template. gtsrsMetadata :: Lens' GetTemplateSummaryResponse (Maybe Text) gtsrsMetadata = lens _gtsrsMetadata (\ s a -> s{_gtsrsMetadata = a}); -- | The value that is defined in the 'Description' property of the template. gtsrsDescription :: Lens' GetTemplateSummaryResponse (Maybe Text) gtsrsDescription = lens _gtsrsDescription (\ s a -> s{_gtsrsDescription = a}); -- | The capabilities found within the template. Currently, AWS -- CloudFormation supports only the CAPABILITY_IAM capability. If your -- template contains IAM resources, you must specify the CAPABILITY_IAM -- value for this parameter when you use the CreateStack or UpdateStack -- actions with your template; otherwise, those actions return an -- InsufficientCapabilities error. gtsrsCapabilities :: Lens' GetTemplateSummaryResponse [Capability] gtsrsCapabilities = lens _gtsrsCapabilities (\ s a -> s{_gtsrsCapabilities = a}) . _Default . _Coerce; -- | The response status code. gtsrsResponseStatus :: Lens' GetTemplateSummaryResponse Int gtsrsResponseStatus = lens _gtsrsResponseStatus (\ s a -> s{_gtsrsResponseStatus = a});