{-# 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.OpsWorks.UpdateApp -- Copyright : (c) 2013-2016 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Updates a specified app. -- -- __Required Permissions__: To use this action, an IAM user must have a Deploy or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see . module Network.AWS.OpsWorks.UpdateApp ( -- * Creating a Request updateApp , UpdateApp -- * Request Lenses , uaSSLConfiguration , uaEnvironment , uaEnableSSL , uaDataSources , uaAppSource , uaAttributes , uaName , uaType , uaDomains , uaDescription , uaAppId -- * Destructuring the Response , updateAppResponse , UpdateAppResponse ) where import Network.AWS.Lens import Network.AWS.OpsWorks.Types import Network.AWS.OpsWorks.Types.Product import Network.AWS.Prelude import Network.AWS.Request import Network.AWS.Response -- | /See:/ 'updateApp' smart constructor. data UpdateApp = UpdateApp' { _uaSSLConfiguration :: !(Maybe SSLConfiguration) , _uaEnvironment :: !(Maybe [EnvironmentVariable]) , _uaEnableSSL :: !(Maybe Bool) , _uaDataSources :: !(Maybe [DataSource]) , _uaAppSource :: !(Maybe Source) , _uaAttributes :: !(Maybe (Map AppAttributesKeys Text)) , _uaName :: !(Maybe Text) , _uaType :: !(Maybe AppType) , _uaDomains :: !(Maybe [Text]) , _uaDescription :: !(Maybe Text) , _uaAppId :: !Text } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'UpdateApp' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'uaSSLConfiguration' -- -- * 'uaEnvironment' -- -- * 'uaEnableSSL' -- -- * 'uaDataSources' -- -- * 'uaAppSource' -- -- * 'uaAttributes' -- -- * 'uaName' -- -- * 'uaType' -- -- * 'uaDomains' -- -- * 'uaDescription' -- -- * 'uaAppId' updateApp :: Text -- ^ 'uaAppId' -> UpdateApp updateApp pAppId_ = UpdateApp' { _uaSSLConfiguration = Nothing , _uaEnvironment = Nothing , _uaEnableSSL = Nothing , _uaDataSources = Nothing , _uaAppSource = Nothing , _uaAttributes = Nothing , _uaName = Nothing , _uaType = Nothing , _uaDomains = Nothing , _uaDescription = Nothing , _uaAppId = pAppId_ } -- | An 'SslConfiguration' object with the SSL configuration. uaSSLConfiguration :: Lens' UpdateApp (Maybe SSLConfiguration) uaSSLConfiguration = lens _uaSSLConfiguration (\ s a -> s{_uaSSLConfiguration = a}); -- | An array of 'EnvironmentVariable' objects that specify environment variables to be associated with the app. After you deploy the app, these variables are defined on the associated app server instances.For more information, see . -- -- There is no specific limit on the number of environment variables. However, the size of the associated data structure - which includes the variables\' names, values, and protected flag values - cannot exceed 10 KB (10240 Bytes). This limit should accommodate most if not all use cases. Exceeding it will cause an exception with the message, \"Environment: is too large (maximum is 10KB).\" -- -- This parameter is supported only by Chef 11.10 stacks. If you have specified one or more environment variables, you cannot modify the stack\'s Chef version. uaEnvironment :: Lens' UpdateApp [EnvironmentVariable] uaEnvironment = lens _uaEnvironment (\ s a -> s{_uaEnvironment = a}) . _Default . _Coerce; -- | Whether SSL is enabled for the app. uaEnableSSL :: Lens' UpdateApp (Maybe Bool) uaEnableSSL = lens _uaEnableSSL (\ s a -> s{_uaEnableSSL = a}); -- | The app\'s data sources. uaDataSources :: Lens' UpdateApp [DataSource] uaDataSources = lens _uaDataSources (\ s a -> s{_uaDataSources = a}) . _Default . _Coerce; -- | A 'Source' object that specifies the app repository. uaAppSource :: Lens' UpdateApp (Maybe Source) uaAppSource = lens _uaAppSource (\ s a -> s{_uaAppSource = a}); -- | One or more user-defined key\/value pairs to be added to the stack attributes. uaAttributes :: Lens' UpdateApp (HashMap AppAttributesKeys Text) uaAttributes = lens _uaAttributes (\ s a -> s{_uaAttributes = a}) . _Default . _Map; -- | The app name. uaName :: Lens' UpdateApp (Maybe Text) uaName = lens _uaName (\ s a -> s{_uaName = a}); -- | The app type. uaType :: Lens' UpdateApp (Maybe AppType) uaType = lens _uaType (\ s a -> s{_uaType = a}); -- | The app\'s virtual host settings, with multiple domains separated by commas. For example: '\'www.example.com, example.com\'' uaDomains :: Lens' UpdateApp [Text] uaDomains = lens _uaDomains (\ s a -> s{_uaDomains = a}) . _Default . _Coerce; -- | A description of the app. uaDescription :: Lens' UpdateApp (Maybe Text) uaDescription = lens _uaDescription (\ s a -> s{_uaDescription = a}); -- | The app ID. uaAppId :: Lens' UpdateApp Text uaAppId = lens _uaAppId (\ s a -> s{_uaAppId = a}); instance AWSRequest UpdateApp where type Rs UpdateApp = UpdateAppResponse request = postJSON opsWorks response = receiveNull UpdateAppResponse' instance Hashable UpdateApp instance NFData UpdateApp instance ToHeaders UpdateApp where toHeaders = const (mconcat ["X-Amz-Target" =# ("OpsWorks_20130218.UpdateApp" :: ByteString), "Content-Type" =# ("application/x-amz-json-1.1" :: ByteString)]) instance ToJSON UpdateApp where toJSON UpdateApp'{..} = object (catMaybes [("SslConfiguration" .=) <$> _uaSSLConfiguration, ("Environment" .=) <$> _uaEnvironment, ("EnableSsl" .=) <$> _uaEnableSSL, ("DataSources" .=) <$> _uaDataSources, ("AppSource" .=) <$> _uaAppSource, ("Attributes" .=) <$> _uaAttributes, ("Name" .=) <$> _uaName, ("Type" .=) <$> _uaType, ("Domains" .=) <$> _uaDomains, ("Description" .=) <$> _uaDescription, Just ("AppId" .= _uaAppId)]) instance ToPath UpdateApp where toPath = const "/" instance ToQuery UpdateApp where toQuery = const mempty -- | /See:/ 'updateAppResponse' smart constructor. data UpdateAppResponse = UpdateAppResponse' deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'UpdateAppResponse' with the minimum fields required to make a request. -- updateAppResponse :: UpdateAppResponse updateAppResponse = UpdateAppResponse' instance NFData UpdateAppResponse